GitHub 安全实验室在 2026 年 9 月 24 日的官方博客中,公开了一条由大模型智能体驱动的模糊测试流水线 Fuzzing Taskflow。只要把 GitHub 仓库地址丢给它,智能体就会自己分析构建系统、编写测试 harness、运行 AFL++、读覆盖率报告、改进测试用例,最后逐个研判崩溃并输出漏洞报告,全程不需要人工盯着。
一条命令开测,智能体包办全流程
跑起来很简单:打开项目仓库启动一个 codespace,执行 ./scripts/fuzzing/run_fuzzing.sh tukaani-project/xz 即可,参数就是目标仓库的 owner/repo。之后智能体自动完成装 AFL、克隆仓库、找入口函数、写 fuzz target 等准备工作。
这条流水线建立在 GitHub 安全实验室的 Taskflow Agent 框架上:流水线被表达成一组 taskflow YAML(告诉智能体每一步做什么的提示词),真正干活的是 MCP 工具——跑 AFL、编译 harness、存 crash、读覆盖率报告。设计上刻意分开:智能体只做判断,工具只做执行,状态都存在 SQLite 数据库里。
覆盖率反馈循环是核心
模糊测试最吃人工的环节,是"看覆盖率报告找盲区、补测试用例"。这条流水线把这两步交给了智能体:每轮先跑一阵 AFL,再把输入队列拿到专门编译的覆盖率二进制上重放,得到真实的行覆盖、分支覆盖报告,然后智能体读未覆盖分支做决策——定制新种子、改 harness 多调一个 API、往字典里加魔法常量,或判定冷门路径直接跳过。
时间预算每轮翻倍,从 30 秒一路加到 960 秒;连续两轮行覆盖率增长都不到 1% 就停,换下一个目标,不烧算力去挤最后零点几个百分点。针对 JSON、XML 等结构化输入,流水线还自带格式字典、自定义变异器和随覆盖率动态增长的词典;每个 harness 的语料跨轮次保留,中断重跑不丢进度。
从"一堆 crash"到"漏洞报告"
找到 crash 只算完成一半。流水线收尾会自动精简每个 crash、在 ASan 下重放抓堆栈、按"栈顶哈希"去重,再把历史已知 crash 在新版本上重放一遍看修没修;然后智能体沿调用链回溯到公开 API,为每个独立 crash 写一份 markdown 报告:定级(真正的漏洞、harness 自身 bug、OOM、超时等)、根因分析(精确到文件行号)、可达性论证、利用评估、一份 diff 格式的修复建议和回归测试草图。官方提醒:建议补丁都标了"需人工复核",是准备充分的起点,不是最终判决。
警告:别在主力机上直接跑
流水线会在宿主机上直接运行 afl-fuzz、clang 和大模型自己选的任意构建命令,中间没有容器隔离。官方明确要求:只在一次性环境里跑(codespace 或用完即扔的虚拟机),不要给高权限。默认用 Claude Sonnet 5,可在配置文件里换模型。跑起来后还有实时 HTML 仪表盘(8765 端口),能看到覆盖率趋势和 crash 热力图。