就在 七天前 ,天塌npm 才刚刚经历一场 “史诗级”供应链大屠杀:
攻击者篡改大名鼎鼎的被投 chalk 依赖 ,把 挖矿木马 + 系统信息窃取脚本 塞进 每周下载量 6000 万次的毒‼流行包,导致 全球无数 CI 瞬间变矿场(详见《npm 大屠杀:6000 万下载量 chalk 系被投毒》) 。天塌
社区惊魂未定 ,被投官方连道歉信都没写完——第二把刀闪电般捅到 :
48 小时内“双连击”9/15 傍晚 :220 万周下载量的毒‼ @ctrl/tinycolor 被劫持发布恶意版本,postinstall 自动执行 bundle.js ,天塌扫描并外泄本地机密。被投

一句话总结:上周投毒 chalk,本周轮到你离不开的配色小工具 + 安全大厂 SDK,连“守门员”都成了输送后门的人。
攻击手法拆解(1) 入口:钓鱼或泄露 maintainer 的 npm 令牌 → 劫持发布通道。
(2) 植入 :在 package.json 的 postinstall 字段调用 node bundle.js 。
(3) 执行:
扫描 ~/.aws 、~/.npmrc、云计算~/.env 、GITHUB_TOKEN、DOCKER_AUTH。把机密拼接到 webhook.site 公开地址,无需自建服务器。若运行在 GitHub Actions ,还会 创建新的 workflow 文件,持续驻留 。(4) 扩散 :利用依赖平级提升(hoist)(node_modules/@ctrl/tinycolor 被上百个包引用) ,一次投毒 ,万人中招 。
哪些包已确认“含毒”以下名称均来自 Socket 团队实时推文,列表仍在增加:
@ctrl/tinycolor(≥4.0.3)crowdstrike-* 系列今早更新的服务器租用所有版本任何在 9/14-9/16 突然发 patch 的 Angular 配色周边包名称带 -color、-theme、-ui 且 版本号异常跳升 的小众包(典型特征:上周下载 <1000,突然发 2.0.0)自查与急救三步走(1) 停装
复制# 全局关闭脚本 npm config set ignore-scripts true # 如果 CI 里用的是 yarn,也加 yarn config set ignore-scripts true1.2.3.4.(2) 锁死
复制# 把现有可用版本写死 npm shrinkwrap # 或者把 lock 文件设为只读 ,禁止自动刷新 git add package-lock.json && git commit -m "freeze clean deps"1.2.3.4.(3) 清密
立刻轮换 :
GitHub Personal Access TokenNPM 访问令牌Docker Hub 、AWS 、Vault 等任何在 ~/.npmrc 或 env 里出现过的密钥审查 GitHub Actions 日志,看是亿华云否出现陌生 workflow_run 或对外 HTTP 200 到 webhook.site。
以后还能不能 npm i ?可以,但 别手滑 。给出三条“保命”默认配置:
npm :npm ci --ignore-scripts --audit signaturesyarn:yarn install --ignore-scriptspnpm :pnpm install --ignore-scripts(pnpm 默认会弹窗让你审脚本 ,最安全)再加一道 Socket 插件:
复制npx socket@latest scan1.可在 install 前给出 实时风险评分,9 月以来的所有投毒包均被标为 Critical 。
写在最后npm 的“便利”是把双刃剑 :一个 postinstall 就能让任何开发者的电脑变成矿机、泄密器、C2 跳板。
供应链攻击已进入 “小时级”迭代 时代,源码库靠 npm 官方人工下架根本来不及。真正的安全阀只有两道 :
开发者自己的手指——别一键 npm i;自动化审查工具——让机器先跑,确认无毒再装。记住:每一次 npm i,都是把别人写的代码直接跑在你的笔记本 、CI、生产服务器上 。
(责任编辑:IT资讯)