查看: 154|回复: 0

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

[复制链接]
发表于 2 小时前 | 显示全部楼层 |阅读模式
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 后只有已批准的脚本会继续运行。
回复

使用道具 举报

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

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

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

官方核心成员

关注微信公众号

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

GMT+8, 2026-6-14 03:10 , Processed in 0.022761 second(s), 17 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部