针对最近的各种攻击,我一直在用 pnpm 的 minimumReleaseAge=10080 (分钟) 或者 npm 的 min-release-age=7 (天,v11.10+)或者 bun 的 minimumReleaseAge = 604800(秒) 非常推荐,它是目前对抗 npm 供应链攻击非常实用有效的防御手段。

TL;DR · AI 摘要
Viking 推荐使用 pnpm、npm 或 bun 的包版本冷却机制来防御 npm 供应链攻击,强制新发布的包必须经过一定时间才能被安装,从而避开攻击窗口。
核心要点
- pnpm、npm 和 bun 提供了包版本冷却机制,分别设置为 10080 分钟、7 天和 604800 秒。
- 这些机制可以有效防止恶意包在短时间内被安装,降低供应链攻击的风险。
- TanStack 和 Next.js 近期遭遇了供应链攻击,攻击者发布了 84 个恶意版本。
结构提纲
按章节快速跳转。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- npm 供应链攻击防护
- 推荐方案
- pnpm
- minimumReleaseAge=10080 分钟
- npm
- min-release-age=7 天
- bun
- minimumReleaseAge=604800 秒
- 案例分析
- TanStack 攻击
- 84 个恶意版本
- Next.js 攻击
- 供应链攻击
金句 / Highlights
值得收藏与分享的关键句。
pnpm、npm 和 bun 提供了包版本冷却机制,分别设置为 10080 分钟、7 天和 604800 秒,可以有效防止恶意包在短时间内被安装。
攻击者以 zblgg 名义提交了一个看似正常的 PR 7378 到 TanStack/router 仓库,随后在 PR 上运行 CI 并合并。
TanStack 和 Next.js 遭遇了供应链攻击,攻击者发布了 84 个恶意版本,展示了攻击者的操作手法。
minimumReleaseAge=10080 (分钟) 或者 npm 的 min-release-age=7 (天,v11.10+)或者 bun 的 minimumReleaseAge = 604800(秒)
非常推荐,它是目前对抗 npm 供应链攻击非常实用有效的防御手段。" / X
Viking on X: "针对最近的各种攻击,我一直在用 pnpm 的 minimumReleaseAge=10080 (分钟) 或者 npm 的 min-release-age=7 (天,v11.10+)或者 bun 的 minimumReleaseAge = 604800(秒) 非常推荐,它是目前对抗 npm 供应链攻击非常实用有效的防御手段。" / X
Don’t miss what’s happening

Show translation
针对最近的各种攻击,我一直在用 pnpm 的 minimumReleaseAge=10080 (分钟) 或者 npm 的 min-release-age=7 (天,v11.10+)或者 bun 的 minimumReleaseAge = 604800(秒) 非常推荐,它是目前对抗 npm 供应链攻击非常实用有效的防御手段。 强制新发布的包必须冷却一段时间才能被安装。这样就能完全避开攻击窗口。
Quote

Viking
@vikingmute
·
May 12
TanStack 又被攻击了 https://tanstack.com/blog/npm-suppl y-chain-compromise-postmortem… 感觉现在这安全事件就没停过,Next 前几天也经常被搞。 攻击者发布了 84 malicious versions, 具体方式挺有趣的,让 AI 总结下: 1 攻击者以zblgg名义提交了一个看似正常的 PR 7378到 TanStack/router 仓库。 2 Github 在 PR 上运行 CI 3 PR
·
1
15
97
131