自動更新ツールはパッケージレジストリを監視し、新しいリリースが公開された瞬間にそれを検知して、チーム向けにプルリクエストを開きます。これはまさにそのために作られた仕組みです。ところが2025年9月、そのスピードが裏目に出ました。攻撃者があるnpmメンテナーの認証情報をフィッシングで窃取し、chalkやdebugをはじめとする十数個のパッケージに汚染されたバージョンを配布したのです。これらのパッケージは合わせて週に20億回以上ダウンロードされており、注入されたコードはそれを読み込んだブラウザアプリ内の暗号資産ウォレットアドレスを書き換えてしまうものでした。

悪意あるバージョンが公開されていたのは約2時間で、その後コミュニティが異変に気づき、npmが取り下げました。2時間という対応は迅速な部類に入ります。しかしそれでも、更新ツールがリリースを検知し、プルリクエストを作成して、悪意あるコードをレビュー担当者の目の前に差し出すには十分な時間でした。
GitHubのDependabotは現在、あえて待つようになっています。セキュリティ関連以外のバージョン更新については、リリースが公開されてから少なくとも3日間はプルリクエストの作成を保留します。dependabot.yml内のcooldownオプションでこの待機期間を制御できるため、プロジェクトごとに長さを調整可能です。
2種類の更新、共通する遅延
Dependabotが担う役割は2つに分かれます。セキュリティ更新は既知の脆弱性への対応です。利用中のパッケージに関するアドバイザリが公開されると、Dependabotはパッチ済みバージョンへの移行を促すプルリクエストを開きます。一方、バージョン更新は新しいリリースが公開されるたびに依存関係を最新の状態に保つためのものです。
今回の3日間の遅延が適用されるのはバージョン更新のみです。セキュリティ更新はこれまで通り、アドバイザリが公開された瞬間にプルリクエストが開かれます。これを遅らせてしまうと、すでに公になっている欠陥への修正を保留することになりかねないためです。
数時間で消えるマルウェア
人気パッケージの汚染版は、寿命が短い傾向にあります。公開され、それをインストールした先に広がり、たいていは数時間のうちに発見されます。Solana web3.js、Axios、ua-parser-jsの侵害バージョンも、いずれも同じ経過をたどりました。
GitHubのAdvisory Databaseには、2026年5月までの1年間で6,500件を超えるnpmマルウェアのアドバイザリが記録されています。
これは1日あたり約18件、新たに悪意あるnpmパッケージがカタログ化されている計算になります。待機期間(cooldown)を設けておけば、この最も危険な初動の期間を回避でき、リリースがある程度精査されてから手元に届くようになります。
なぜ3日なのか
過去数年間に広く報じられたサプライチェーン事案21件を調べたところ、毎回同じパターンが繰り返されていることがわかりました。悪意あるバージョンが公開され、数時間以内に誰かがそれに気づき、取り下げられるというものです。短い待機期間を設けておけば、誰かがインストールする前に、こうした公開のほとんどを弾けていたはずです。
3日という期間を設ければ、こうした攻撃の大半が発生する危険な窓を通り過ぎることができます。同時に、必要以上に依存関係の更新を止めてしまうことも避けられます。コミュニティの他のツールも同様の日数に落ち着いており、開発者がツール間を行き来しても挙動が一貫するようになっています。
待機期間(cooldown)では防げない攻撃
待機期間という仕組みは、マルウェアが素早く動くことを前提としています。Dependabotを担当するGitHubのプロダクトマネージャー、Carlin Cherry氏は、この仕組みで防げない攻撃を挙げています。「リリースに仕込まれたまま休眠しているバックドア、メンテナーによる妨害行為、あるいはビルドシステム自体が侵害されているケースなど、長期戦を仕掛けてくる攻撃に対してはほとんど効果がありません」。
つまり、待機期間はあくまで複数ある防御層の一つとして位置づけるべきものです。ロックファイルによる依存関係の固定、可能な限りCI環境でのインストールスクリプトの無効化、ビルドパイプライン内のトークンの権限範囲の限定、そしてマージ前の更新内容のレビューも欠かせません。
この遅延機能はデフォルトで有効になっており、プロジェクト側で待機期間を調整したり、信頼できる社内パッケージと公開レジストリとで異なる遅延を設定したりすることもできます。これにより、端末への侵入経路として多く使われてきた迅速な攻撃手段の一つを封じられます。とはいえ、サプライチェーンの残る部分への警戒は、依然として欠かせません。
翻訳元: https://www.helpnetsecurity.com/2026/07/27/github-dependabot-cooldown/