---
source: arxiv
url: http://arxiv.org/abs/2604.20179v1
published_at: '2026-04-22T04:50:48'
authors:
- Ronghao Ni
- Mihai Christodorescu
- Limin Jia
topics:
- llm-agents
- nodejs-security
- vulnerability-detection
- exploit-generation
- software-supply-chain
relevance_score: 0.93
run_id: materialize-outputs
language_code: zh-CN
---

# Taint-Style Vulnerability Detection and Confirmation for Node.js Packages Using LLM Agent Reasoning

## Summary
## 摘要
LLMVD.js 是一个基于 LLM 智能体的流水线，用于在不依赖专门的静态或动态污点分析引擎的情况下，查找并确认 Node.js 包中的污点型漏洞。根据摘录中的基准测试，它确认的漏洞远多于以往的 Node.js 分析工具，也在新发布的 npm 包中找到了经过验证的问题。

## 问题
- Node.js 包是软件供应链的重要组成部分，许多包里都有命令注入、代码注入、路径穿越和原型污染等污点型缺陷。
- 现有程序分析工具很难处理 JavaScript 的动态特性、类型信息不足、Node.js 原生行为、脆弱的解析和插桩流程，以及字符串和正则约束上的 SMT 求解。
- 只发现问题还不够；一个有用的系统还要用能运行的概念验证输入确认漏洞是否可利用，这样团队才能把真实漏洞和误报区分开。

## 方法
- 论文实现了 **LLMVD.js**，这是一个多阶段的 ReAct 风格智能体，读取包代码，搜索可疑数据流，提出候选漏洞，并把每个候选项交给后续阶段处理。
- 这个流水线有四个主要阶段：**Finder** 提出可能的漏洞，**Judge** 根据可达性和可利用性筛掉候选项，**Constraints Inferencer** 提取利用时必须满足的条件，**Exploiter** 生成并运行概念验证代码。
- 系统不再依靠专门的分析引擎推导污点路径，而是让 LLM 基于原始源代码推理，并配合代码搜索、文件检查和包执行等轻量工具。
- 确认阶段使用按漏洞类型划分的执行判定器，依据具体副作用来判断：路径穿越用标记文件，代码注入用标记函数，原型污染用对象属性探针，命令注入用清理后的标记工件。
- 这个设计先追求较高召回率，再通过有执行结果支撑的验证提高精度。

## 结果
- 在公开基准包上，**LLMVD.js 确认了 84% 的漏洞**，而摘录中提到的以往程序分析工具只有 **不到 22%**。
- 论文还说，LLMVD.js 的表现 **优于之前一个 LLM 加程序分析的混合方法（PoCGen）**，同时 **不需要漏洞标注，也不需要先前的漏洞报告**。
- 在 **260 个最近发布的包** 上，没有真实漏洞标签时，传统工具最多只为 **2 个包** 生成了经过验证的漏洞利用，而 **LLMVD.js 为 36 个包** 生成了经过验证的漏洞利用。
- 论文报告了 **36 个此前未公开的漏洞**，这些漏洞出现在最近发布的 Node.js 包中，作者已将它们披露给维护者，并收到了 **3 个维护者的确认**。
- 摘录没有给出按漏洞类型、数据集划分，或每个数字对应的完整基线名称。

## Problem

## Approach

## Results

## Link
- [http://arxiv.org/abs/2604.20179v1](http://arxiv.org/abs/2604.20179v1)
