ttuurrnn/SyzAgent
GitHub: ttuurrnn/SyzAgent
SyzAgent 是一个基于 SyzDirect/syzkaller 的 AI 辅助定向内核模糊测试工具,通过 agent 循环自动诊断测试停滞并再生 syscall 模板与种子。
Stars: 2 | Forks: 0
# SyzAgent
SyzAgent 将 SyzDirect 定向内核模糊测试 pipeline 与 agent 循环相结合,后者用于诊断停滞的模糊测试运行并重新生成 syscall 模板或 seed。本代码库特意保持为以代码为核心的发布版本:实验输出、生成的数据集、特定场景的 shell 脚本以及滚动基准测试产物均不包含在 `main` 分支中。
## 包含的内容
- `syzagent/`:用于分析、分类、完整 pipeline 准备和数据集用例执行的命令行封装。
- `source/agent/`:失败分类和 template/seed 增强 agent。
- `source/analyzer/`、`source/distance/`、`source/template/`:Python 分析、距离和模板生成辅助工具。
- `source/syzdirect/`:SyzDirect LLVM 分析工具、内核分析工具以及基于 syzkaller 的 fuzzer 分支。
- `source/syzdirect/Runner/`:SyzDirect 运行模块,如 `pipeline_new_cve.py`、`pipeline_dataset.py`、`agent_loop.py` 及相关辅助工具。
- `run_hunt.py`:用于底层运行器的小型兼容性封装。
- `scripts/`:安装、宿主机引导、健康检查、用例运行器、数据集运行器和实验运行器封装。
## 仓库布局
```
.
├── syzagent/ # python -m syzagent entry point
├── source/
│ ├── agent/ # R1/R2/R3/R4 triage and intervention agents
│ ├── analyzer/ # syscall analysis wrapper
│ ├── distance/ # target distance calculation wrapper
│ ├── template/ # syz template/callfile generation
│ └── syzdirect/
│ ├── Runner/ # SyzDirect pipeline and agent-loop runner modules
│ ├── syzdirect_fuzzer/
│ ├── syzdirect_function_model/
│ └── syzdirect_kernel_analysis/
├── scripts/
│ ├── setup.sh # build LLVM/SyzDirect/syzkaller components
│ ├── bootstrap_host.sh # install host packages
│ ├── doctor.py # environment check
│ ├── run_case.sh # convenience wrapper for one dataset case
│ ├── run_dataset_case.py # fetch/prepare/run one public syzbot dataset case
│ └── run_experiment.sh # baseline/SyzDirect/agent-loop experiment runner
├── targets/example_target.json
├── configs/run_case.env.example
├── run_hunt.py # compatibility wrapper
└── Makefile
```
## 环境要求
- Ubuntu 20.04+ 或 Debian 11+;WSL2 可用于分析和构建准备。
- Python 3.10+、Go、CMake、Ninja、QEMU 以及常用的 Linux 构建工具。
- LLVM/内核构建至少需要 32 GB 内存;建议 48 GB+。
- 建议使用 KVM 进行模糊测试。如果没有 KVM,QEMU TCG 也可以工作,但速度会慢得多。
## 安装说明
安装宿主机依赖项:
```
make bootstrap
```
构建 SyzDirect 工具链和 fuzzer 组件:
```
./scripts/setup.sh --jobs 8
```
检查本地环境:
```
make doctor
```
## 基本用法
对目标运行静态分析、距离计算和模板生成:
```
python3 -m syzagent --analyze \
--target targets/example_target.json \
--kernel /path/to/linux \
--output .runtime/analyze
```
运行完整的准备流程:
```
python3 -m syzagent --full \
--target targets/example_target.json \
--kernel /path/to/linux \
--output .runtime/full
```
对现有的模糊测试日志进行分类并增强模板:
```
python3 -m syzagent --triage \
--log /path/to/manager.log \
--templates .runtime/analyze/templates.json \
--output .runtime/triage
```
准备并选择性运行一个公开数据集用例:
```
python3 -m syzagent --case 54 --output .runtime
```
等效的 Make 目标:
```
make run-case CASE=54 BUDGET_HOURS=1 MODE=agent-loop
```
## SyzDirect Runner
底层运行器仍可直接使用:
```
python3 run_hunt.py new \
--cve CVE-2025-XXXXX \
--commit \
--function \
--file \
--agent-rounds 3 \
--agent-uptime 6
```
对于已准备好的 workdir:
```
python3 run_hunt.py fuzz \
-workdir /path/to/workdir \
--targets 0 \
--agent-rounds 5 \
--agent-uptime 1
```
## Agent 循环
模糊测试循环会监控执行健康状况并对失败进行分类:
- `R1`:syscall 入口选择错误或缺失。
- `R2`:参数/对象构建失败。
- `R3`:缺少依赖的 syscall 链。
- `R4`:在看似有效的执行后出现距离或覆盖率停滞。
根据不同的类别,agent 循环会在下一轮模糊测试之前更新 callfile、合成具有对象感知能力的 seed,或重新注入受引导的 seed。
## 生成的文件
生成的产物应排除在 Git 之外:
- `.runtime/`、`workdir/`、`runs/`、`results/`、`logs/`、`bg_logs/`
- `generated_datasets/`
- `rolling_cases*.csv`
- 内核构建产物,例如 `bzImage`、`vmlinux`、`*.bc`、`*.ll`、`*.ko`
- 本地配置文件,例如 `configs/run_case.env`
使用 `configs/run_case.env.example` 作为本地设置的模板。
标签:AI辅助, Bash脚本, EVTX分析, LLVM, Python, 内核模糊测试, 安全测试, 安全渗透, 攻击性安全, 无后门, 日志审计, 身份验证强制, 逆向工具