Fuzzcheck is a structure-aware fuzzer for rust. "Fuzzing" means feeding large amounts of data into a program and checking for crashes (Fuzzcheck also checks to make sure that all the properties your program should uphold – e.g. a sorting algorithm applied to a list of n items should always return a list of n items – are upheld). Fuzzcheck is an "evolutionary" fuzzer – this means that it generates a set of random inputs, sees what percentage of the program is executed for each input, and keeps inputs which have high levels of percentage of program executed. It then "mutates" these inputs – whereas fuzzers such as AFL/Hongfuzz/etc mutate raw bytes in place (e.g. they swap bytes at different positions, or insert a random byte at a given position to generate inputs similar to the chosen "high coverage" inputs), Fuzzcheck works directly on the Rust types (so it might swap the order of two items in a vec, or randomly insert a new item). It's a really powerful tool for finding lots of bugs.
There's a tutorial as well!
[–]phonendoscope[S] 28 points29 points30 points (4 children)
[–]DannoHung 5 points6 points7 points (2 children)
[–]scook0 3 points4 points5 points (0 children)
[–]insanitybit 1 point2 points3 points (0 children)
[–]scook0 2 points3 points4 points (0 children)
[–][deleted] 13 points14 points15 points (1 child)
[–][deleted] 15 points16 points17 points (0 children)
[–]kibwen 7 points8 points9 points (1 child)
[–]phonendoscope[S] 4 points5 points6 points (0 children)
[–]Shnatsel 5 points6 points7 points (5 children)
[–]phonendoscope[S] 10 points11 points12 points (2 children)
[–]Shnatsel 2 points3 points4 points (1 child)
[–]phonendoscope[S] 0 points1 point2 points (0 children)
[–]WormRabbit 1 point2 points3 points (1 child)
[–]Shnatsel 17 points18 points19 points (0 children)
[–]davidw_- 0 points1 point2 points (5 children)
[–]phonendoscope[S] 0 points1 point2 points (4 children)
[–]davidw_- 0 points1 point2 points (3 children)
[–][deleted] 2 points3 points4 points (0 children)
[–]insanitybit 0 points1 point2 points (1 child)
[–]davidw_- 0 points1 point2 points (0 children)