GitHub让AI自己找漏洞

GitHub Security Lab 推出基于 Taskflow Agent 的 AI 模糊测试工作流,让 Agent 从代码侦察、测试入口构造一直做到崩溃复现与报告整理。它降低了模糊测试的准备成本,但还不是无需人工审核的自动漏洞扫描器。
GitHub让AI自己找漏洞
截至 2026 年 9 月 24 日,GitHub Security Lab 近日推出了基于 Taskflow Agent 的新 AI 模糊测试工作流,试图让 Agent 自动完成代码侦察、测试入口构造、输入生成、测试执行、异常分析和漏洞报告整理。
这次更新的核心价值,不是又增加了一个会对代码发表评论的聊天机器人,而是把模糊测试中最依赖人工经验的准备工作,拆成一条可以重复运行的任务流。对于开发者来说,真正值得关注的问题也不是 Agent 能不能“自己找漏洞”,而是它能否稳定地产出可复现、可验证、带有影响分析的安全证据。
这次更新到底是什么
AI 模糊测试是利用大语言模型理解代码结构和输入语义,再结合传统运行时测试不断生成、变异并执行输入,以发现崩溃、异常行为或安全缺陷的方法。
传统模糊测试的执行环节并不神秘:准备一批种子输入,持续变异这些输入,再观察程序是否崩溃、超时或出现异常结果。真正昂贵的部分通常发生在测试启动之前,安全工程师需要先找到合适的入口,写出测试驱动,也就是通常所说的 harness,再处理依赖、编译参数、运行环境和初始语料。
Harness 是连接模糊测试引擎与被测代码的小型适配程序,它负责把模糊测试生成的输入送进目标函数、解析器或命令行程序。
Taskflow Agent 是 GitHub Security Lab 用来编排大语言模型、代码工具和安全分析步骤的 Agent 框架,而不是一个单独的漏洞检测模型。它把复杂的安全工作拆成多个离散任务,再按照任务之间的依赖关系执行、重试和传递上下文。
Taskflow 是以任务流形式描述安全分析过程的工作流配置,公开介绍显示,这类任务可以组织在 YAML 文件中。人类安全研究员负责定义目标、边界和判断标准,Agent 负责在任务节点之间读取代码、调用工具、提出假设并根据结果选择下一步。
从目前公开的信息看,新的模糊测试 taskflow 更接近 Security Lab 发布的实验性研究工作流,而不是已经默认启用在所有 GitHub 仓库里的安全开关。它不会自动扫描整个 GitHub,也不会在缺少构建命令、测试入口和运行权限的情况下凭空完成漏洞验证。
# 以下只是帮助理解执行逻辑的概念示意,不代表官方配置语法
workflow:
- inspect_target
- identify_input_boundary
- build_harness
- run_fuzzing
- reproduce_and_minimize
- generate_report
上面的流程可以概括 Taskflow Agent 的工作方式:大语言模型负责理解和决策,代码搜索、构建、执行和日志收集工具负责提供事实证据,模糊测试引擎负责进行高频输入探索。Agent 更像一个能够读懂代码的调度员,而不是替代模糊测试引擎本身。

