GitHub Security Lab 推出基于 AI 的自动化模糊测试任务流
GitHub Security Lab 发布了基于 LLM 驱动的 Fuzzing Taskflow,旨在将模糊测试中的重复性人工工作自动化。该工具能自动识别入口点、编写 Harness、运行 AFL++ 并处理崩溃报告,显著降低 C/C++ 项目安全审计的人力成本。目前默认使用 Claude Sonnet 5 模型,建议仅在隔离环境中运行以确保安全。
事件概述
GitHub Security Lab 推出了名为 Fuzzing Taskflow 的自主模糊测试管道,该管道基于 GitHub Security Lab Taskflow Agent 框架构建。这一创新旨在解决持续模糊测试中仍需大量人工介入的问题,如覆盖率监控、新 Harness 编写及崩溃分类等。通过引入大语言模型(LLM)代理,该工具实现了从代码分析到漏洞报告生成的全流程自动化。
核心功能与工作流程
Fuzzing Taskflow 专为 C/C++ 项目设计,用户只需提供 GitHub 仓库地址,系统即可自动执行以下操作:
- 环境准备与分析:自动安装必要软件(如 AFL)、克隆仓库,并利用 LLM 识别代码中最相关的函数作为入口点。
- Harness 生成与优化:为选定函数创建模糊测试目标(fuzz targets),编写初始 Harness,并根据覆盖率报告自动改进 Harness 质量。
- 执行与监控:运行 AFL++ 进行模糊测试,实时读取覆盖率数据。
- 结果处理:对产生的崩溃进行分类(triage),并为每个唯一 bug 自动生成漏洞报告。
整个流程无需人工“ babysitting ”(监护),实现了端到端的自主运行。
技术架构
该任务流由三层结构组成:
- Shell 驱动层:
run_fuzzing.sh脚本负责串联各个管道阶段。 - Taskflow YAML 配置层:每个阶段对应一个 YAML 文件,实质上是指导 LLM 代理执行特定任务的提示词(Prompts)。
- MCP 工具层:代理调用的具体执行工具,包括运行 AFL、编译 Harness、存储崩溃样本和读取覆盖率报告等。
使用指南与安全警告
快速启动:
用户可以通过 GitHub Codespace 快速体验该工具。访问 GitHubSecurityLab/seclab-taskflows-fuzzing 并运行以下命令:
bash
./scripts/fuzzing/run_fuzzing.sh <OWNER/REPO>
示例:
./scripts/fuzzing/run_fuzzing.sh tukaani-project/xz
对于快速烟雾测试,建议使用小型仓库,如 DaveGamble/cJSON。
重要安全提示:
该任务流直接在宿主机上运行 afl-fuzz、clang 以及由 LLM 选择的任意构建命令,未使用容器隔离。这意味着如果遭遇提示注入攻击,代理可能执行有害操作。因此,强烈建议仅在可丢弃的环境(如 Codespace 或临时虚拟机)中运行,且不要使用 elevated privileges(高权限)。
模型选择:
默认情况下,系统使用 Claude Sonnet 5,因其通过了内部所有安全测试且未触发输出限制。用户可通过修改 src/seclab_taskflows_fuzzing/configs/model_config.yaml 文件来切换其他模型。
