-
Notifications
You must be signed in to change notification settings - Fork 110
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
Add support for AFL #1
Comments
|
I think the best strategy here is to make a change to rustc to add in the afl LLVM pass behind a rustc debug flag. Relevant IRC rust-internals discussion: https://botbot.me/mozilla/rust-internals/2017-02-26/?msg=81593902&page=3 https://github.com/rust-lang/rust/tree/master/src/rustllvm https://github.com/rust-lang/rust/tree/master/src/librustc_llvm |
What's the advantage of afl over libfuzzer? |
@whitequark the only one I know is that it, being a out-of-process fuzzer, can trivially run even in presence of crashes and avoids giving the crashing inputs it has already seen. libfuzzer struggles with that use-case, sadly. |
In my opinion, the UI is a lot more informative and easier to understand: http://lcamtuf.coredump.cx/afl/status_screen.txt . Also from what I've seen, there's a larger ecosystem of tools built around AFL. |
okay, incorporating afl into cargo-fuzz is now doable. yesterday, i opened this issue in rust-lang/rust. i was informed by @alex in that thread that it's now possible to use afl without relying on afl's own llvm pass and instead use llvm's trace-pc-guard feature. i wasn't aware of this, tried it out this morning, and got it working! in particular, here's how to get it setup:
the main work left here is the integration into cargo-fuzz some questions:
some thoughts:
|
Published afl.rs 0.2 yesterday: https://users.rust-lang.org/t/announcing-afl-rs-0-2-bindings-for-american-fuzzy-lop/13981 which should make it easier to complete this issue now |
We have an artifacts/ and corpus/ folder that turn up there. We can make the artifacts/ folder into artifacts/libfuzzer and artifacts/afl if we wish.
Can we make the macro paper over this to provide the same API? |
Alternatively we can make AFL work on cargo examples directly. |
Would be nice if we could
cargo fuzz --fuzzer afl
on binary crates. Or something. Might need to set up the whole LLVM shebang.cc @frewsxcv
The text was updated successfully, but these errors were encountered: