【问题标题】:Does NPM install run in a sandbox?NPM 安装是否在沙箱中运行?
【发布时间】:2017-08-23 17:39:28
【问题描述】:

基本上是什么阻止我发布带有任意安装脚本的 NPM 模块,当您npm install my-malicious-package 时,如果安装未在沙箱中运行,该模块会从您的计算机中窃取所有内容?

this article 中,他们建议大多数攻击者将他们的恶意脚本放在pre/post install 挂钩中。这很容易检测和过滤掉。我最关心的是可以运行任意包的实际安装。

【问题讨论】:

  • 不怕钩子,还怕什么? npm 中的漏洞?
  • @SLaks 不是npm 中的漏洞,而是发布到 npm 的包。

标签: security npm npm-install


【解决方案1】:

npm 本身运行包代码的唯一方式是在安装挂钩中。

如果您禁用安装挂钩,则在您将不受信任的代码实际加载到应用程序之前(此时您已被淹没),任何不受信任的代码都无法运行。

【讨论】:

  • 那么让我直说吧。执行我的脚本的实际install 的脚本是沙盒的吗?
  • @Kousha:不;该脚本是 npm 本身的一部分(它只是提取文件),并且是受信任的。
【解决方案2】:

我制作了node-safe,它允许你在使用nodenpmyarn时使用原生的macOS沙箱:

# Allow reading files, but only in the current folder
node --enable-sandbox --allow-read="./**" myscript.js

使用沙盒包管理器时,恶意依赖项无法再通过postinstall 脚​​本和其他方式危害您的系统。

【讨论】:

    猜你喜欢
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多