使用 AFL++ 进行更有效的模糊测试的提示

主要观点:模糊测试对于发现软件缺陷非常有效但未被充分利用,介绍了在基于 glibc 的 Linux 发行版上对源可用的 C 和 C++目标使用 AFL++进行模糊测试的技巧。
关键信息

  • 配置 Sanitizer 和断言能提高模糊测试效果,如默认使用 Address Sanitizer (ASan)和 Undefined Behavior Sanitizer (UBSan),并调整 ASAN_OPTIONS 环境变量。
  • 偏好持久模式,它通常速度更快,可通过afl-gcc-fast等命令使用,还需注意一些相关问题。
  • 隔离模糊测试,避免测试受先前测试影响,如重置全局状态等。
  • 不要直接在模糊测试缓冲区上测试,应传递合适大小的副本。
  • 无需费心释放内存,除非目标使用特定内存分配方式。
  • 使用内存文件描述符来支持命名路径,方便测试且解决并行模糊测试问题。
  • 配置目标为较小缓冲区,以更快发现缺陷。
    重要细节
  • AFL++官方文档可补充这些技巧,如Performance TipsTechnical “whitepaper” for afl-fuzz
  • 模板fuzztmpl.c可用于模糊测试,可根据需要修改,还能对程序进行各种修改以方便测试。
  • 模糊测试时要注意地址值依赖等问题,避免影响测试结果和再现性。
  • 对于一些设计不佳的接口,可使用内存文件描述符解决测试难题。
阅读 13
0 条评论