包管理器要设冷却期,可预防大多数供应链攻击!
- 内容介绍
- 文章标签
- 相关推荐
2025 年 11 月的时候,William Woodruff 写了一篇文章 We should all be using dependency cooldowns,指出大部分供应链攻击都可以通过设置一个冷却期(即依赖自发布到被认为适合使用的时间窗口)来预防。
作者分析了 10 起近期攻击,8 起的攻击窗口小于 1 周(从本月的一连串供应链攻击中也可以看出来非常拟合),而其中知名的 xz-utils 事件是唯一超过 2 周的例外。
因此设置一个简单的冷却期就可以预防大多数供应链攻击了,例如说 Dependabot 就支持。

而本月初 Andrew Nesbitt 写了另一篇文章 Package Managers Need to Cool Down,这个月发生的一连串供应链攻击让这两篇文章的观点更加突出了。
这篇文章指出许多语言生态的包管理器已经迅速采取了措施,加入了「冷却期」的设置:

| 语言 | 包管理器 |
|---|---|
| JavaScript | pnpm、Yarn、Bun、npm、Deno 均支持 |
| Python | uv、pip(仅支持绝对时间戳) |
| Rust | RFC 进行中 |
下面是我自己个人的一些配置:
uv 参考文档,配置在 ~/.config/uv/uv.toml,配置为 exclude-newer:
exclude-newer = "1 week"
[pip]
exclude-newer = "1 week"
Bun 参考文档,配置在 ~/.bunfig.toml,配置为 minimumReleaseAge:
[install]
minimumReleaseAge = 604800 # 7 days in seconds
npm 参考文档,配置在 ~/.npmrc,配置为 min-release-age。需要 npm v11.10.0+,即 2026.2.11 以后的版本:
min-release-age=7
Dependabot 参考文档,配置在 .github/dependabot.yml,配置为 cooldown:
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index c965369..92329c7 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -9,6 +9,8 @@ updates:
day: "monday"
time: "09:00"
timezone: "Asia/Shanghai"
+ cooldown:
+ default-days: 7
open-pull-requests-limit: 5
assignees:
- "pilgrimlyieu"
@@ -40,6 +42,8 @@ updates:
day: "monday"
time: "09:00"
timezone: "Asia/Shanghai"
+ cooldown:
+ default-days: 7
open-pull-requests-limit: 5
assignees:
- "pilgrimlyieu"
@@ -72,6 +76,8 @@ updates:
day: "monday"
time: "09:00"
timezone: "Asia/Shanghai"
+ cooldown:
+ default-days: 7
open-pull-requests-limit: 3
assignees:
- "pilgrimlyieu"
网友解答:
--【壹】--: jql:
即依赖自发布到被认为适合使用的时间窗口
大部分都没有问题,就是有时候遇到bug需要使用最新的版本就尴尬了
--【贰】--:
好的,yay
--【叁】--:
其中部分包管理器我记得是可以有豁免的,抑或是紧急修复也是可以安装最新版本,具体可以了解包管理器相关文档。
--【肆】--:
如果大家都设置了冷静期那么是不是供应链攻击就更难被发现了?
--【伍】--:
我记得之前看过文章go也有类似的设置,不过似乎还在提案阶段
--【陆】--:
确实会有这种可能,但也有安全专家盯着,而且这算是一个比较简易又收获巨大的举措了。
2025 年 11 月的时候,William Woodruff 写了一篇文章 We should all be using dependency cooldowns,指出大部分供应链攻击都可以通过设置一个冷却期(即依赖自发布到被认为适合使用的时间窗口)来预防。
作者分析了 10 起近期攻击,8 起的攻击窗口小于 1 周(从本月的一连串供应链攻击中也可以看出来非常拟合),而其中知名的 xz-utils 事件是唯一超过 2 周的例外。
因此设置一个简单的冷却期就可以预防大多数供应链攻击了,例如说 Dependabot 就支持。

而本月初 Andrew Nesbitt 写了另一篇文章 Package Managers Need to Cool Down,这个月发生的一连串供应链攻击让这两篇文章的观点更加突出了。
这篇文章指出许多语言生态的包管理器已经迅速采取了措施,加入了「冷却期」的设置:

| 语言 | 包管理器 |
|---|---|
| JavaScript | pnpm、Yarn、Bun、npm、Deno 均支持 |
| Python | uv、pip(仅支持绝对时间戳) |
| Rust | RFC 进行中 |
下面是我自己个人的一些配置:
uv 参考文档,配置在 ~/.config/uv/uv.toml,配置为 exclude-newer:
exclude-newer = "1 week"
[pip]
exclude-newer = "1 week"
Bun 参考文档,配置在 ~/.bunfig.toml,配置为 minimumReleaseAge:
[install]
minimumReleaseAge = 604800 # 7 days in seconds
npm 参考文档,配置在 ~/.npmrc,配置为 min-release-age。需要 npm v11.10.0+,即 2026.2.11 以后的版本:
min-release-age=7
Dependabot 参考文档,配置在 .github/dependabot.yml,配置为 cooldown:
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index c965369..92329c7 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -9,6 +9,8 @@ updates:
day: "monday"
time: "09:00"
timezone: "Asia/Shanghai"
+ cooldown:
+ default-days: 7
open-pull-requests-limit: 5
assignees:
- "pilgrimlyieu"
@@ -40,6 +42,8 @@ updates:
day: "monday"
time: "09:00"
timezone: "Asia/Shanghai"
+ cooldown:
+ default-days: 7
open-pull-requests-limit: 5
assignees:
- "pilgrimlyieu"
@@ -72,6 +76,8 @@ updates:
day: "monday"
time: "09:00"
timezone: "Asia/Shanghai"
+ cooldown:
+ default-days: 7
open-pull-requests-limit: 3
assignees:
- "pilgrimlyieu"
网友解答:
--【壹】--: jql:
即依赖自发布到被认为适合使用的时间窗口
大部分都没有问题,就是有时候遇到bug需要使用最新的版本就尴尬了
--【贰】--:
好的,yay
--【叁】--:
其中部分包管理器我记得是可以有豁免的,抑或是紧急修复也是可以安装最新版本,具体可以了解包管理器相关文档。
--【肆】--:
如果大家都设置了冷静期那么是不是供应链攻击就更难被发现了?
--【伍】--:
我记得之前看过文章go也有类似的设置,不过似乎还在提案阶段
--【陆】--:
确实会有这种可能,但也有安全专家盯着,而且这算是一个比较简易又收获巨大的举措了。
