
Подкоманда Cargo для управляемого покрытием фаззинга Rust с помощью libFuzzer: создание и запуск фазз-целей, минимизация сбоев и корпусов, а также формирование отчёта о покрытии.
cargo fuzzПодкоманда cargo для фаззинга с помощью libFuzzer! Проста в использовании!
$ cargo install cargo-fuzz
Примечание: libFuzzer требует поддержки санитайзеров LLVM, поэтому работает только на x86-64 и Aarch64,
и только в Unix-подобных операционных системах (не в Windows). Также требуется ночной компилятор, поскольку используются
нестабильные флаги командной строки. Вам также понадобится C++ компилятор с поддержкой C++11.
cargo fuzz initИнициализируйте проект cargo fuzz для вашего крейта!
fuzz в workspace.members в корневом Cargo.tomlКаталог fuzz может быть либо частью существующего workspace (по умолчанию),
либо использовать независимый workspace. Если желательно последнее, вы можете использовать
cargo fuzz init --fuzzing-workspace=true.
cargo fuzz add <target>Создайте новую цель фаззинга!
cargo fuzz run <target>Запустите цель фаззинга и находите ошибки!
cargo fuzz fmt <target> <input>Выведите вывод std::fmt::Debug для тестового примера. Полезно, когда ваша фаззинг-цель
принимает входные данные Arbitrary!
cargo fuzz tmin <target> <input>Нашли падающий входной пример? Минимизируйте его до наименьшего входного примера, вызывающего этот сбой, для упрощения отладки!
cargo fuzz cmin <target>Минимизируйте ваш корпус входных файлов!
cargo fuzz coverage <target>Сгенерируйте информацию о покрытии фаззинг-программы!
Документацию можно найти в Rust Fuzz Book.
Вы также всегда можете найти все доступные параметры командной строки с помощью
--help:
$ cargo fuzz --help
Трофейная витрина содержит список ошибок,
найденных с помощью cargo fuzz (и других инструментов). cargo fuzz и libFuzzer нашли ошибку
для вас? Добавьте её в трофейную витрину!
cargo-fuzz распространяется на условиях как лицензии MIT, так и
Apache License (версия 2.0).
См. LICENSE-APACHE и LICENSE-MIT для подробностей.