kAFL/Nyx 是一个面向 x86 虚拟机的快速引导式模糊测试器。它非常适用于任何 以 QEMU/KVM 客户机形式运行的程序,尤其是 x86 固件、内核以及 完整的操作系统。
注意:所有组件仅用于研究和验证目的。 请自行承担使用风险。
kAFL 是驱动 面向机密计算的 Linux 安全加固 项目的主要模糊测试器,用于在复杂环境中识别漏洞并提升 Linux 内核对所有 CC 解决方案的安全性。
kAFL/Nyx 的其他成功目标包括:
此外,kAFL 已在 Intel 内部用于 x86 固件和驱动程序验证,以及 SMM 处理程序的模糊测试。
kAFL/Nyx 使用 Intel VT、Intel PML 和 Intel PT 来实现高效执行、快照重置以及面向灰盒或白盒模糊测试场景的覆盖率反馈。它允许使用任意所需的工具链和极少的代码修改。
kAFL 使用一个用 Python 编写的自定义 kAFL-Fuzzer。 kAFL-Fuzzer 遵循类似 AFL 的设计,并针对并行运行多个 Qemu 实例进行了优化, 支持灵活的虚拟机配置、日志记录和调试选项。
kAFL 集成了 Radamsa 模糊测试器,以及 Redqueen 和 Grimoire 扩展。Redqueen 利用虚拟机自省来提取条件指令的运行时输入,从而克服典型的魔法字节和其他输入检查。Grimoire 尝试从模糊输入中识别关键字和语法,以生成更巧妙的大规模变异。
有关 Redqueen、Grimoire、IJON、Nyx 的详细信息,请访问 nyx-fuzz.com。
Intel Skylake 或更高版本: 该设置需要第六代或更新的 Intel CPU(用于 Intel PT)以及充足的内存(每个 CPU 约 2GB RAM)
已修补的主机内核: 设置过程中将安装一个修改过的 Linux 主机内核。 在 IceLake 或更新的 CPU 上,在虚拟机内运行 kAFL 可能可行。
较新的 Debian/Ubuntu: 安装和教程 已在较新的 Ubuntu LTS(>=20.04)和 Debian(>=bullseye)上测试。
安装好 python3-venv 和 make 后,您可以使用 make deploy 安装 kAFL:
sudo apt install python3-venv make git
git clone https://github.com/IntelLabs/kAFL.git
cd kAFl
make deploy
安装可能需要一些时间,并且需要重启以更新内核。
如遇问题,请查看详细的安装指南,或参阅部署指南,了解详细信息并为你的项目定制 kAFL 配置。
作为第一个模糊测试示例,我们推荐模糊测试 Linux 内核。
还提供了其他目标,例如:
这些目标的改进文档正在编写中。