GitHub、Dependabotにパッケージ公開後3日間の待機機能を追加――汚染パッケージの自動取り込みを防止
要点
-
GitHubが、依存関係自動更新ツール「Dependabot」にパッケージ公開から3日間待機する「クールダウン」機能を導入した。
-
クールダウン機能は日常的なバージョン更新にのみ適用され、緊急のセキュリティ脆弱性への対応はこれまで通り即座に実行される。
-
本機能は、悪意あるパッケージが検知されてレジストリから削除されるまでの隙を狙うサプライチェーン攻撃を防ぐことを目的とする。
-
設定ファイル「dependabot.yml」を使用することで、開発者はプロジェクトに合わせて待機期間を任意にカスタマイズできる。
-
VS Codeやnpmなど他の主要エコシステムでも同様の仕組みが導入されており、PyPIでも古いリリースへのファイル追加を制限する方針だ。
-
Microsoft傘下のソフトウェア開発プラットフォームであるGitHubは、プログラムの依存関係(外部ライブラリなどの関連情報)を自動更新するツール「Dependabot(デペンダボット)」において、新しいパッケージが公開されてからプルリクエスト(ソースコードの変更提案機能)を作成するまでに少なくとも3日間待機する「クールダウン」機能の導入を発表した。本機能は2026年7月27日に公表され、外部から混入する悪意あるパッケージ(汚染パッケージ)を開発者が不用意に取り込んでしまうリスクを低減することを目指している。
悪意あるパッケージの拡散を防ぐ「3日間」の猶予
Dependabotは、プロジェクトが使用する外部パッケージに更新があった際、自動で検知してアップデートを提案するツールである。今回の更新により、新バージョンが公開されてから最初の3日間は、自動的なプルリクエストの作成が保留されるようになった。
GitHubが待機期間として「3日間」をデフォルト値に設定した背景には、サプライチェーン攻撃(ソフトウェアの供給網を標的としたサイバー攻撃)の特性がある。悪意ある攻撃者が人気パッケージの改ざん版を公開した場合、その脅威が広く認知されてパッケージ管理サービスである「レジストリ(パッケージの保存・配信サーバー)」から削除されるまでの時間は短い。しかし、削除されるまでのわずかな時間であっても、自動更新ツールを通じて多くの開発プロジェクトがその「汚染されたパッケージ」を自動的に取り込んでしまうと、被害の範囲が急激に拡大してしまう。
GitHubは、この3日間という期間について、多くの攻撃が検知・対処されるまでの時間をカバーしつつ、依存パッケージの更新が不必要に遅れることを防ぐ「最もバランスの取れた期間(ゴールドィロックス・ゾーン)」であると説明している。
機能の仕様とカスタマイズ
この新しいクールダウン機能は、パッケージを最新状態に保つための日常的な「バージョンアップデート(Version updates)」にのみ適用される。一方で、すでに判明している脆弱性を修正するための「セキュリティアップデート(Security updates)」についてはクールダウンの対象外となり、脅威に迅速に対処するため、これまでと同様にアラートが検出され次第すぐにプルリクエストが作成される仕様となっている。
また、すべてのプロジェクトがデフォルトの3日間という設定に従う必要はない。GitHub内の設定ファイルである dependabot.yml の cooldown 設定項目を編集することで、開発者はそれぞれのプロジェクトのポリシーや開発スピードに合わせて、待機期間を任意に変更することが可能だ。
多層防御の重要性と広がる「待機期間」の防衛策
GitHubは今回の待機期間の導入について、単体で完璧な防御を実現するものではなく、あくまで「多層防御(複数のセキュリティ対策を重ねること)」の一環であると強調している。開発者が取るべきその他の対策として、パッケージの正確なバージョンを固定する「ロックファイル」の適用や、継続的インテグレーション(CI:ソフトウェアのビルドやテストを自動化する仕組み)環境におけるインストールスクリプトの実行無効化、ビルドパイプラインでのトークン権限の最小化、そして自動作成されたアップデートがマージされる前の入念なレビューなどを挙げている。
GitHubは「クールダウンは、悪意あるバージョンが公開され、拡散し、その後すぐに検知されるという特定のパターンに対して有効である」と指摘する。一方で、アップデート内に長期間にわたってバックドア(不正アクセスのための裏口)を休眠させておくような長期的な攻撃や、パッケージ管理者のアカウントが直接乗っ取られるサボタージュ攻撃、あるいはビルドシステムそのものが侵害されたケースなどに対しては、この機能だけでは防ぐことが難しいとしている。
このようなパッケージ公開後の待機期間による防衛策は、GitHubだけの取り組みではない。過去1年間の間に、Microsoftのコードエディタ「Visual Studio Code(VS Code)」の拡張機能自動更新や、プログラミング言語の実行環境である「Bun」、パッケージ管理ツールの「npm」「pnpm」「Yarn」、および「Ruby」のエコシステムなど、さまざまなプラットフォームにおいて同様の制御機能が順次発表されている。
さらに、プログラミング言語Pythonのパッケージ管理サイト「PyPI(Python Package Index)」でも新たな対策が発表された。PyPIでは、パッケージのリリースが公開されてから14日以上が経過した古いリリースに対して、開発者が新しいファイルを後から追加することを禁止する方針を決定した。これは、攻撃者が開発者の公開用トークンやワークフローを乗っ取ったとしても、過去に公開された信頼性の高い古いリリースを改ざん(汚染)できないようにすることを目的としている。