用途
sast-xxe 是一个专注于在代码库中检测 XML 外部实体(XXE)漏洞的安全评估技能。它通过三阶段流程(侦察、批量验证、合并)系统性地发现并确认 XXE 风险,适用于安全审计、代码审查和 DevSecOps 流程。
主要能力
- 侦察阶段:在代码库中查找所有未显式禁用外部实体解析的 XML 解析点,覆盖 Python、Java、PHP、.NET、Node.js、Ruby、Go 等语言的常见 XML 库。
- 批量验证阶段:以每批 3 个并行子代理的方式,追踪用户可控输入是否到达这些解析器,确认可利用性。
- 合并阶段:将各批次结果整合为一份统一报告。
- 安全模式识别:能够区分安全与不安全的解析配置,例如识别 defusedxml、lxml 的 resolve_entities=False、Java 的 disallow-doctype-decl、.NET 的 DtdProcessing.Prohibit 等防护措施。
- 漏洞类型覆盖:包括本地文件读取、SSRF、拒绝服务(Billion Laughs)、盲 XXE 带外数据泄露等。
使用方式
该技能以子代理方式运行,需要先存在 sast/architecture.md 文件(若不存在,需先运行分析技能)。执行时,将架构摘要作为上下文传递给所有子代理。
- 阶段一:启动子代理查找脆弱 XML 解析点,结果写入
sast/xxe-recon.md。 - 阶段间检查:读取侦察结果,若未发现脆弱点,则直接写入
sast/xxe-results.md并停止。 - 阶段二:仅当存在至少一个脆弱点时,启动批量验证子代理追踪用户输入。
- 阶段三:合并结果生成最终报告。
适用场景
- 对包含 XML 解析功能的代码库进行安全审计。
- 在 CI/CD 流程中集成 XXE 检测。
- 开发人员自查 XML 处理代码的安全性。
- 安全团队进行漏洞挖掘与验证。
限制
- 依赖
sast/architecture.md文件,需先运行分析技能。 - 仅针对 XXE 漏洞,不覆盖其他类型的安全问题。
- 需要人工确认最终结果,避免误报。
- 部分库(如 Go 标准库 encoding/xml)默认不解析外部实体,需结合第三方库判断。
- 具体支持的平台、收费模式、价格等信息暂未提供。