NestFuzz: Enhancing Fuzzing with ComprehensiveUnderstanding of Input Processing Logic

NestFuzz是复旦大学白泽团队在2023CCS上的一篇工作,效果非常显著,值得一读。

NestFuzz是基于AFL开发的结构感知灰盒模糊器。主要包括两个阶段。在输入处理逻辑建模的第一阶段,NestFuzz 首先利用污点分析来识别输入访问指令。然后,NestFuzz 通过理解这些输入访问指令之间的控制流和数据流关系来识别字段间依赖关系和层次结构依赖关系。最后,NestFuzz提出了一种新颖的数据结构,即输入处理树,它可以表示输入格式的整体结构。在模糊测试的第二阶段,NestFuzz 设计了一种级联依赖性感知突变策略。基于已识别的依赖关系,每当 NestFuzz 改变(字段或结构级别)输入时,它都会级联改变其他受影响的字段或子结构以维持结构有效性。因此,NestFuzz可以持续有效地生成新的高质量测试用例。

复现过程:

构建NestFuzz:

下载NestFuzz:

git clone https://github.com/fdu-sec/NestFuzz.git

构建模糊器:

cd NestFuzz
make

构建输入处理逻辑建模

cd NestFuzz/ipl-modeling
./build.sh

用法:

step1:启动模糊器

./afl-fuzz -i input_dir -o fuzzer_output_dir -d -- /path/to/program [...params...]

step2:开始输入处理逻辑建模

python3 isi.py -t 60 -o fuzzer_output_dir -l fuzzer_output_dir/log -- /path/to/modeling_program [...params...]

例子:

下载libtiff最新源代码:

git clone https://gitlab.com/libtiff/libtiff.git

构建模糊器程序:

cp -r libtiff libtiff-fuzzer
cd libtiff-fuzzer
./autogen.sh
CC=/path/to/NestFuzz/afl-gcc CXX=/path/to/NestFuzz/afl-g++ ./configure --disable-shared
make -j$(nproc)

构建输入处理逻辑建模程序:

cp -r libtiff libtiff-model
cd libtiff-model
./autogen.sh
CC=/path/to/NestFuzz/ipl-modeling/install/test-clang CXX=/path/to/NestFuzz/ipl-modeling/install/test-clang++ ./configure --disable-shared
make -j$(nproc)

启动模糊器

/path/to/NestFuzz/afl-fuzz -m none -d -i /path/to/NestFuzz/testcases/images/tiff -o tiff_output -- /path/to/libtiff-fuzzer/tools/tiffsplit @@

开始输入处理逻辑建模

python3 /path/to/NestFuzz/isi.py -t 60 -o /path/to/tiff_output -l /path/to/tiff_output/log -- /path/to/libtiff-model/tools/tiffsplit @@

注意:将path/to替换成自己的路径

  • 25
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值