paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Efficient Static Vulnerability Analysis for JavaScript with Multiversion Dependency Graphs

面向 JavaScript 的高效静态漏洞分析:多版本依赖图
PLDI 8(PLDI)2024匹配度 4/10 · 论文属于静态程序分析与安全漏洞检测,工程实现和工业场景落地(npm 包漏洞)较强,与用户对程序分析、可扩展性及问题驱动研究的兴趣有一定重叠;但它不涉及 LLM/Agent、机器学习系统、浮点程序分析或贝叶斯程序分析,因此与核心研究方向匹配度有限。引用 13 inbox
Mafalda Ferreira, Miguel Monteiro, Tiago Brito, Miguel E. Coimbra, Nuno Santos, Limin Jia, José Fragoso Santos
crossref: 2026-09-10

AI 速览

一句话:提出多版本依赖图 MDG 与 Graph.js 扫描器,在 npm 包漏洞检测中同时降低漏报与分析耗时。

基于代码属性图(CPG)的静态漏洞检测在图中信息量与可扩展性之间存在权衡:信息过少会导致漏洞模式识别能力下降与分类错误,信息过多则影响可扩展性,ODGen 等先进工具在 Node.js 漏洞检测中已暴露扩展性瓶颈。本文探索 JavaScript 漏洞检测的 CPG 设计空间新方案,提出多版本依赖图(MDG),一种刻画对象及其属性在执行过程中状态演化的图结构;相较 ODGen 使用的图,MDG 更简洁却保留漏洞检测所需的关键信息。作者实现了 Graph.js,一个面向 npm 包、检测污点式与原型污染漏洞的 MDG 静态扫描器。评估表明,Graph.js 相比 ODGen 显著减少假阴性并缩短分析时间,还发现了 49 个此前未知的 npm 包漏洞。

问题
基于 CPG 的 JavaScript 静态漏洞检测需在图中包含多少信息上权衡:信息少则漏报多,信息多则损害可扩展性,ODGen 等先进工具因此遭遇扩展性瓶颈。
方法
提出多版本依赖图(MDG),以图结构刻画对象及其属性在执行过程中的状态演化,在更简洁的图上保留漏洞检测关键信息;并据此实现面向 npm 包的静态扫描器 Graph.js,检测污点式与原型污染漏洞。
评估
与先进工具 ODGen 进行对比评估,Graph.js 显著降低了假阴性与分析时间,并在 npm 包中发现 49 个此前未知的漏洞。
原文摘要(Abstract)

While static analysis tools that rely on Code Property Graphs (CPGs) to detect security vulnerabilities have proven effective, deciding how much information to include in the graphs remains a challenge. Including less information can lead to a more scalable analysis but at the cost of reduced effectiveness in identifying vulnerability patterns, potentially resulting in classification errors. Conversely, more information in the graph allows for a more effective analysis but may affect scalability. For example, scalability issues have been recently highlighted in ODGen, the state-of-the-art CPG-based tool for detecting Node.js vulnerabilities. This paper examines a new point in the design space of CPGs for JavaScript vulnerability detection. We introduce the Multiversion Dependency Graph (MDG), a novel graph-based data structure that captures the state evolution of objects and their properties during program execution. Compared to the graphs used by ODGen, MDGs are significantly simpler without losing key information needed for vulnerability detection. We implemented Graph.js, a new MDG-based static vulnerability scanner specialized in analyzing npm packages and detecting taint-style and prototype pollution vulnerabilities. Our evaluation shows that Graph.js outperforms ODGen by significantly reducing both the false negatives and the analysis time. Additionally, we have identified 49 previously undiscovered vulnerabilities in npm packages.

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@article{paperbot2510,
  title = {Efficient Static Vulnerability Analysis for JavaScript with Multiversion Dependency Graphs},
  author = {Mafalda Ferreira and Miguel Monteiro and Tiago Brito and Miguel E. Coimbra and Nuno Santos and Limin Jia and José Fragoso Santos},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {8},
  number = {PLDI},
  year = {2024},
  doi = {10.1145/3656394}
}