8 FUZZING

Fuzzing 一直以来都是个热点话题,因为使用它能非常高 效的寻找出软件的漏洞。简单的说,Fuzzing 就是向目标程序发 送畸形或者半畸形的数据以引发错误。这一章,让我们先了解几 个不同类型的 fuzzer 还有 bug,之后我们还要自己动手写实现一 个 file fuzzer。下一章,会详细的介绍 Sulley fuzzing 框架和如何设计一个针对 Windows 驱动的 fuzzer。

fuzzers 基本上分成 2 大类:generation(产生) 和 mutation(变异)。Generation fuzzers 创建数据,然后发送到到目标程序, mutation fuzzers 并不创建数据,而是截获程序接收的 数据,然后修改数据。 举个例子,当我们要 fuzz 一个 web 服务器的时候,generation fuzzer 会生成一套变形的 Http 请求然后发送给 web 服务器,而 mutation fuzzer 会捕获 Http 请求, 在请求传递给 web 服务器前修改它们。

为了将来我们创建创建一个高效的 fuzzer,我们需要先对不同类型的 bug 做一个简单的 了解,并且看看 fuzzer 如何触发它们。如果要更详细的了解软件安全检测,可以看下面的书。