一次模糊测试任务如何运行
1. Agent 先寻找输入边界
第一步不是立即生成随机字符串,而是判断外部输入究竟从哪里进入程序、经过哪些转换,最后抵达哪个高风险组件。
对于解析器来说,输入边界可能是文件内容、网络报文、压缩包或配置字段;对于命令行工具来说,输入边界可能是参数、标准输入或环境变量;对于自动化工作流来说,输入可能来自事件负载、分支名称、提交信息或用户可控的配置。
大语言模型在这一步的优势,是能够把函数调用、类型定义、测试用例、注释和构建脚本放在一起阅读。传统静态规则往往只能根据语法模式寻找候选点,而 Agent 可以提出更接近工程实际的判断,例如某个解析函数是否真的能接收到外部数据,某个校验函数是否在所有调用路径上生效。
2. Agent 尝试构造测试驱动
第二步是生成能够调用目标代码的 harness,并解决让它真正跑起来所需要的工程细节。
一个有效的 harness 不只是把随机字节传给函数,还要完成初始化、依赖加载、对象构造、错误处理和资源清理。如果目标函数依赖复杂的上下文,测试驱动还需要模拟最小可用的运行环境。对人工审计者来说,这些工作经常比发现可疑代码本身更耗时。
Taskflow Agent 的价值在于,它可以根据已有测试文件、类型信息和调用关系,先提出一个最小测试路径,再通过编译错误、运行日志和异常栈逐步修正。这个过程并不意味着第一次生成的代码就能直接使用,Agent 仍然需要经过构建和运行反馈的循环。
3. 模糊测试引擎负责高频探索
第三步是由模糊测试引擎持续生成和变异输入,Agent 则负责理解输入格式和选择下一轮任务。
语法完全随机的输入往往只能撞出浅层错误,而有结构的输入更容易进入深层逻辑。Agent 可以从样例文件、协议定义、序列化代码和现有测试中推断输入结构,再生成更有针对性的初始语料。
语料库是模糊测试使用的初始输入集合,它决定了测试一开始能覆盖哪些代码路径。一个好的语料库通常同时包含合法输入、边界输入和已经触发过特殊路径的最小样本。
Agent 还可以根据异常结果调整策略。例如,某类输入只触发格式校验失败,就没有必要继续大量重复;某个输入已经进入深层解析逻辑,则可以围绕它继续变异,尝试触发越界、资源耗尽、类型混淆或状态转换异常。
4. Agent 区分崩溃、环境问题和真实缺陷
第四步是分析测试结果,而不是把每一个非零退出码都当作漏洞。
模糊测试经常会遇到依赖缺失、超时、测试驱动错误、编译器报错和目标程序主动拒绝输入等噪声。Agent 可以结合日志、调用栈、触发输入和源码上下文,判断一次失败是否值得继续追踪。
这一步也是大语言模型最容易产生误判的地方。模型能够解释日志,却不等于它已经证明漏洞存在。一个看起来像内存错误的崩溃,可能只是测试驱动没有正确初始化对象;一个拒绝服务现象,可能只影响开发环境,也可能在服务器端形成真正的资源耗尽风险。
5. Agent 生成可复现报告
第五步是把候选结果缩减成开发者可以处理的安全报告。
高质量报告至少应该包含触发输入、复现命令、目标版本、调用栈、相关文件和行号、触发条件、可能影响以及修复建议。对于不稳定的崩溃,还需要记录运行环境、编译选项和重试结果。
如果 Agent 只能输出“这里可能存在漏洞”,它对安全团队的帮助非常有限。真正能节省时间的结果,必须让另一名工程师能够在独立环境中重新运行,并判断漏洞影响是否达到需要修复的等级。
它和 CodeQL、传统模糊测试有什么不同
CodeQL 是把源代码转换为可查询数据库,再通过查询规则分析数据流、调用关系和危险操作的静态分析工具。它擅长在大规模代码库中稳定地寻找已知模式,也能为每条告警提供从输入源到危险操作的路径解释。
传统模糊测试是通过实际运行目标程序,向它持续提供大量输入,并根据崩溃、超时、覆盖率或断言失败来发现异常行为的方法。它能获得动态证据,但往往需要人工准备入口和运行环境。
AI 模糊测试 taskflow 则把代码理解、测试驱动生成和运行结果分析串成一个循环。三者并不是替代关系,最合理的组合通常是先用 CodeQL 或人工审计缩小范围,再用 Taskflow Agent 生成动态验证路径,最后由安全工程师确认影响。
| 方案 | 主要观察对象 | 典型输出 | 优势 | 主要短板 | | --- | --- | --- | --- | --- | | CodeQL | 源代码结构、数据流和调用关系 | 静态告警、数据流路径 | 适合大规模扫描,结果相对稳定 | 可能存在误报,通常缺少运行时证明 | | 传统模糊测试 | 程序在大量输入下的运行行为 | 崩溃、超时、覆盖率变化 | 能发现实际运行路径上的异常 | 测试入口、依赖和语料准备成本高 | | Taskflow AI 模糊测试 | 代码语义、测试工作流和运行反馈 | harness、触发输入、复现报告 | 降低准备和分流成本,适合迭代探索 | 依赖模型判断,结果有不确定性,资源消耗需要控制 | | 人工安全审计 | 业务语义、权限边界和攻击前提 | 漏洞论证、修复方案 | 能处理复杂业务逻辑和隐含前提 | 速度慢,难以覆盖大规模代码 |
Taskflow Agent 最有价值的地方,是填补静态分析和动态测试之间的空白。CodeQL 可以告诉你某个数据流值得关注,模糊测试可以告诉你某组输入确实让程序异常,而 Agent 负责把这两件事之间的准备工作连接起来。
约 30 个漏洞意味着什么
GitHub Security Lab 同期公开的漏洞分流实践显示,从今年 8 月前后开始,相关 taskflow 已在 GitHub Actions 以及 JavaScript、TypeScript 项目中发现约 30 个真实世界漏洞。
这个数字值得关注,但不能直接解读为新模糊测试 taskflow 单独发现了 30 个漏洞。这里涉及的是 Taskflow Agent 在漏洞分流和安全研究中的整体实践,公开资料并没有把这些漏洞逐一归因到 AI 模糊测试工作流,也没有给出完整的覆盖率、漏洞召回率、误报率或每个漏洞消耗的计算资源。
漏洞分流 taskflow 解决的是另一类问题:CodeQL 已经产生了告警,但其中一部分误报来自仓库特有的校验函数、认证逻辑或数据清洗约定,这些规则很难全部编码成静态查询。大语言模型可以阅读仓库上下文,判断某个告警在当前项目里是否真的可达,从而帮助安全团队减少重复审查。
公开案例还显示,分流工作流中的模型主要使用文件获取和代码搜索等基础工具,并没有在初始 CodeQL 告警之外额外调用完整的静态或动态分析系统。这说明 Taskflow Agent 的一个重要方向,是用较少的工具权限完成上下文推理,而不是把所有安全工具简单堆在一起。
这组实践数据说明 Agent 已经能够进入真实安全研究流程,但它还不足以证明 AI 模糊测试在所有语言、所有漏洞类型和所有工程规模上都优于成熟工具。没有统一基准、执行次数和失败样本,就无法仅凭“发现了约 30 个漏洞”判断系统的整体性价比。
为什么模糊测试特别适合 Agent 化
模糊测试最适合 Agent 化的原因,是它同时包含代码理解、环境搭建、反复执行和结果归因四种不同工作。
单纯生成随机输入并不难,难的是知道输入应该送到哪里、怎样构造才不会在入口处被拒绝、怎样判断异常是否具有安全意义。大语言模型在阅读非结构化工程上下文方面,比固定规则更灵活,尤其适合处理测试文件、构建脚本和调用约定分散在不同目录的项目。
Taskflow 还把安全研究员的经验固化成了可复用的步骤。过去,一名研究员可能需要通过聊天记录、临时脚本和个人笔记才能完成一次测试;现在,这些判断可以被拆成检查目标、生成 harness、执行测试、复现异常和整理报告等任务,供其他项目重复使用。
这种变化的实际意义,是把模糊测试从一次性的专家操作,逐渐变成可审计、可迭代的安全流水线。任务流可以被版本控制,模型输出可以被记录,失败节点也能定位,而不是把所有结果都归因于模型“发挥不好”。
它仍然有明显边界
模型可能把可疑现象误判成漏洞
模型生成的解释不是漏洞证明。任何高风险结论都应该绑定最小复现样本、稳定的运行结果和人工影响分析,否则安全团队只是把审查工作从读代码转移到了审查模型报告。
模糊测试对状态依赖问题并不万能
模糊测试更擅长解析器、序列化、文件处理、命令行参数和输入校验等边界清晰的目标。涉及复杂认证流程、跨服务状态、竞态条件、业务授权和长期会话的问题,仍然需要专门的测试建模,不能期待 Agent 仅凭源码阅读就覆盖所有攻击路径。
自动执行不可信代码必须放在隔离环境
Agent 需要构建和运行目标项目,这意味着它可能接触恶意构建脚本、依赖安装脚本和专门用于诱导模型的仓库内容。运行环境应当使用一次性沙箱,禁止访问生产凭据,限制网络、文件系统和 CPU 使用,并把仓库中的注释和文档视为不可信输入。
结果必须具备可重复性
同一个模型在不同上下文、不同版本和不同随机种子下,可能生成不同的 harness 或输入。安全流程需要记录 taskflow 版本、模型版本、提示上下文、构建参数、初始语料、运行时环境和最终触发样本,否则后续很难确认问题是否已经修复。
成本和覆盖率仍然没有公开答案
目前公开资料没有提供新模糊测试 taskflow 的总执行次数、覆盖率变化、平均任务时长、单位漏洞成本或误报率。这些指标比一次成功演示更能说明它是否适合进入持续集成流程。
开发者现在应该怎么用
开发团队可以先把 Taskflow Agent 当成安全研究助手,而不是完全自动化的漏洞裁判。
第一,优先选择输入边界清晰、已有测试样例、构建过程可重复的组件,例如文件解析器、配置读取器、序列化逻辑、命令行工具和事件负载处理代码。这些目标更容易生成稳定的 harness,也更容易判断输入是否触发了有效路径。
第二,先建立传统工具的基线。CodeQL、现有单元测试和已有模糊测试结果应当先被记录下来,之后再比较 Agent 新增了哪些路径、减少了哪些人工步骤,以及是否引入了新的噪声。
第三,把复现条件设为任务完成标准。没有触发输入、调用栈和独立复现步骤的结果,只能标记为候选异常,不能直接进入漏洞修复统计。
第四,把 Agent 的权限限制在完成任务所需的最小范围内。代码读取、构建和运行权限应当分离,网络访问和凭据访问默认关闭,资源上限也应该提前设定。
第五,把模型输出纳入现有安全评审流程。安全工程师需要检查触发前提、攻击者可控程度、影响范围和修复建议,开发者则需要在修复后使用同一个最小样本回归验证。
判断:真正的升级是工作流,不是模型魔法
Taskflow Agent 的真正升级,是把安全专家的判断拆成可执行、可复用和可追踪的工作流,而不是让一个大模型突然获得了独立发现所有漏洞的能力。
它最可能率先产生价值的地方,是降低模糊测试的前置成本:帮团队找到输入边界,生成第一个可运行的 harness,整理失败日志,并把大量低价值异常筛掉。对于安全人员短缺、代码仓库规模较大但缺少专职模糊测试工程师的团队,这些工作已经足以改变工具的使用门槛。
但它短期内不会替代 CodeQL、成熟模糊测试引擎或人工审计。静态分析负责扩大覆盖面,动态测试负责提供运行时证据,人工审计负责确认业务影响,Agent 的位置更像是三者之间的编排层。
GitHub Security Lab 这次发布释放出的信号很明确:下一阶段的代码安全工具竞争,不只在于谁能写出更强的扫描规则,也在于谁能把发现、验证、复现和分流组织成一条稳定流水线。Taskflow Agent 已经把这个方向做成了可以讨论和复用的工程形态,但它距离真正意义上的无人值守漏洞发现,还差一套公开基准、稳定的复现率和可量化的成本数据。
参考来源
- GitHub Security Lab 官方 GitHub 组织页:GitHub Security Lab 的官方组织入口,可用于确认其安全研究项目、代码和公开实践。
- CodeQL 官方 GitHub 仓库:CodeQL 的官方开源仓库,用于了解本文所讨论的静态代码分析工具及其查询体系。



