跳到主内容
版本:10.x

缓解供应链攻击

有时 npm 包会被破坏并被恶意软件发布。 幸运的是,有 SocketSnykAikido 等公司能够及早发现这些受损软件包。 npm 源通常在几小时内删除受影响的版本。 然而,恶意软件发布和被检测到之间总会有一段时间,在此期间你可能会受到攻击。 幸运的是,你可以使用 pnpm 做一些事情来最大限度地降低风险。

从历史上看,大多数受损软件包都使用 postinstall 脚本在安装后立即运行代码。 为了缓解这种情况,pnpm v10 禁用依赖项中 postinstall 脚本的自动执行。 尽管可以使用 dangerouslyAllowAllBuilds 全局重新启用它们,但我们建议仅明确列出受信任的依赖项。 这样,如果依赖项过去不需要构建,那么在发布受损版本时它就不会突然运行恶意脚本。 尽管如此,我们仍然建议在更新带有 postinstall 脚本的受信任的包时要谨慎,因为它可能会受到损害

另一种降低安装受损软件包风险的方法是推迟更新依赖包。 由于恶意软件通常会很快被检测到,因此将更新延迟 24 小时很可能会阻止你安装错误版本。 minimumReleaseAge 设置定义了版本发布后 pnpm 安装之前必须经过的最少分钟数。 例如,将它设置为 1440 会等待一天, 或 10080 来在安装一个新版本等待一周。

不用说,你应该总是用锁文件锁定你的依赖关系。 将你的锁文件提交到你的资源库,以避免意外的更新。