GitHubは、組織が悪意のある、あるいは侵害されたオープンソース依存関係を公開直後に自動的に取り込んでしまうリスクを減らすため、Dependabotのバージョンアップデートにデフォルトのクールダウン期間を導入しました。
この変更は、攻撃者がトロイの木馬化したパッケージバージョンを公開レジストリに公開し、悪意あるリリースが検出される前に自動アップデートツールを利用して拡散させるサプライチェーン攻撃の増加を受けたものです。
GitHub、Dependabotにクールダウン機能を追加
この新しいポリシーの下では、Dependabotは依存関係のバージョンが公開されてから少なくとも333日待ってから、通常のバージョンアップデート用のプルリクエストを開くようになります。リポジトリのメンテナーは、dependabot.yml設定ファイルのクールダウンオプションを使ってこの遅延期間を調整できます。
この柔軟性により、チームは信頼できるパッケージについては期間を短く設定したり、公開レジストリから取得する依存関係についてはレビュー期間を長く延ばしたりすることが可能になります。
重要な点として、GitHubはこのクールダウンがDependabotのバージョンアップデートにのみ適用され、セキュリティアップデートには適用されないことを明確にしています。既知の脆弱性がプロジェクトに影響する場合、セキュリティアップデートはこれまでどおり即座にアラートとプルリクエストをトリガーするため、組織が公開された脆弱性への必要なパッチ適用を遅らせる心配はありません。
セキュリティ監査サービス
この対策は、ソフトウェアサプライチェーン攻撃においてよく知られたパターンに対抗することを目的としています。例えば、2022年9月には、攻撃者がnpmのメンテナーに対してフィッシング攻撃を行ったと報告されています。
攻撃者は、「chalk」や「debug」など、人気の高いJavaScriptパッケージの悪意あるバージョンを公開しました。これらのパッケージは合わせて週間2220億件を超えるダウンロード数を記録しています。
注入されたコードはブラウザベースのアプリケーションを標的とし、暗号資産ウォレットのアドレスを攻撃者の管理するものに置き換えようとしていました。これらの悪意あるリリースは約2時間以内に削除されましたが、その短い期間だけでも自動化された依存関係管理システムが開発者のワークフローに取り込むには十分でした。
同様の事例は、axios、ua-parser-js、Solana web3.js、Ledger Connect Kitなどのパッケージが侵害されたケースでも発生しています。汚染されたビルドは多くの場合数時間以内に発見・削除されていましたが、公開期間が短かったからといって、新しいバージョンを即座に統合するよう設計された自動化を利用している組織へのリスクがなくなるわけではありませんでした。
GitHubによれば、同社のAdvisory Databaseには2022年5月までの1年間で6,500件を超えるnpmマルウェアに関するアドバイザリが記録されており、これは前年の約6,200件と比較しても増加しています。
これは1日あたり約18件の悪意あるnpmパッケージがカタログ化されている計算になり、レジストリを悪用したマルウェア活動が開発チームに影響を与えている規模の大きさを浮き彫りにしています。
この3日間のクールダウンは、多くの迅速に検出される悪意あるリリースが利用可能な状態にある期間を、自動アップデートがやり過ごせるようにすることを狙ったものです。
ただし、この保護策はすべての依存関係攻撃に対する完全な防御策ではありません。休眠状態のバックドア、信頼されたメンテナーの権限悪用、ビルドインフラの侵害、長期間検出されないマルウェアといった脅威については防ぎきれない可能性があります。
GitHubは、このクールダウン機能をより広範なサプライチェーンセキュリティ戦略の一つの層として捉えるよう推奨しています。組織はロックファイルを維持し、依存関係のプルリクエストをレビューし、CI/CDトークンの権限を制限し、可能な限りインストールスクリプトを制限し、公開パッケージの利用にポリシー制御を適用すべきです。
この新しいデフォルト設定は自動的に有効化されるため、Dependabotユーザーは急速に拡散する汚染リリースキャンペーンに対して即座に保護を得られる一方で、異なる運用ニーズを持つチームは設定をカスタマイズすることも可能です。
警告: 20を超える政府系サイトが企業や市民にマルウェアを配信していました。 攻撃に関する詳細な調査レポートはこちら から確認し、自組織への影響を点検してください。
翻訳元: https://gbhackers.com/github-adds-dependabot-cooldown/