主要观点:模糊测试对于发现软件缺陷非常有效但未被充分利用,介绍了在基于 glibc 的 Linux 发行版上对源可用的 C 和 C++目标使用 AFL++进行模糊测试的技巧。
关键信息:
- 配置 Sanitizer 和断言能提高模糊测试效果,如默认使用 Address Sanitizer (ASan)和 Undefined Behavior Sanitizer (UBSan),并调整 ASAN_OPTIONS 环境变量。
- 偏好持久模式,它通常速度更快,可通过
afl-gcc-fast
等命令使用,还需注意一些相关问题。 - 隔离模糊测试,避免测试受先前测试影响,如重置全局状态等。
- 不要直接在模糊测试缓冲区上测试,应传递合适大小的副本。
- 无需费心释放内存,除非目标使用特定内存分配方式。
- 使用内存文件描述符来支持命名路径,方便测试且解决并行模糊测试问题。
- 配置目标为较小缓冲区,以更快发现缺陷。
重要细节: - AFL++官方文档可补充这些技巧,如Performance Tips和Technical “whitepaper” for afl-fuzz。
- 模板
fuzztmpl.c
可用于模糊测试,可根据需要修改,还能对程序进行各种修改以方便测试。 - 模糊测试时要注意地址值依赖等问题,避免影响测试结果和再现性。
- 对于一些设计不佳的接口,可使用内存文件描述符解决测试难题。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。