All Projects → AFLplusplus → fuzzer-challenges

AFLplusplus / fuzzer-challenges

Licence: AGPL-3.0 license
Challenging testcases for fuzzers

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
shell
77523 projects
Makefile
30231 projects

Projects that are alternatives of or similar to fuzzer-challenges

x41-smartcard-fuzzing
X41 Smartcard Fuzzer
Stars: ✭ 113 (+156.82%)
Mutual labels:  fuzzing
PersonalStuff
This is a repo is to upload files done during my research.
Stars: ✭ 94 (+113.64%)
Mutual labels:  fuzzing
afl-cygwin
AFL "mostly" ported to cygwin
Stars: ✭ 24 (-45.45%)
Mutual labels:  fuzzing
FirmWire
FirmWire is a full-system baseband firmware emulation platform for fuzzing, debugging, and root-cause analysis of smartphone baseband firmwares
Stars: ✭ 555 (+1161.36%)
Mutual labels:  fuzzing
gini
A fast SAT solver
Stars: ✭ 139 (+215.91%)
Mutual labels:  fuzzing
rbuster
yet another dirbuster
Stars: ✭ 21 (-52.27%)
Mutual labels:  fuzzing
afl-dynamorio
run AFL with dynamorio
Stars: ✭ 32 (-27.27%)
Mutual labels:  fuzzing
soltix
SOLTIX: Scalable automated framework for testing Solidity compilers.
Stars: ✭ 30 (-31.82%)
Mutual labels:  fuzzing
foundry
Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.
Stars: ✭ 4,623 (+10406.82%)
Mutual labels:  fuzzing
sidefuzz
Fuzzer to automatically find side-channel (timing) vulnerabilities
Stars: ✭ 94 (+113.64%)
Mutual labels:  fuzzing
kbdysch
A collection of user-space Linux kernel specific guided fuzzers based on LKL
Stars: ✭ 62 (+40.91%)
Mutual labels:  fuzzing
ronin-support
A support library for Ronin. Like activesupport, but for hacking!
Stars: ✭ 23 (-47.73%)
Mutual labels:  fuzzing
afl-pin
run AFL with pintool
Stars: ✭ 64 (+45.45%)
Mutual labels:  fuzzing
targets
🎯 A collection of fuzzing targets written in Rust.
Stars: ✭ 91 (+106.82%)
Mutual labels:  fuzzing
swiftfuzztools
Swift-based fuzzing tools
Stars: ✭ 18 (-59.09%)
Mutual labels:  fuzzing
IEC61850-MMS-Fuzzer
Mutation Based Fuzzer for IEC61850 Server IED'S
Stars: ✭ 20 (-54.55%)
Mutual labels:  fuzzing
libdft64
libdft for Intel Pin 3.x and 64 bit platform. (Dynamic taint tracking, taint analysis)
Stars: ✭ 174 (+295.45%)
Mutual labels:  fuzzing
e9afl
AFL binary instrumentation
Stars: ✭ 234 (+431.82%)
Mutual labels:  fuzzing
Easy-Pickings
Automatic function exporting and linking for fuzzing cross-architecture binaries.
Stars: ✭ 49 (+11.36%)
Mutual labels:  fuzzing
MsFontsFuzz
OpenType font file format fuzzer for Windows
Stars: ✭ 49 (+11.36%)
Mutual labels:  fuzzing

Fuzzing introspection testcases

Test a fuzzer what fuzzing challenges it can solve. The goal is to have testcases that afl++ can all complete - once they are all implemented. Currently the different solving mechanisms have to be set as defined in src/afl-fuzz-redqueen.c. The comparisons to honggfuzz and libfuzzer are biased, as the testcases are how afl-fuzz sees things. The libfuzzer/ directories has libfuzzer's applicable own testcases, of which afl++ is only able to solve 64% (vs 86% honggfuzz and 92% libfuzzer).

Setup

The fuzzers and necessary compilers must be in the path: afl-clang-fast, afl-fuzz, hfuzz-clang, honggfuzz, clang.

Running

./test.sh TARGET [SPECIFIC_TESTCASE]

TARGET can be (currently) one of:

  • afl++
  • afl++-qemu
  • afl++-frida
  • libafl (WIP)
  • honggfuzz
  • libfuzzer
  • kirenenko (via test-kirenenko.sh, use it's docker container)
  • symcc + qemu (via test-symcc.sh and test-symqemu.sh, use it's docker container)
  • manticore (via test-manticore.sh)

Note that manticore and symqemu success can depend on compile options.

Testcases:

  • test-u8 - several chained 8 bits checks
  • test-u16 - several chained 16 bits checks
  • test-u32 - several chained 32 bits checks
  • test-u64 - several chained 64 bits checks
  • test-u128 - several chained 128 bits checks
  • test-u32-cmp - several chained 32 bit lesser/greater checks
  • text-extint - llvm _ExtInt() tests
  • test-float - several chained float checks
  • test-double - several chained double checks
  • test-longdouble - several chained long double checks
  • test-memcmp - several chained memcmp checks
  • test-strcmp - several chained strncasecmp checks
  • test-transform - different transforming string checks
  • test-crc32 - several chained crc32 checks

The testcases are WIP - some might be further refined in the future and more added.

Results

On success the time to solve is displayed.

On failure the generated corpus files are displayed (so you can see how many finds there were). There is also an output log called TESTCASE.log.

Test as of July 2022

All from current repository state (afl++ is CMPLOG instrumented and afl-fuzz -l3AT -Z). Solve time: 120 seconds for afl++/honggfuzz/libfuzzer Sym*, Kirenenko and Manticore are not fuzzers but solvers, hence no time restriction. SymCC and SymQEMU have the same results so they are combined to save space.

testcase afl++ libafl kirenenko sym* manticore afl++-qemu/afl++-frida honggfuzz-2.5 libfuzzer-13
test-crc32 0m1,735s OK OK OK OK 0m14,609s FAIL 0m14,207s
test-double 0m26,823s FAIL FAIL FAIL FAIL FAIL FAIL FAIL
test-extint 0m0,429s OK FAIL FAIL FAIL FAIL FAIL FAIL
test-float 0m4,657s FAIL FAIL FAIL FAIL FAIL FAIL FAIL
test-longdouble 0m1,031s FAIL FAIL FAIL FAIL FAIL FAIL FAIL
test-memcmp 0m0,837s OK OK OK OK 0m6,494s 0m1,005s 0m0,308s
test-strcmp 0m0,835s OK FAIL FAIL FAIL 0m5,727s 0m1,004s 0m1,040s
test-transform 0m4,334s FAIL FAIL FAIL FAIL FAIL FAIL FAIL
test-u128 0m0,682s FAIL FAIL OK FAIL FAIL FAIL FAIL
test-u16 0m1,252s OK OK OK OK 0m8,132s 0m1,005s 0m3,741s
test-u32 0m0,844s OK OK OK OK 0m5,185s 0m1,004s 0m2,887s
test-u32-cmp 0m1,332s OK OK OK OK 1m42,470s 0m6,404s 0m0,454s
test-u64 0m0,655s OK OK OK OK 0m3,844s 0m1,005s 0m5,465s
test-u8 0m2,263s OK OK OK OK 0m18,186s 0m1,004s 0m1,370s

afl++ has the most solves, but due to the many solve attempts overall fuzzing performance is decreased, as can be seen at https://www.fuzzbench.com/reports/experimental/2021-01-12-aflpp/. Interpretation: the slowest solver is the best in real-world fuzzing.

More testcases or fuzzers?

Just add them and send a PR.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].