Skip to content

FuzzingLabs/cairo-fuzzer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

9b063a9 · Apr 22, 2025
Apr 6, 2023
Feb 17, 2025
Oct 17, 2023
Oct 17, 2023
Oct 17, 2023
Aug 29, 2024
Oct 17, 2023
Feb 25, 2023
Jan 15, 2024
Oct 17, 2023
Dec 22, 2022
Sep 7, 2023
Apr 22, 2025
Dec 22, 2022
Feb 25, 2023

Repository files navigation

Cairo-Fuzzer -- Cairo Smart Contract Fuzzer

Important

This repository is no longer maintained. If you have any questions or need further assistance, please contact FuzzingLabs.

Release version 1.2 Developped and maintained by @FuzzingLabs

Description:

Cairo-fuzzer is a tool designed for smart contract developers to test the security. It can be used as an independent tool or as a library.

Features:

  • Run Starknet contract
  • Replayer of fuzzing corpus
  • Minimizer of fuzzing corpus
  • Load old corpus
  • Handle multiple arguments
  • Workspace architecture
  • Import dictionnary
  • Use Cairo-fuzzer as a library

Usage:

	cargo run --release -- --cores 10 --contract ./tests1.0/fuzzinglabs.json --casm ./tests1.0/fuzzinglabs.casm --function "Fuzz_symbolic_execution"

For more usage information, follow our tutorial

CMDLINE (--help):

Usage: cairo-fuzzer [OPTIONS]

Options:
      --cores <CORES>              Set the number of threads to run [default: 1]
      --contract <CONTRACT>        Set the path of the JSON artifact to load [default: ]
      --casm <CASM>                Set the path of the JSON CASM artifact to load [default: ]
      --function <FUNCTION>        Set the function to fuzz [default: ]
      --workspace <WORKSPACE>      Workspace of the fuzzer [default: fuzzer_workspace]
      --inputfolder <INPUTFOLDER>  Path to the inputs folder to load [default: ]
      --crashfolder <CRASHFOLDER>  Path to the crashes folder to load [default: ]
      --inputfile <INPUTFILE>      Path to the inputs file to load [default: ]
      --crashfile <CRASHFILE>      Path to the crashes file to load [default: ]
      --dict <DICT>                Path to the dictionnary file to load [default: ]
      --logs                       Enable fuzzer logs in file
      --seed <SEED>                Set a custom seed (only applicable for 1 core run)
      --run-time <RUN_TIME>        Number of seconds this fuzzing session will last
      --config <CONFIG>            Load config file
      --replay                     Replay the corpus folder
      --minimizer                  Minimize Corpora
      --proptesting                Property Testing
      --analyze                    Dump functions prototypes
      --iter <ITER>                Iteration Number [default: -1]
  -h, --help                       Print help

F.A.Q

How to find a Cairo/Starknet compilation artifact (json file)?

Cairo-Fuzzer supports starknet compilation artifact (json and casm files) generated after compilation using starknet-compile and starknet-sierra-compile. Cairo-Fuzzer does not support Cairo2.0 and pure cairo contract.

How to run the tests?

cargo test

License

Cairo-Fuzzer is licensed and distributed under the AGPLv3 license. Contact us if you're looking for an exception to the terms.