请选择 进入手机版 | 继续访问电脑版
查看: 1465|回复: 3

npm 12 默认禁用依赖脚本执行,应对 Shai-Hulud 供应链攻击

[复制链接]
发表于 2026-6-14 01:00:00 | 显示全部楼层 |阅读模式
GitHub 宣布,自 npm 12 版本起(预计 2026 年 7 月发布),npm install 将不再默认执行来自依赖的 preinstall、install、postinstall 脚本,除非用户在项目中显式允许。

这一调整直接回应了近期针对 npm 生态的供应链攻击浪潮,尤其是 TeamPCP 和 Shai-Hulud 自复制蠕虫利用默认脚本自动执行机制感染了数千名开发者。

受影响的范围还包括原生 node-gyp 构建(例如仅包含 binding.gyp 且无显式 install 脚本的包),以及来自 git、file 和 link 依赖的 prepare 脚本。此前 Shai-Hulud Miasma 攻击正是通过武器化的 binding.gyp 文件实施入侵。

开发者可先运行以下命令测试当前项目受影响的情况:
  1. npm approve-scripts --allow-scripts-pending
复制代码
该命令会将信任的包加入白名单并写入 package.json,其余包的脚本将被阻止。提交该 JSON 后,使用 npm 11.16.0 及以上版本的用户会在安装过程中看到警告。

此外,npm 12 还收紧了 Git 依赖和远程 URL 依赖的处理:Git 依赖(直接或传递)默认不再在 npm install 时解析,除非显式允许——此举堵住了以往即使加 --ignore-scripts 也能通过 .npmrc 覆盖 Git 可执行文件的代码执行路径。远程 URL 依赖(包括 HTTPS tarball)同样默认不解析,但可通过 --allow-remote 标志放行(该标志自 11.15.0 已可用)。

GitHub 建议开发者:先升级到 npm 11.16.0 或更高版本,运行正常安装并检查警告,使用 approve-scripts 命令批准信任的脚本并提交更新后的 package.json,这样在升级到 12 后只有已批准的脚本会继续运行。
回复

使用道具 举报

发表于 2026-6-14 08:00:00 | 显示全部楼层

Re: npm 12 默认禁用依赖脚本执行,应对 Shai-Hulud 供应链攻击

感谢分享!这个改动确实很有必要,Shai-Hulud 这类供应链攻击已经让 npm 生态吃尽苦头。默认禁用脚本执行能从根源上阻断很多危险路径,虽然开发体验上会多一步审批操作,但安全账显然更重要。另外,收紧 Git 依赖解析这点也补上了不少老漏洞,之前用 --ignore-scripts 还能绕过的隐患总算被堵住了。
回复 支持 反对

使用道具 举报

发表于 2026-6-17 09:20:00 | 显示全部楼层

Re: npm 12 默认禁用依赖脚本执行,应对 Shai-Hulud 供应链攻击

感谢分享这个重要更新!npm 12 这个改变确实很有必要,Shai-Hulud 供应链攻击的影响范围看起来不小,尤其是那些利用 binding.gyp 和默认脚本自动执行的漏洞,让很多开发者防不胜防。提前用 approve-scripts 把信任的脚本白名单化,再配合新版 npm 的强制阻断,感觉能大大降低类似攻击的风险。不过我也在想,对于需要依赖脚本编译原生模块的项目,迁移到 npm 12 后会不会增加一些配置工作量?希望官方能出一份更详细的迁移指南。
回复 支持 反对

使用道具 举报

发表于 2026-6-17 11:40:00 | 显示全部楼层

Re: npm 12 默认禁用依赖脚本执行,应对 Shai-Hulud 供应链攻击

这个改动很及时。之前Shai-Hulud那波攻击确实让人后怕,好多项目都是因为依赖安装时自动执行脚本中了招。默认关闭脚本执行,虽然可能会让一些依赖安装方式需要调整,但安全上的收益是实打实的。建议团队尽快试用 `npm approve-scripts` 把信任的脚本列出来,早适配早安心。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-7-17 01:27 , Processed in 0.030095 second(s), 17 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部