ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

13项检测任务如何并行执行?深入sast-skills的多Subagent编排架构

13项检测任务如何并行执行?深入sast-skills的多Subagent编排架构

【免费下载链接】sast-skills

Collection of agent skills to find vulnerabilities inside your web/mobile apps.

项目地址:https://gitcode.com/gh_mirrors/sa/sast-skills
点击查看免费下载

sast-skills 是一组能让 LLM 编程助手变身 SAST 扫描器的 agent skills,用于自动查找 Web/移动应用代码中的漏洞。它最核心的设计是:在漏洞检测阶段为 13 项检测任务各启动一个 Subagent 并行执行,让大型代码库的扫描速度成倍提升。本文带你拆解这套多 Subagent 编排架构。

三阶段工作流总览:从侦察到报告

整个评估流程由入口编排文件 sast-files/AGENTS.md(Claude Code 使用 sast-files/CLAUDE.md)自动驱动,分三步进行:

阶段执行方式输出文件
① 代码库分析单线程(主会话内运行)sast/architecture.md
② 漏洞检测13 个 Subagent 并行sast/*-results.md
③ 报告生成单个 Subagent 汇总sast/final-report.md

整套架构的精髓在于基于文件的编排:每个阶段的输入输出都是 Markdown 文件,主 Agent 只需检查文件是否存在,就能决定执行还是跳过某个步骤。

第一步:为什么代码库分析必须单线程?

sast-files/AGENTS.md 中有一条关键说明:

Run the sast-analysis skill directly (this one stays in-session since later steps depend on reading its output).

sast-analysisskill 负责摸清技术栈、架构、入口点、数据流和信任边界,产出sast/architecture.md。由于后续所有检测任务都要读取这份"地图",它被特意保留在主会话中执行,并强制等待其完成——这是整个并行流程的前置依赖。

第二步核心:13个Subagent如何并行协作

sast-files/AGENTS.md 中的指令非常直接:

每项检查启动一个 Subagent,全部并行运行,每个 Subagent 负责一个专属任务。

所有 Subagent 共享同一套指令模板,只需替换 skill 名称和文件路径:

先读取sast/architecture.md获取上下文,然后运行指定的 SAST skill,将发现写入对应的结果文件,完成后清理该 skill 的中间侦察文件。

每个 Subagent 内部再执行两阶段检测:先用侦察(recon)阶段发现候选代码段,再在验证阶段确认漏洞是否真实可利用,最后把带证据链和修复建议的发现写入结果文件。

13项检测任务与结果文件对照

Skill检测目标结果文件
sast-sqliSQL 注入sast/sqli-results.md
sast-xss跨站脚本(XSS)sast/xss-results.md
sast-rce远程代码执行sast/rce-results.md
sast-ssrf服务端请求伪造sast/ssrf-results.md
sast-idor不安全直接对象引用sast/idor-results.md
sast-xxeXML 外部实体注入sast/xxe-results.md
sast-ssti服务端模板注入sast/ssti-results.md
sast-jwtJWT 不安全实现sast/jwt-results.md
sast-missingauth缺失认证/越权sast/missingauth-results.md
sast-pathtraversal路径穿越sast/pathtraversal-results.md
sast-fileupload不安全文件上传sast/fileupload-results.md
sast-businesslogic业务逻辑缺陷sast/businesslogic-results.md
sast-graphqlGraphQL 注入sast/graphql-results.md

💡 小提示:如果使用 Claude Code,sast-files/CLAUDE.md 还会额外并行运行sast-hardcodedsecrets(硬编码密钥检测),共计 14 项。

幂等重跑:文件已存在就跳过

并行编排中最实用的一处设计是基于输出文件的跳过机制。sast-files/AGENTS.md 为每项任务列出了跳过条件,例如:

Skip SQLi ifsast/sqli-results.mdalready exists.

这意味着:修复完部分漏洞后重新运行扫描,只会有尚未完成的任务被补充执行,不会重复劳动。同时每个 Subagent 完成后会清理自己的中间文件(如sast/sqli-recon.md、sast/rce-batch-*.md等),保持sast/目录整洁。

第三步:单个Subagent汇总最终报告

所有并行 Subagent 结束后,编排流程会再启动单个 Subagent:读取全部sast/*-results.md与sast/architecture.md,运行sast-reportskill,生成按严重程度和机密性影响排序的 sast/final-report.md,附带完整修复指导和动态测试步骤。

快速上手步骤

1️⃣ 将你的项目复制到sast-files/目录:

cp -r /path/to/your/project sast-files/

2️⃣ 用 AI 编程助手(推荐 Claude Code + Opus 模型,也支持 Codex、Opencode、Cursor 等)以sast-files为工作区打开项目

3️⃣ 直接输入 "Run vulnerability scan" 或 "Find vulnerabilities in this codebase",编排文件会自动接管整个流程

⚠️ 注意:如果你的项目自带CLAUDE.md或AGENTS.md,运行前需先移除,否则会与 sast-files/ 提供的编排文件冲突。

产出物一览

运行结束后,项目根目录会生成sast/文件夹:

文件说明
sast/architecture.md技术栈、架构、入口点、数据流
sast/*-results.md各漏洞类别的发现,含利用证明与修复建议
sast/final-report.md按严重程度排序的汇总报告

总结

sast-skills 的多 Subagent 编排架构可以归纳为三点:前置分析单线程保证上下文完整、检测阶段 13 路并行提速、基于 Markdown 文件实现解耦与幂等重跑。无需安装任何第三方工具,把这套 skills 放进你的 AI 编程助手,就拥有一个可重复运行的 SAST 扫描器。更多说明可参考 README.md。

【免费下载链接】sast-skills

Collection of agent skills to find vulnerabilities inside your web/mobile apps.

项目地址:https://gitcode.com/gh_mirrors/sa/sast-skills
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进