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, 内核模糊测试, 安全测试, 安全渗透, 攻击性安全, 无后门, 日志审计, 身份验证强制, 逆向工具