Skip to main content
QUICK REVIEW

[论文解读] You Can Run But You Can't Hide: Runtime Protection Against Malicious Package Updates For Node.js

Timo Pohl, Marc Ohm|arXiv (Cornell University)|May 31, 2023
Advanced Malware Detection Techniques被引用 4
一句话总结

本文提出了一种针对 Node.js 的运行时保护机制,通过静态分析包源代码以推断所需功能(例如模块和函数访问权限),然后利用修改过的 Node.js 解释器强制执行这些权限。该方法在安装时间平均开销低于 0.6 秒、运行时间平均开销低于 0.2 秒的情况下,成功阻止了 10 起历史供应链攻击中的 9 起。

ABSTRACT

Malicious software packages are often used in software supply chain attacks. Detecting these packages is a top priority, and there have been many academic and commercial approaches developed for this purpose. In the event of an attack, it is essential to have resilience against malicious code. To address this issue, we introduce a runtime protection for Node.js that automatically limits the capabilities of packages to a minimum level. The implementation and evaluation of the detection and enforcement of necessary capabilities at runtime was conducted against known malicious attacks. Our approach successfully prevented 90 % of historical attacks with a median install-time overhead of less than 0.6 seconds and a median runtime overhead of less than 0.2 seconds.

研究动机与目标

  • 解决 Node.js 生态系统中因恶意包更新引发的软件供应链攻击日益增加的威胁。
  • 提供自动化的运行时最小权限功能强制执行,以防止恶意代码执行。
  • 通过基于源代码静态分析自动生成并强制执行能力策略,减少攻击面。
  • 评估该方法在性能开销、检测准确率以及对已知恶意更新的抗性方面的表现。

提出的方法

  • 系统使用抽象语法树(AST)对可信版本的包及其依赖项进行静态分析,以推断所需的模块和函数。
  • 生成一个能力策略,作为所需模块和成员的白名单,存储在策略文件中。
  • 通过修改过的 Node.js 解释器在运行时强制执行策略,仅保留允许的成员。
  • 系统支持两种模式:基于模块级别的粗粒度访问控制和基于成员级别的细粒度访问控制(通过成员访问追踪实现)。
  • 通过修改 require 函数,在运行时实施策略强制执行,基于白名单限制访问。
  • 该方法利用静态分析检测了程序实际能力的 92%,并通过工程优化手段降低了误报率。

实验结果

研究问题

  • RQ1对源代码进行自动化静态分析是否能可靠地推断出 Node.js 包所需的最小能力集合?
  • RQ2基于推断能力的运行时强制执行机制在多大程度上可以防止已知的恶意包更新?
  • RQ3在安装时间和执行时间成本方面,策略生成和运行时强制执行的性能开销是多少?
  • RQ4该方法在通过阻止未使用或恶意添加的能力来减少攻击面方面的有效性如何?

主要发现

  • 该系统通过阻止需要未经授权能力的恶意代码,成功防止了 10 起已知历史供应链攻击中的 9 起。
  • 安装时间的中位数开销低于 0.6 秒,运行时间的中位数开销低于 0.2 秒,表明性能影响极低。
  • 粗粒度模式下,78.82% 的可用能力未被使用;细粒度模式下,96.56% 的可用能力未被使用,表明攻击面显著减少。
  • 策略生成耗时 0.52 至 0.60 秒,策略文件体积小(1.2 kB 至 2.98 kB),启动时间额外增加仅 198 ms。
  • 该方法通过基于 AST 的分析检测到 92% 的实际程序能力,尽管仍存在误报问题,需进一步优化。
  • 该系统对通过添加新能力来改变包行为的攻击有效,但受限于 ESM、其他导入方式以及绕过模块级限制的 C++ 插件。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

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