At the risk of sounding really stupid. Can someone ELI5 what's going on here and why everyone thinks its so amazing?
It starts with an invalid .jpg (literally a text file containing "hello"), and by trying over and over, changing random bytes and tracing the execution of the decoder program as it is fed the corrupted input, it will drill deeper and deeper into the program until it has gotten far enough that the input is actually a valid .jpg, without any human input. Fuzzing like this is a very effective technique for finding (secu…
Pulling JPEGs out of thin air
31–40 of 86 posts
Re: Pulling JPEGs out of thin air
#32Re: Pulling JPEGs out of thin air
#33At the risk of sounding really stupid. Can someone ELI5 what's going on here and why everyone thinks its so amazing?
Re: Pulling JPEGs out of thin air
#34At the risk of sounding really stupid. Can someone ELI5 what's going on here and why everyone thinks its so amazing?
Evolution.
Re: Pulling JPEGs out of thin air
#35Earlier quoted context omitted.
It starts with an invalid .jpg (literally a text file containing "hello"), and by trying over and over, changing random bytes and tracing the execution of the decoder program as it is fed the corrupted input, it will drill deeper and deeper into the program until it has gotten far enough that the input is actually a valid .jpg, without any human input. Fuzzing like this is a very effective technique for finding (secu…
Why does it use fuzzed input in the first place? Couldn’t one just use random input from the beginning instead? It would be effectively equivalent but fuzzing of a "hello" string seems to be roundabout.
You could also have a started with a valid .jpg with lots of complicated embedded exif metadata sections etc, and have a good chance of triggering bugs in those code paths without having to "discover exif" first.
Re: Pulling JPEGs out of thin air
#36Earlier quoted context omitted.
It starts with an invalid .jpg (literally a text file containing "hello"), and by trying over and over, changing random bytes and tracing the execution of the decoder program as it is fed the corrupted input, it will drill deeper and deeper into the program until it has gotten far enough that the input is actually a valid .jpg, without any human input. Fuzzing like this is a very effective technique for finding (secu…
Why does it use fuzzed input in the first place? Couldn’t one just use random input from the beginning instead? It would be effectively equivalent but fuzzing of a "hello" string seems to be roundabout.
Re: Pulling JPEGs out of thin air
#37This is INSANELY COOL. If it's smart enough to learn how to build a JPEG in a day, use it with netcat and it could probably send quite a lot of things down in flames. Who needs static analysis :) ?
Yeah, netcat would be fun. Although, it seems that it also straces (or similar?) the app it tests. > it triggers a slightly different internal code path in the tested app This would be impossible on the network.
Re: Pulling JPEGs out of thin air
#38Re: Pulling JPEGs out of thin air
#39I'm not familiar with how the fuzzer was monitoring the executed code path. Would this be thwarted by address space layout randomization?
Re: Pulling JPEGs out of thin air
#40Earlier quoted context omitted.
Why does it use fuzzed input in the first place? Couldn’t one just use random input from the beginning instead? It would be effectively equivalent but fuzzing of a "hello" string seems to be roundabout.
In this case "hello" was just a pseudorandom starter to seed the fuzzer.