langston-barrett / czz

Whole-program, Scheme-scriptable, multi-language, coverage-guided fuzzer
https://langston-barrett.github.io/czz/
MIT License
6 stars 0 forks source link
fuzzing scheme

=== czz

.. This paragraph is duplicated in the README and index.rst.

czz is a whole-program, scriptable, multi-language, coverage-guided fuzzer.

Whole-program: Instead of feeding input to the target program via a file or stdin, czz executes target from main and provides it with manufactured data by intercepting calls to library functions like recv, fopen, and rand. This approach does not require users to write a fuzzing harness and can exercise effectful, non-deterministic code that is not amenable to traditional fuzzing techniques.

Scriptable: czz can be scripted in Scheme. Capabilities include overriding the behavior of functions in the target program, e.g., to :ref:make a checksum function always pass <checksum>. Use-cases that we plan to support in the future <https://github.com/langston-barrett/czz/issues/124>_ include writing custom power schedules and mutations.

Multi-language: czz currently targets languages that compile to LLVM (e.g., C, C++, Rust, etc.), but is built on the language-agnostic Crucible <https://github.com/GaloisInc/crucible> library, and also includes a proof-of-concept fuzzer for JVM code. Webassembly support is planned <https://github.com/langston-barrett/czz/issues/109>.

See the documentation <https://langston-barrett.github.io/czz/>_ for more information about czz.