工作流 · 第 2026-09-24 号

模糊测试交给智能体:它做决定,工具管执行

GitHub 安全实验室开源了一条面向 C 和 C++ 项目的自动模糊测试流水线:给它一个仓库名,它自己找入口、写测试桩、跑 AFL++、读覆盖率报告、改进测试桩、给崩溃分类并写出漏洞报告。设计上把决定交给智能体、把执行交给工具。作者同时提醒:它会在宿主机上直接运行模型选定的构建命令,只应放在用完即弃的环境里。

GitHub Blog AI2026-09-24约 4 分钟读完值得跟踪

编辑标为重要,发布已满 30 天,从立即关注降到这一档。

工作流编码智能体安全与对齐
本页目录11 节

记录

信号正文

#

它想替掉的那部分人工

持续模糊测试不是一劳永逸的。接入多年的项目仍然藏着严重缺陷,原因几乎总是同一个:得有人盯着覆盖率,给没人触达的代码写新的测试桩,再把崩溃逐个分类。作者想知道这部分人工有多少可以交给智能体。

三层结构

  • 一个脚本把各阶段串起来
  • 每个阶段一份任务流描述,本质上是告诉智能体这一步做什么的提示
  • 一组通过 MCP 提供的工具,真正去跑 AFL、编译测试桩、保存崩溃、读覆盖率

作者最在意的一条规则是职责分开:智能体负责决定,工具负责执行。智能体决定测什么、测试桩怎么写、下一个去追哪个覆盖缺口;工具只暴露基本操作。智能体从不直接调用 AFL 或编译器。所有状态都在一个 SQLite 数据库里,阶段之间只通过数据库传递。

每个测试桩会编译两次:一份带插桩用于引导模糊测试,一份带覆盖率统计用于事后回放队列、产出人读得懂的行覆盖和分支覆盖。

覆盖率反馈循环

每一轮,智能体让 AFL 跑一段时间,回放得到覆盖率报告,读未覆盖的分支,然后从几种动作里选一种:加一个能触达该分支的种子、改测试桩去调用更多接口、把判断条件里比较的常量补进字典,或者判断这是冷门错误路径而跳过。

时间预算每轮翻倍,从 30 秒到 960 秒,每个目标约 32 分钟。连续两轮的行覆盖率增量都低于 1 个百分点时,循环认为收益递减而停下。

分类与报告

循环结束后,每个崩溃被最小化、在内存检查器下回放取得调用栈、按栈顶去重;已知崩溃会在当前版本上重放,看上游是否已修。然后智能体读测试桩和崩溃函数,从公开接口回溯调用链,写出报告。

报告给出七种结论之一,其中最要紧的区分是:真正可从公开接口触达并利用的漏洞,还是测试桩自己的错误。每份报告附根因分析、可达性论证、修复补丁和回归测试草稿。补丁标着「需要复核」,作者明说:分析受限于模型对代码的理解,它确实会出错,结论应当看作给人准备的起点。

两处值得留意

运行环境:流水线在宿主机上直接运行模糊测试器、编译器和模型选定的任意构建命令,中间没有容器。作者的原话是,被提示注入的智能体原则上能做你这个用户能做的任何事,所以只应在一次性环境里、不带提升权限地运行。

模型选择:默认用 Claude Sonnet 5。理由是一些前沿模型会对输出加安全护栏,而它通过了全部内部测试。

文章没有给出这条流水线到目前为止找到了多少漏洞。

为什么是现在

为什么重要

#

这是一份写得足够细的参考设计:哪些事交给模型判断,哪些事用确定的工具去做,什么时候停。它要解决的不是模糊测试本身,而是模糊测试一直以来扩展不开的那部分人工。

背景

技术背景

#

模糊测试向程序喂大量变异出来的输入,靠覆盖率反馈去探索新的代码路径。测试桩是把被测函数包起来、让模糊测试器能调用它的一小段代码。结构化的文本输入很难靠按位变异撞出来,所以需要字典和针对格式的变异器。

按你的水平解读

让 AI 按你的水平解读这个信号

选择你的经验水平,AI 会现场生成一份为这个水平定制的解读。

关注人群

谁该关注

#
维护 C 或 C++ 开源项目、还没有接入模糊测试的维护者在把安全流程交给智能体的应用安全工程师设计长流程智能体、需要决定工具粒度的工程师
可能影响的领域
应用安全智能体工作流开源维护

下一步

学习路径

#
  1. 先读《工具使用与函数调用》:工具粒度怎样影响智能体的可靠性
  2. 读本站 Copilot 代码审查复盘:更好的工具为什么会让智能体更差
  3. 对照 DeepSeek DSec:攻防类任务为什么要更强的隔离
  4. 在一次性环境里拿一个小项目试跑,先看它的崩溃分类准不准

怎么学起

让 AI 生成一条学习路径

基于本页的相关知识和相关技能,AI 会现场生成一条从基础到应用的学习路径。

关系网络

在技术网络中的位置

#

当前技术与相邻技术、技能和背景知识的连接,点击节点可继续探索。

技术对比

对比另一项技术

选择另一项已发布技术,让 AI 现场生成一份相似点、差异点和适用场景的对比。

延伸思考

后续问题

#
  • 你的流程里,哪些步骤应该由模型判断,哪些应该写成确定的工具?
  • 让模型选定的命令在哪里运行,运行环境用完之后会被销毁吗?
  • 崩溃分类的结论由谁复核,复核的成本比人工分类低多少?

发布记录

收录于

#

收录这条信号的技术简报,新的在前;最后一行是它那一周的周回顾。标签是它在那一期所在的栏目。

来源参考

GitHub Blog AI

GitHub大型科技公司2026-09-24
打开原始来源https://github.blog/security/application-security/ai-powered-fuzzing-with-the-github-security-lab-taskflow-agent/