Michal Zalewski <
lca...@gmail.com> writes:
>It would have immediately caused pronounced problems with almost any binary
>protocol.
Not necessarily, because all that fuzzing is checking for is "does it crash",
not "does it declare supposedly-valid input to be invalid". Consider a
hypothetical fuzzer nullfuzz that reads an input file, zeroes the in-memory
contents, and writes it to the output as its "fuzzed" file. Hopefully pretty
much any app will see that it's not a valid file and exit without crashing.
Now that'll never find any crashes at all, but let's modify nullfuzz to
halfnullfuzz which only zeroes the second half of the file while correctly
fuzzing the first. This will appear to work, it just won't find any crashes
caused by problems in the second half of the file. The 0A -> 0D corruption
will have a similar effect, you'd still find some crashes, just not ones that
are caused by changes after the corruption.
In any case though it's not an afl issue, I'll wait to hear back from the
source of the data to see what could have happened.
Peter.