CyberGlossary

应用安全

模糊测试

别称: Fuzzing

定义

通过向程序输入大量畸形、随机或未预期的数据,自动发现崩溃、内存破坏与安全漏洞的测试技术。

模糊测试(fuzzing)会向目标(函数、解析器、协议或整个应用)发送大量经过变异或生成的输入,同时监控崩溃、挂起、断言失败或 sanitizer 报告。目的是找到违反安全属性的输入:越界访问、释放后使用、死循环、未处理异常或逻辑缺陷。AFL++、libFuzzer、Jazzer、Atheris 等现代 fuzzer 借助覆盖率反馈不断演化输入,以触达新代码路径,对解析器、解码器和加密代码尤其高效。如今,Google 的 OSS-Fuzz、Microsoft 的安全开发流程都将 fuzz 测试视为 SSDLC 的核心组件,挖掘出了大量高影响力的 CVE。

示例

  • OSS-Fuzz 持续运行 libFuzzer 对 OpenSSL 解析器进行模糊测试,以发现内存破坏问题。
  • 用 Jazzer 对 Java JSON 解析器进行模糊测试,通过深嵌套输入触发 DoS。

相关术语