[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 生态系统的规模和动态性。

方法论

  1. 静态调用图构建 – 传统的 JavaScript 静态分析器为目标包及其依赖构建保守的调用图。
  2. LLM 驱动的边缘解析 – 对于因动态特性(例如 eval、动态属性访问、高阶函数)而未解析的调用点,使用经过提示工程设计的 LLM(如 GPT‑4)进行查询,依据代码上下文和文档预测最可能的目标函数。
  3. 源/汇分类 – 同时让 LLM 为给定的 CWE(例如 XSS、SQLi)标记函数/对象为 (攻击者可控制数据进入的地方)或 (危险操作发生的地方)。
  4. 规范合成 – 将解析得到的边以及标记好的源/汇编译成 污点规范,描述数据在库中的流动方式。
  5. SAST 执行 – 将该规范输入 CodeQL,随后在代码库上执行完整的污点分析,标记潜在漏洞。
  6. 反馈循环 – 利用检测到的误报/漏报来优化提示,提升 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
Back to Blog

相关文章

阅读更多 »