Taint-Style Vulnerability Detection and Confirmation for Node.js Packages Using LLM Agent Reasoning
作者: Ronghao Ni, Mihai Christodorescu, Limin Jia
分类: cs.CR, cs.AI, cs.SE
发布日期: 2026-04-22
备注: 19 pages, 6 figures
💡 一句话要点
提出LLMVD.js,利用LLM Agent推理检测Node.js包中的污点漏洞
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 污点分析 漏洞检测 大型语言模型 LLM Agent Node.js 软件安全 代码分析
📋 核心要点
- 现有程序分析方法难以应对Node.js动态特性和大量依赖,导致漏洞检测效率低下。
- LLMVD.js利用LLM Agent进行多阶段推理,无需专用分析引擎即可检测和确认污点漏洞。
- 实验表明,LLMVD.js在漏洞确认率和漏洞利用生成方面显著优于传统工具和混合方法。
📝 摘要(中文)
Node.js生态系统迅速发展,包含数百万个软件包,是现代软件供应链的关键组成部分,因此Node.js软件包的漏洞检测变得越来越重要。然而,由于动态JavaScript特性和大量的包依赖关系,传统的程序分析方法在这种环境中面临挑战。大型语言模型(LLM)的最新进展和基于LLM的Agent的新兴范式为手工设计的程序模型提供了一种替代方案。本文探讨了以LLM为中心、工具增强的方法是否能有效地检测和确认Node.js包中的污点漏洞(例如,任意命令注入)。我们实现了LLMVD.js,一个多阶段Agent流水线,用于扫描代码、提出漏洞、生成概念验证漏洞利用程序,并通过轻量级执行预言机验证它们。系统评估表明,在没有专门的静态/动态分析引擎进行路径推导的情况下,LLMVD.js在Node.js包中的污点漏洞检测和确认方面具有有效性。对于公共基准测试中的软件包,LLMVD.js确认了84%的漏洞,而先前的程序分析工具的确认率低于22%。它还优于先前的LLM-程序分析混合方法,且不需要漏洞注释或先前的漏洞报告。在对一组260个最近发布的软件包(没有漏洞真实信息)进行评估时,传统工具为少数(≤2)软件包生成了经过验证的漏洞利用程序,而LLMVD.js为36个软件包生成了经过验证的漏洞利用程序。
🔬 方法详解
问题定义:论文旨在解决Node.js软件包中污点漏洞(如命令注入)难以检测和确认的问题。传统程序分析方法在处理JavaScript的动态特性和复杂的依赖关系时面临挑战,导致漏洞检测效率低,误报率高。现有方法需要大量人工干预和漏洞标注,难以自动化和规模化应用。
核心思路:论文的核心思路是利用大型语言模型(LLM)的强大代码理解和推理能力,构建一个智能Agent,模拟安全专家的分析过程,自动检测和确认污点漏洞。通过将LLM与轻量级的执行预言机相结合,可以有效地验证漏洞利用程序,减少误报。
技术框架:LLMVD.js采用多阶段Agent流水线架构,主要包含以下阶段:1) 代码扫描:Agent扫描Node.js软件包的代码,识别潜在的污点源和汇。2) 漏洞提议:Agent根据代码上下文和污点流分析,提出可能的漏洞点。3) 漏洞利用生成:Agent生成概念验证(PoC)漏洞利用程序,尝试触发漏洞。4) 漏洞验证:Agent通过轻量级的执行预言机验证漏洞利用程序,确认漏洞的真实性。
关键创新:最重要的技术创新点在于将LLM Agent推理应用于Node.js污点漏洞检测和确认,无需依赖传统的静态或动态分析引擎。与现有方法相比,LLMVD.js能够更有效地理解JavaScript代码的语义,自动生成漏洞利用程序并进行验证,显著提高了漏洞检测的准确性和效率。
关键设计:LLMVD.js的关键设计包括:1) 精心设计的Agent提示词,引导LLM进行有效的代码分析和漏洞推理。2) 轻量级的执行预言机,用于快速验证漏洞利用程序,避免了昂贵的动态分析。3) 多阶段流水线架构,将复杂的漏洞检测任务分解为多个可管理的子任务,提高了整体的效率和可扩展性。具体参数设置和网络结构等技术细节在论文中未详细描述,属于未知信息。
📊 实验亮点
LLMVD.js在公共基准测试中确认了84%的漏洞,而传统工具的确认率低于22%。在对260个最近发布的软件包进行评估时,传统工具仅为少数(≤2)软件包生成了经过验证的漏洞利用程序,而LLMVD.js为36个软件包生成了经过验证的漏洞利用程序。LLMVD.js在漏洞确认率和漏洞利用生成方面显著优于传统工具和LLM-程序分析混合方法。
🎯 应用场景
该研究成果可应用于软件供应链安全、漏洞挖掘、安全审计等领域。通过自动化检测和确认Node.js软件包中的污点漏洞,可以有效降低软件安全风险,提高软件质量。未来,该方法可以扩展到其他编程语言和软件平台,为构建更安全的软件生态系统做出贡献。
📄 摘要(原文)
The rapidly evolving Node$.$js ecosystem currently includes millions of packages and is a critical part of modern software supply chains, making vulnerability detection of Node$.$js packages increasingly important. However, traditional program analysis struggles in this setting because of dynamic JavaScript features and the large number of package dependencies. Recent advances in large language models (LLMs) and the emerging paradigm of LLM-based agents offer an alternative to handcrafted program models. This raises the question of whether an LLM-centric, tool-augmented approach can effectively detect and confirm taint-style vulnerabilities (e.g., arbitrary command injection) in Node$.$js packages. We implement LLMVD$.$js, a multi-stage agent pipeline to scan code, propose vulnerabilities, generate proof-of-concept exploits, and validate them through lightweight execution oracles; and systematically evaluate its effectiveness in taint-style vulnerability detection and confirmation in Node$.$js packages without dedicated static/dynamic analysis engines for path derivation. For packages from public benchmarks, LLMVD$.$js confirms 84% of the vulnerabilities, compared to less than 22% for prior program analysis tools. It also outperforms a prior LLM-program-analysis hybrid approach while requiring neither vulnerability annotations nor prior vulnerability reports. When evaluated on a set of 260 recently released packages (without vulnerability groundtruth information), traditional tools produce validated exploits for few ($\leq 2$) packages, while LLMVD$.$js generates validated exploits for 36 packages.