syzkaller 安装与使用教程
1. 项目目录结构及介绍
syzkaller
的目录结构如下:
syzkaller/
├── doc # 文档目录,包括安装指南、贡献方法等
├── kernel # 内核相关代码,如生成的系统调用描述
├── procgen # 程序生成器,用于创建随机测试用例
├── syz-manager # 管理器进程,协调其他组件
├── syz-fuzzer # 覆盖率引导的模糊测试程序
├── syz-repro # 重现测试问题的工具
├── tools # 辅助脚本和工具
└── ... # 其他支持文件和配置
doc
: 存放所有文档,包括如何安装、使用以及报告内核漏洞。kernel
: 包含描述操作系统内核系统调用的文件。procgen
: 产生用于测试内核的随机程序。syz-manager
: 主管理进程,负责管理和调度测试。syz-fuzzer
: 执行实际的模糊测试,尝试发现内核错误。syz-repro
: 工具帮助用户在本地复现由syzkaller
发现的问题。tools
: 提供辅助脚本,例如编译内核模块或设置虚拟环境。
2. 项目的启动文件介绍
syz-manager
syz-manager
是主要的控制程序,它启动并监控模糊测试过程。通过以下命令启动 syz-manager
(请替换 <config>
为你的配置文件路径):
./syz-manager -config=<config>
配置文件应定义如目标内核、主机映射、网络配置等详细信息。
syz-fuzzer
syz-fuzzer
是执行模糊测试的实际程序,它与 syz-manager
配合工作。通常无需直接启动 syz-fuzzer
,因为 syz-manager
会自动管理它。
3. 项目的配置文件介绍
syzkaller
使用 JSON 格式的配置文件来指定测试环境的参数。一个示例配置文件可能如下所示:
{
"name": "myinstance",
"http": ":10000",
"workdir": "/tmp/workdir",
"vm": {
"count": 4,
"image": "/path/to/image.qcow2",
"sandbox": "none",
"type": "qemu",
"cpu": 4,
"mem": 2048,
"kernelpath": "/path/to/vmlinuz",
"kernelargs": [
"tsc=reliable",
"nohz_full=on",
"rcu_nocbs=$((1<<$(nproc)))"
],
"tools": ["/path/to/syz-executor"],
" Covers": ["net", "vsock"]
},
"procs": 10,
"use_vt": true,
"use_kcov": false,
"use ptrace": true,
"debug": true,
"enable_reproducers": true
}
name
: 实例名称,用于区分不同测试运行。http
: HTTP监听端口,用于syz-manager
和外部通信。workdir
: 工作目录,保存日志和其他临时文件。vm
: VM 设置,包括数量、图像文件、类型(如qemu
)、CPU 数量、内存大小等。procs
: 每个 VM 上的并发进程数。use_vt
,use_kcov
,use_ptrace
: 分别表示是否启用 VT 虚拟化、kcov 监控代码覆盖和ptrace调试。debug
: 是否开启调试模式,提供更多输出信息。enable_reproducers
: 是否尝试生成可重现的测试用例。
请根据实际测试环境调整配置文件中的参数。完成配置后,使用 -config
参数传递给 syz-manager
运行。
请注意,这个例子是简化的,实际配置文件可能包含更多细节,如网络设置、特定内核版本的系统调用描述等。确保查阅 syzkaller
文档以获取完整的配置选项。