[Paper] 多智能体污点规范提取用于漏洞检测
发布: (2026年1月16日 GMT+8 05:31)
7 min read
原文: arXiv
Source: arXiv - 2601.10865v1
概览
本文介绍了 SemTaint,一个混合系统,将大语言模型(LLM)的语义推理与传统的静态分析相结合,自动为 JavaScript 包生成污点流规范。通过此方式,它克服了 JavaScript 静态应用安全测试(SAST)中长期存在的两大障碍——动态语言特性以及庞大且不断变化的 npm 生态系统——从而在大规模下实现更准确的漏洞检测。
关键贡献
- 多代理架构,将传统的静态分析器与大型语言模型(LLM)协同工作,以解决模糊的调用边并推断污点来源/汇。
- 自动提取每个包的污点规范(来源、汇、调用边以及库流摘要),无需手动编写规则。
- 与 CodeQL 集成,展示生成的规范提升了对真实漏洞的检测(在先前漏检的 162 个漏洞中检测出 106 个)。
- 发现四个新型安全缺陷,这些缺陷位于流行的 npm 库中,证明了该方法的实际安全价值。
- 实证评估,在大规模 npm 包语料库上进行,表明 LLM 增强的分析能够扩展到 JavaScript 生态系统的规模和动态性。
方法论
- 静态调用图构建 – 传统的 JavaScript 静态分析器为目标包及其依赖构建保守的调用图。
- LLM 驱动的边缘解析 – 对于因动态特性(例如
eval、动态属性访问、高阶函数)而未解析的调用点,使用经过提示工程设计的 LLM(如 GPT‑4)进行查询,依据代码上下文和文档预测最可能的目标函数。 - 源/汇分类 – 同时让 LLM 为给定的 CWE(例如 XSS、SQLi)标记函数/对象为 源(攻击者可控制数据进入的地方)或 汇(危险操作发生的地方)。
- 规范合成 – 将解析得到的边以及标记好的源/汇编译成 污点规范,描述数据在库中的流动方式。
- SAST 执行 – 将该规范输入 CodeQL,随后在代码库上执行完整的污点分析,标记潜在漏洞。
- 反馈循环 – 利用检测到的误报/漏报来优化提示,提升 LLM 在后续运行中的准确性。
结果与发现
- 检测提升: SemTaint 使 CodeQL 能够发现 106/162 已知漏洞,而仅使用 CodeQL 则会漏掉——提升了 65 %。
- 新漏洞: 系统在广泛使用的 npm 包中识别出 四个 先前未知的安全问题,均已负责任地披露并修复。
- 覆盖率: 在 500 个 npm 包的基准测试中,LLM 解决了约 78 % 先前模糊的调用边,大幅降低了调用图中“未知”部分的比例。
- 性能: 添加 LLM 步骤后,分析时间平均增加 1.8×,在使用普通云实例运行时仍在 CI/CD 流水线可接受的范围内。
实际意义
- 开发者工具: SemTaint 可以打包为现有 SAST 平台(例如 CodeQL、SonarQube)的插件,为团队提供即插即用的、更高质量的污点规范,而无需手工编写规则。
- CI/CD 集成: 适度的运行时开销使其能够在每个 Pull Request 上运行,适用于高风险的 JavaScript 项目,提前捕获漏洞。
- 供应链安全: 通过自动为第三方依赖生成规范,组织可以审计整个 npm 依赖树,而不是仅仅信任供应商提供的文档。
- 快速适配: 随着新库的出现,LLM 可以即时推断规范,使安全覆盖保持最新,而无需专门的规则编写工作。
- 跨语言潜力: 相同的多代理模式可以应用于其他动态生态系统(Python、Ruby),将影响力扩展到 JavaScript 之外。
限制与未来工作
- LLM 可靠性: 该方法依赖于 LLM 的正确性;偶尔的误分类可能导致误报或漏检真实的污点流。
- 提示工程开销: 为不同代码库编写有效提示仍是人工步骤,亟需自动化。
- 大规模 monorepo 的可扩展性: 对于常规 npm 包可行,但极大型代码库可能因大量 LLM 查询而导致更高延迟。
- LLM 本身的安全性: 使用云端模型会引发数据泄露担忧;未来工作可探索本地部署或蒸馏模型。
- 更广泛的评估: 将实验扩展到其他 SAST 工具、更多 CWE 类别以及非 JavaScript 语言,以验证通用性。
SemTaint 表明,将符号静态分析与现代 LLM 的语义直觉相结合不仅是研究好奇心——它是迈向更稳健、自动化安全的具体一步,适用于当今快速发展的 JavaScript 生态系统。
作者
- Jonah Ghebremichael
- Saastha Vasan
- Saad Ullah
- Greg Tystahl
- David Adei
- Christopher Kruegel
- Giovanni Vigna
- William Enck
- Alexandros Kapravelos
论文信息
- arXiv ID: 2601.10865v1
- 分类: cs.CR, cs.SE
- 出版日期: 2026年1月15日
- PDF: 下载 PDF