Fix AFL++ fuzzing harness input handling & add security workflows - #3556
Fix AFL++ fuzzing harness input handling & add security workflows#3556Easton97-Jens wants to merge 5 commits into
Conversation
|
You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool. What Enabling Code Scanning Means:
For more information about GitHub Code Scanning, check out the documentation. |
Add files via upload Fix AFL fuzzer input handling and null operator check Fix fuzzer API usage for operators and transformations Update fuzzing workflow to use ubuntu-latest Update runtime-sanitizers.yml Update codeql-security.yml
dce564b to
1a7cfc7
Compare
|
|
|
Independently hit this same bug from the other direction — was preparing a patch Why the original line is wrong. Consequence. The harness's input domain is a run of Verified locally on the two constructs side by side (Apple clang 17, Provenance. It went unseen because the harness is gated behind One suggestion, offered as a possible reason this has sat for three months. Splitting the Not a security issue, for the record, so nobody needs to escalate: the |
|
Thank you for the detailed analysis and for independently confirming the bug. I agree that splitting the focused Unfortunately, I do not currently have enough time to prepare and maintain the separate PR, as I am working on several ModSecurity connector projects. If you are willing to open the focused PR, please feel free to do so — I would greatly appreciate your help. You are welcome to reuse or adapt the relevant part of my patch and reference this PR for the background and analysis. I am completely fine with you taking care of getting this specific fix reviewed and merged. Thank you again for offering to help. |
|
Correcting something I got wrong above. I wrote that the harness "still executes ~36 transformations and ~25 operators per On current 37 of those are the generated transformation lines and 1 is Two upstream changes caused this, neither of which touched the harness:
I checked out So the harness last compiled in August 2024, which makes the string constructor the @Easton97-Jens, thank you for the offer. I have opened #3607 with the focused fix. One implementation note, since it is the single place I diverged from your patch and |




what
Fixes incorrect handling of AFL++ input data in the fuzzing harness
Correctly uses the input buffer (
buf) to construct the stringAdds guard for invalid/empty input (
read_bytes <= 0)Prevents potential null pointer dereference in
Operator::instantiate()Adds fallback definition for
__AFL_LOOP(enables non-AFL builds)Adds additional security workflows:
why
→ resulting in ineffective fuzzing (no real coverage)
references
test/fuzzer/afl_fuzzer.cc)