NPM 是否在沙箱中安装 运行?
Does NPM install run in a sandbox?
基本上是什么阻止我发布带有任意安装脚本的 NPM 模块,如果安装不是 运行 在沙箱中,当您 npm install my-malicious-package
从您的计算机窃取所有内容时?
在 this article 中,他们建议大多数攻击者会将他们的恶意脚本放在 pre/post
install
挂钩中。这很容易检测和过滤掉。我主要关心软件包的实际安装,其中任意可能是 运行.
npm 本身 运行 包代码的唯一方法是在安装挂钩中。
如果您禁用安装挂钩,则在您实际将其加载到您的应用程序中之前,任何不受信任的代码都无法 运行(此时您已被清理)。
我制作了 node-safe
,它允许您在使用 node
、npm
和 yarn
:
时使用本机 macOS 沙箱
# Allow reading files, but only in the current folder
node --enable-sandbox --allow-read="./**" myscript.js
使用沙盒包管理器时,流氓依赖项无法再通过 postinstall
脚本和其他方式危害您的系统。
基本上是什么阻止我发布带有任意安装脚本的 NPM 模块,如果安装不是 运行 在沙箱中,当您 npm install my-malicious-package
从您的计算机窃取所有内容时?
在 this article 中,他们建议大多数攻击者会将他们的恶意脚本放在 pre/post
install
挂钩中。这很容易检测和过滤掉。我主要关心软件包的实际安装,其中任意可能是 运行.
npm 本身 运行 包代码的唯一方法是在安装挂钩中。
如果您禁用安装挂钩,则在您实际将其加载到您的应用程序中之前,任何不受信任的代码都无法 运行(此时您已被清理)。
我制作了 node-safe
,它允许您在使用 node
、npm
和 yarn
:
# Allow reading files, but only in the current folder
node --enable-sandbox --allow-read="./**" myscript.js
使用沙盒包管理器时,流氓依赖项无法再通过 postinstall
脚本和其他方式危害您的系统。