The Wayback Machine - https://web.archive.org/web/20201114033827/https://github.com/m4b/goblin/issues/110
Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fuzz: Round 2 #110

Open
m4b opened this issue Oct 14, 2018 · 3 comments
Open

Fuzz: Round 2 #110

m4b opened this issue Oct 14, 2018 · 3 comments

Comments

@m4b
Copy link
Owner

@m4b m4b commented Oct 14, 2018

I want to fuzz goblin's parser again, this time with:

  1. elf seeds using what we have now + seeds based on bsd elf binaries, etc.
  2. mach-o seeds
  3. PE seeds.
  4. object file seeds

4 is new but it's also very important. My guess is mach-o and PE will have the most issues, as they haven't been fuzzed at all yet.

I would love for someone to help set this up, and even just file issues as the errors start emerging :)

@m4b m4b added this to the 0.1.0 milestone Oct 14, 2018
@sanxiyn
Copy link
Contributor

@sanxiyn sanxiyn commented Jan 11, 2019

I feel like trying Angora, a fuzzer with very promising algorithms (also written in Rust!), and isn't our friend goblin a trusty good target?! Stay tuned!

The insight of AFL/LibFuzzer is that a little smart (coverage guiding) combined with speed beats full smart, symbolic approaches like KLEE. Angora shows it can be combined with a little more smart (taint guiding). Two instrumented executables are produced for coverage and taint, run taint a little (it's slow!), run coverage a lot, but do not mutate randomly but use taint info!, it all seems beautiful. Let's see how it works in practice.

@m4b
Copy link
Owner Author

@m4b m4b commented Jan 11, 2019

Super excited to see what you uncover here :) The mach-o and and PE backends could use some fuzz-love too :)

@Shnatsel
Copy link

@Shnatsel Shnatsel commented Mar 5, 2019

In the meanwhile I've done a pass with plain old AFL. I've targeted the elf parser since it contains a suspicious amount of unsafe code. I've also thrown in some FreeBSD binaries as seeds. Here's the generated corpus that can be used for subsequent fuzzing: min-elf-corpus.zip

Fuzzing harness targets ELF decoding specifically, this usually produces better results than all-in-one: https://github.com/Shnatsel/goblin/blob/master/fuzz-afl/src/main.rs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.