本项目包含CERT基本模糊测试框架(BFF)的源代码。
Windows版BFF原名CERT故障观察引擎(FOE)。
根据你偏好的难度等级和经验值,从以下选项中选择。
大多数BFF代码位于certfuzz包 src/certfuzz 中。要在现有BFF安装中试用certfuzz代码,请将本仓库中的 certfuzz 目录替换到你安装目录下的同名目录。
部分平台相关代码位于 src/windows 和 src/linux 中。OS X版BFF同样使用 src/linux。平台特定的说明文件请参见 src/linux/README 和 src/windows/README.txt;如果你感觉格外有冒险精神,还可以看看 src/linux/INSTALL。
实际上,我们使用一个持续集成系统,配合 build/ 目录中的代码以及一些平台特定工具,来构建上述链接中的发行版。但目前该构建代码仅能在该环境中运行。事实上,master分支的代码还是以svn为中心的,因此当我们切换到git时它甚至无法工作。我们已经在内部开发系统中修复了这个问题,但尚未与这里发布的代码合并。
此外,构建脚本会修改一些文件并移动内容以组装发行包和构建安装程序。src/ 目录中的文件名(但不一定包括位置)通常保持不变,因此如果你需要查看 src/certfuzz 目录之外的内容,应该能弄清楚各文件的去向。(如上面简单部分所述,src/certfuzz 应该只是一个即插即用的替换。)
如果这一切对你来说更像是一个挑战而非警告,那就大胆尝试吧。
请参见 src/experimental/README.md,其中包含一些可能略有用途的“死胡同”。
CERT基本模糊测试框架(BFF)是一款软件测试工具,用于发现运行在Linux、Mac OS X和Windows上的应用程序中的缺陷。
BFF对处理文件输入的软件进行变异模糊测试。它会自动收集导致软件以独特方式崩溃的测试用例,以及与崩溃相关的调试信息。BFF旨在最小化软件厂商和安全研究人员高效发现并分析通过模糊测试所找到的安全漏洞所需付出的努力。
变异模糊测试是指获取格式良好的输入数据,并以各种方式对其进行破坏,寻找导致崩溃的案例。BFF会自动收集导致软件以独特方式崩溃的测试用例,以及与崩溃相关的调试信息。BFF的目标是最大程度减少软件厂商和安全研究人员高效发现并分析通过模糊测试发现的安全漏洞所需的工作量。
传统上,模糊测试在发现安全漏洞方面非常有效,但由于其固有的随机性,结果在很大程度上依赖于模糊测试系统的初始配置。BFF应用机器学习和进化计算技术,以最小化启动和完成一次有效模糊测试活动所需的手动配置量。BFF根据在模糊测试过程中找到(或未找到)的情况动态调整其配置参数。通过这种方式,它能够显著提高测试活动的效能和效率。因此,无论是新手还是专家,都无需具备专业知识即可配置一次有效的模糊测试,并迅速开始发现和分析漏洞。
以下是BFF提供的一些特定功能:
在CERT/CC,我们使用BFF基础设施发现了许多关键漏洞,例如Adobe Reader和Flash Player;Foxit Reader;Apple QuickTime、Preview和Mac OS X;Xpdf;Poppler;FFmpeg;JasPer;Wireshark;VMware VMnc视频编解码器;Indeo视频编解码器等。详见使用BFF发现的公开漏洞。
BFF和FOE最初是CERT/CC漏洞分析团队中两个独立但相关的项目。随着时间的推移,它们的架构逐渐趋同,以至于BFF 2.7和FOE 2.1共享了大量代码。从BFF 2.8开始,这一整合已完成,我们已淘汰FOE这一名称,转而统一使用BFF。