
Subcomando do Cargo para fuzzing de Rust guiado por cobertura com libFuzzer: criar e executar alvos de fuzz, minimizar falhas e corpora, e relatar cobertura.
cargo fuzzUm subcomando de cargo para fuzzing com libFuzzer! Fácil de usar!
$ cargo install cargo-fuzz
Observação: o libFuzzer precisa de suporte a sanitizers do LLVM, portanto isso só funciona em x86-64 e Aarch64, e apenas em sistemas operacionais do tipo Unix (não Windows). Isso também requer um compilador nightly, pois usa algumas flags de linha de comando instáveis. Você também precisará de um compilador C++ com suporte a C++11.
cargo fuzz initInicialize um projeto cargo fuzz para a sua crate!
fuzz a workspace.members no Cargo.toml raizO diretório fuzz pode ser parte de um workspace existente (padrão) ou usar um workspace independente. Se a última opção for desejada, você pode usar cargo fuzz init --fuzzing-workspace=true.
cargo fuzz add <target>Crie um novo alvo de fuzzing!
cargo fuzz run <target>Execute um alvo de fuzzing e encontre bugs!
cargo fuzz fmt <target> <input>Exiba a saída de std::fmt::Debug para um caso de teste. Útil quando o seu alvo de fuzz recebe uma entrada Arbitrary!
cargo fuzz tmin <target> <input>Encontrou uma entrada com falha? Minifique-a até a menor entrada que cause essa falha para facilitar a depuração!
cargo fuzz cmin <target>Minifique o seu corpus de arquivos de entrada!
cargo fuzz coverage <target>Gere informações de cobertura sobre o programa submetido a fuzzing!
A documentação pode ser encontrada no Rust Fuzz Book.
Você também pode sempre encontrar todas as opções de linha de comando disponíveis com --help:
$ cargo fuzz --help
A vitrine de troféus contém uma lista de bugs encontrados por cargo fuzz (e outros). O cargo fuzz e o libFuzzer encontraram um bug para você? Adicione-o à vitrine de troféus!
O cargo-fuzz é distribuído sob os termos da licença MIT e da Apache License (Versão 2.0).
Consulte LICENSE-APACHE e LICENSE-MIT para obter detalhes.