如何模糊Rust程序

Manish Goregaokar撰写了一篇精彩的博客文章,内容涉及货物模糊及其在模糊Rust程序中的使用。

从那篇文章开始,我就推送了代码以更新默认的模糊目标模板,并使整个模糊体验变得更好。 我还克隆了很多开源项目,并对它们进行了疯狂测试 ……取得了成功! 截至今天,我已经向奖杯案提交了10个错误; 其中6个是固定的,另外4个是未解决的项目。

如果您有一个需要输入的项目,请敦促您对代码进行模糊测试!

无论如何-这是我运行以测试项目的典型工作流程:

$ cd <your-amazing-project> $ cargo install cargo-fuzz # (if not already installed) $ cargo fuzz init $ vim fuzz/fuzzers/fuzzer_script_1.rs <edit and save the file... more below> $ cargo fuzz run fuzzer_script_1 <sit back and wait>

…就是这样!

编辑: / u / lifthrasiir有一些关于命令行标志的一些很好的技巧 ,可以加快模糊测试的速度。

现在,关于放入模糊目标的内容非常简单。 通常,您将需要在此处添加代码,这是该库其余部分的入口。 (当然,您可以测试程序的某些功能,但至少在这里它将测试整个功能。)

此类代码的示例如下:

#![no_main] #[macro_use] extern crate libfuzzer_sys; extern crate your_lib; fuzz_target!(|data: &[u8]| { let _ = your_lib::parse(data); // I added this line. });

“…但是我的代码并不需要&[u8]”,您说-很容易,您可以使用以下代码将其转换为&str。

if let Ok(utf8) = std::str::from_utf8(data) { let _ = your_lib::parse(utf8); }

现在,您可以从此处向项目提交问题,也可以自己修复错误。 我通常使用以下格式提交我发现的崩溃( 此处为示例 ):

Found using `cargo-fuzz`. <a minimal program (containing input) which causes the issue> <backtrace>

我很快将发布另一篇有关分析和修复崩溃的文章,所以请多加注意-到目前为止,谢谢大家!

From: https://hackernoon.com/how-to-fuzz-a-rust-program-7adf09d3ab50

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值