Skip to content

fix(sys): Bounds-check event record readers - #744

Merged
rabbitstack merged 1 commit into
masterfrom
fix-etw-event-record-reader-bounds-checks
Oct 25, 2026
Merged

rabbitstack merged 1 commit into
masterfrom
fix-etw-event-record-reader-bounds-checks

Conversation

@rabbitstack

Copy link
Copy Markdown
Owner

What is the purpose of this PR / why it is needed?

The Read* and Consume* helpers on EventRecord validated offsets with offset > BufferLen, which still allows reads that start inside the payload but run past its end, and which is satisfied by offset == BufferLen. Several helpers also did arithmetic on uint16 values that silently wrap. Because the payload is a raw pointer handed over by ETW, every one of these turned into an out-of-bounds read of adjacent memory (information leak or access violation) or a panic that takes the process down.

What type of change does this PR introduce?


Uncomment one or more /kind <> lines:

/kind feature (non-breaking change which adds functionality)

/kind bug-fix (non-breaking change which fixes an issue)

/kind refactor (non-breaking change that restructures the code, while not changing the original functionality)

/kind breaking (fix or feature that would cause existing functionality to not work as expected

/kind cleanup

/kind improvement

/kind design

/kind documentation

/kind other (change that doesn't pertain to any of the above categories)

Any specific area of the project related to this PR?


Uncomment one or more /area <> lines:

/area instrumentation

/area telemetry

/area rule-engine

/area filters

/area yara

/area event

/area captures

/area alertsenders

/area outputs

/area rules

/area filaments

/area config

/area cli

/area tests

/area ci

/area build

/area docs

/area deps

/area evasion

/area other

Special notes for the reviewer


Does this PR introduce a user-facing change?


The Read* and Consume* helpers on EventRecord validated offsets with
`offset > BufferLen`, which still allows reads that start inside the
payload but run past its end, and which is satisfied by
`offset == BufferLen`. Several helpers also did arithmetic on uint16
values that silently wraps. Because the payload is a raw pointer handed
over by ETW, every one of these turned into an out-of-bounds read of
adjacent memory (information leak or access violation) or a panic that
takes the process down.
@rabbitstack
rabbitstack merged commit c3d5b25 into master Oct 25, 2026
10 of 11 checks passed
@rabbitstack
rabbitstack deleted the fix-etw-event-record-reader-bounds-checks branch October 25, 2026 19:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant