Skip to main content
QUICK REVIEW

[论文解读] Code-based Vulnerability Detection in Node.js Applications: How far are we?

Bodin Chinthanet, Serena Elisa Ponta|arXiv (Cornell University)|Aug 11, 2020
Advanced Malware Detection Techniques参考文献 10被引用 4
一句话总结

本文提出一种面向 Node.js 应用的以代码为中心的漏洞检测方法,扩展了 Eclipse-Steady 以分析 npm 依赖中的 JavaScript 构造。该方法成功在 65 个 SAP 开发的应用中检测到 18 个存在漏洞的代码,通过静态分析修改后的程序构造识别出五个已知漏洞,证明了静态分析在动态 JavaScript 环境中的可行性。

ABSTRACT

With one of the largest available collection of reusable packages, the JavaScript runtime environment Node.js is one of the most popular programming application. With recent work showing evidence that known vulnerabilities are prevalent in both open source and industrial software, we propose and implement a viable code-based vulnerability detection tool for Node.js applications. Our case study lists the challenges encountered while implementing our Node.js vulnerable code detector.

研究动机与目标

  • 为解决 npm 漏洞检测中元数据检测的局限性,后者依赖于不完整或不准确的元数据。
  • 开发一种以代码为中心的方法,识别 Node.js 应用中实际的漏洞代码构造,减少误报和漏报。
  • 评估将静态分析技术应用于 JavaScript 动态、事件驱动代码库的可行性。
  • 理解为 Node.js 应用构建软件物料清单(BoM)的挑战,以及在依赖层级中检测漏洞构造的方法。
  • 为研究人员和实践者提供关于改进 npm 生态系统中漏洞检测的见解与经验教训。

提出的方法

  • 扩展 Eclipse-Steady 框架以支持 JavaScript,通过定义分层构造模型(包、模块、函数、类、方法、构造函数、对象)进行程序分析。
  • 提取并分析补丁中修改的程序构造,以识别 npm 依赖中的漏洞代码模式。
  • 为 Node.js 应用构建软件物料清单(BoM),以映射依赖及其构造,区分直接依赖与传递依赖。
  • 使用静态分析检测漏洞构造(如方法、函数)是否存在于应用代码中且可被调用。
  • 将该方法应用于 65 个 SAP 开发的 Node.js 应用的案例研究,以评估检测的准确性和性能。
  • 在不同抽象层级(如 MODU、FUNC、OBJT)评估检测效果,以评估粒度权衡。

实验结果

研究问题

  • RQ1通过分析实际代码构造而非依赖元数据,以代码为中心的方法能否有效检测 Node.js 应用中的已知漏洞?
  • RQ2在 JavaScript 的动态、基于原型的模型中,构建软件物料清单并检测漏洞构造的关键挑战是什么?
  • RQ3静态分析在检测事件驱动、异步 Node.js 应用中的漏洞代码模式方面有多有效?
  • RQ4传递依赖在引入漏洞代码方面所占比例有多大,如何更好地追踪它们?
  • RQ5将现有静态分析技术应用于现代 JavaScript 和 npm 生态系统的实际影响和局限性是什么?

主要发现

  • 以代码为中心的方法成功在 65 个 SAP 开发的 Node.js 应用中的 18 个中检测到五个已知漏洞,证明了静态分析在 JavaScript 环境中的可行性。
  • 大多数漏洞构造存在于传递依赖中(运行时 28 个,测试环境 27 个),表明开发者通常缺乏对间接依赖的可见性。
  • 绝大多数漏洞构造在模块(MODU)和函数(FUNC)层级被检测到,表明初始检测可能无需细粒度的对象(OBJT)和构造函数(CONS)分析。
  • 研究发现,截至 2019 年,npm 生态系统中报告了 681 个漏洞,凸显了该问题的规模以及对更优检测机制的迫切需求。
  • 该方法在映射 JavaScript 的多种函数声明风格和基于原型的继承方面面临挑战,表明需要增强语言建模能力。
  • 结果表明,静态分析工具必须跟上 ECMAScript 的年度更新和 Node.js 的快速演进,以保持准确性和相关性。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。