模糊测试的八条实操技巧:先关掉那些骗你的默认配置
来源:nullprogram.com — 2025-02-05
📋 概述
作者六年里对约一千个项目做过模糊测试,总结出一份清单式实践。核心观点是模糊测试极其有效却普遍被忽视:任何处理复杂输入的程序,只要还没被 fuzz 过,通常至少能挖出一个 bug。文章针对 glibc 上的 C/C++ 项目与 AFL++,讲怎么把工具配置从「能跑」调到「真的能发现问题」。
🔑 核心要点
- 默认同时开 ASan 与 UBSan,并把 abort_on_error、halt_on_error、detect_stack_use_after_return 打开。
- ASan 默认只填充前 4KiB 新分配内存,把 max_malloc_fill_size 提到 1GB 才能暴露未初始化内存相关的 bug。
- 优先用 persistent 模式,通常快一个数量级,但要自己处理全局状态隔离。
- 不要直接把 AFL 的 buffer 传给被测函数,它比 len 大,会让 ASan 看不见越界读;要拷贝一份尺寸精确的副本。
- 把源文件直接 include 进模板可以测静态函数,还能用宏改名干掉 main,不必改原项目一行代码。
- 看到 64KB 这类慷慨的固定缓冲区就改小,能让 fuzz 快速走到溢出路径。
💡 金句
Fuzz testing is incredibly effective for mechanically discovering software defects, yet remains underused and neglected.
👍 0
👎 0
← 返回 Hacker News 首页