@github: Dependabot 现在会在非安全版本更新的拉取请求前等待三天,让扫描器有时间捕获被污染的版本……

X AI KOLs Timeline 工具

摘要

GitHub 的 Dependabot 现在对非安全版本更新实施三天的冷却期,让安全扫描器有时间检测被污染的版本发布,从而帮助缓解供应链攻击。

Dependabot 现在会在非安全版本更新的拉取请求前等待三天,让扫描器有时间首先捕获被污染的版本发布。 这个冷却延迟的理由 ⬇️ https://t.co/6Ywh8VH4RH
查看原文
查看缓存全文

缓存时间: 2026/08/23 19:40

Dependabot 现在会在发布非安全版本更新的拉取请求前等待三天,以便安全扫描工具有时间先发现潜在的恶意软件包。

设置冷却期的原因 ⬇️ https://t.co/6Ywh8VH4RH


设置冷却期的原因:为何 Dependabot 现在在发布版本更新前会等待

来源:https://github.blog/security/supply-chain-security/the-case-for-a-cooldown-why-dependabot-now-waits-before-issuing-version-updates/ 2025年9月,攻击者通过钓鱼手段获取了一名 npm 维护者的凭证,随后发布了包含恶意代码的 chalk、debug 及约十几个其他软件包的新版本。这些包每周的总下载量超过20亿次。恶意代码会重写任何加载它的浏览器应用中的加密货币钱包地址。这些投毒版本在上线约两小时后被社区发现并由 npm 下架。

两小时的响应速度很快。然而,这时间也足以让自动化更新工具检测到新版本、创建拉取请求并将其呈现在你的团队面前,因为版本更新工具的设计就是在最新版本发布时立即拉取。

这种模式在供应链攻击中越来越常见。恶意代码搭载全新的版本发布,被推送到公共仓库,并在几分钟内被引入构建管道——甚至在人类或扫描工具有机会审查之前。

冷却期改变了这种计算方式。在采用新版本前等待几天,可以为维护者、安全研究员和自动化扫描工具提供时间来识别恶意版本并在其进入你的拉取请求之前将其下架。

对于非安全版本的更新,Dependabot 现在会在版本发布后至少等待三天才打开拉取请求。dependabot.yml 中的 cooldown 配置选项仍可控制此行为,因此你可以选择适合你项目的冷却参数。

案例研究与 GitHub Advisory Database 数据

当攻击者入侵热门软件包时,投毒版本的生命周期往往很短。它被发布、传播到任何安装它的地方,然后被发现,通常在几小时内。前面提到的例子只存活了两个小时。其他广泛使用的软件包也经历了类似的轨迹,例如 Solana web3.js (https://github.com/advisories/GHSA-jcxm-7wvp-g6p5)、Axios (https://github.com/advisories/GHSA-fw8c-xr5c-95f9) 和 ua-parser-js (https://github.com/advisories/GHSA-pjwm-rvh2-c87w) 的受损构建版本,均在发布后几小时内被发现。

更广泛地说,GitHub 通过 GitHub Advisory Database (https://github.com/advisories?query=type%3Amalware+ecosystem%3Anpm) 直接观察到这一模式。该数据库汇集了跨生态系统的开源安全公告。在截至2026年5月的一年里,该数据库发布了超过6,500条 npm 恶意软件公告,高于前一年的约6,200条,这意味着每天约有18个新收录的恶意 npm 包。冷却期让你避开这个初始窗口期,让一个版本在到达你这里之前接受一些审查。

为何是三天

针对热门软件包的已发布恶意软件往往会被快速发现。对2018年至2026年间21起广泛报道的供应链事件 (https://daniakash.com/posts/simplest-supply-chain-defense/) 的回顾发现了相同的模式:axios、Solana web3.js、ua-parser-js 和 Ledger Connect Kit 的恶意版本均在发布后数小时内被下架,冷却期本可以在任何人安装之前过滤掉大部分这类短命的发布。

三天作为默认值平衡了两个目标:它让你避开大多数此类攻击活跃的窗口期,同时不会不必要地拖延你的依赖更新。

其他社区成员也采用了三天的冷却期(尽管有些更长),因此这种默认行为使得 Dependabot 在开发者切换工具时保持一致性。

你始终可以通过 Dependabot 的 cooldown 配置选项设置更长或更短的窗口期。

纵深防御

冷却期是针对特定模式设计的:恶意版本被发布、传播并被快速发现。它对那些采取更长期策略的攻击作用有限,包括在发布中植入后门并使其休眠、维护者破坏行为或被入侵的构建系统。默认设置的目的是消除一个常见且时间敏感的途径,而不是替代你的其他防御措施。

由于冷却期仅针对快速移动的情况,它应该是多层防御体系中的一层。一些额外的措施包括:用 lockfile 锁定依赖项、在可能的情况下在 CI 中禁用安装脚本、限定构建管道中 token 的范围,以及在合并前审查更新。

如果你想为高度受信任的内部包与公共仓库设置不同的延迟时间,请查阅配置 Dependabot 的文档 (https://docs.github.com/en/code-security/concepts/supply-chain-security/about-the-dependabot-yml-file)。或者参考 Dependabot 配置选项参考 (https://docs.github.com/en/code-security/reference/supply-chain-security/dependabot-options-reference#cooldown) 了解完整的 cooldown 参数集。

后续计划

这是我们为强化所有在 GitHub 上构建项目的软件供应链所采取的多步措施之一。此功能默认启用,因此你无需更改任何设置即可激活。你也可以根据你的工作流进行调整。

请在 Dependabot 社区讨论区 (https://github.com/dependabot/dependabot-core/discussions/15368) 告诉我们它的表现如何。

作者

Carlin Cherry Carlin 是 GitHub 的产品经理,专注于 GitHub Advanced Security,特别是 Dependabot。她在软件工程和数据科学方面的背景为其数据驱动的产品管理方法提供了支持。她与伴侣和他们的狗 Cookie 一起住在华盛顿州,业余时间喜欢骑行和玩竞技类桌游。

相关文章

我们如何将恶意软件公告扩展到 npm 之外 (https://github.blog/security/supply-chain-security/how-we-took-malware-advisories-beyond-npm/)

GitHub 恶意软件公告不再局限于 npm。以下是我们如何将 OpenSSF 的恶意软件包数据整合到 Advisory Database 中,以及为何我们以偏执的态度构建该管道。

探索更多 GitHub 内容

文档

文档

掌握 GitHub 所需的一切,尽在一处。

前往文档 (https://docs.github.com/)

GitHub

GitHub

在 GitHub 上构建下一个项目,这里是任何地方、任何人构建任何东西的平台。

开始构建 (https://github.com/)

客户故事

客户故事

了解使用 GitHub 构建的公司和工程团队。

了解更多 (https://github.com/customer-stories)

GitHub Universe 2026

GitHub Universe 2026

加入我们于10月28-29日在旧金山或线上举办的 GitHub Universe,这是我们旗舰开发者活动,汇聚人、智能体和全球的代码。

立即注册 (https://githubuniverse.com/?utm_source=Blog&utm_medium=GitHub&utm_campaign=module_uni_26)

相似文章

引用 GitHub Changeling

Simon Willison's Blog

GitHub 的 Dependabot 现在默认在开启版本更新拉取请求之前有一个三天的冷却期,无需配置。

瓦解针对NPM和GitHub Actions的供应链攻击

Hacker News Top

GitHub宣布针对npm和GitHub Actions的新安全措施,以破坏常见的供应链攻击技术,包括对高影响力账户的预防性账户保护和更安全的默认检出设置。