研究者が、AWSコンソールのサプライチェーンを脅かし、主要なAWS GitHubリポジトリを完全に乗っ取れる重大な脆弱性「CodeBreach」を発見した。
この欠陥により、AWSコンソールを支える基盤ライブラリであり、世界のクラウド環境のおよそ66%で利用されているAWS JavaScript SDKが侵害され得た。
この脆弱性は、SDKのビルドとリリースを担うAWS CodeBuildのCIパイプラインにおける微妙な設定ミスを悪用していた。
ビルドトリガーを制御する正規表現フィルタに、たった2文字が欠けていたことで、未認証の攻撃者がビルド環境へ侵入し、特権を持つGitHub認証情報を抽出して、重要なリポジトリへの管理者アクセスを得られる隙が生まれた。
根本原因は、信頼できないプルリクエストがビルドをトリガーしないようにするためのCodeBuild Webhookフィルタにおいて、アンカーされていない正規表現パターンが使われていた点にあった。
これらのフィルタは、承認済みのGitHubユーザーIDを許可リスト化するためにACTOR_IDパラメータを使用していたが、正規表現に開始・終了アンカーがなかった。そのため、承認済みメンテナのIDを部分文字列として含む新しいGitHubユーザーIDであれば、フィルタを回避できた。
研究者は、GitHubのIDが連番で割り当てられる仕組みを悪用し、信頼されたメンテナIDを含むIDを持つボットアカウントを登録した。
manifestフローを通じてGitHub Appの作成を自動化し、標的のIDを取得したうえで、aws-sdk-js-v3リポジトリに悪意あるプルリクエストを提出した。
汚染されたPRがCodeBuildの実行を引き起こし、研究者はプロセスメモリをダンプして、aws-sdk-js-automationアカウントのGitHub認証情報を盗み出すことができた。
これらの認証情報により、JavaScript SDKリポジトリおよび関連する複数の非公開リポジトリに対する完全な管理者権限が得られた。
攻撃者は、悪意あるコードをメインブランチへ直接プッシュしたり、侵害されたプルリクエストを承認したり、毎週のSDKリリース(数百万のアプリケーションとAWSコンソール自体に配布される)へバックドアを注入したりできた可能性がある。
同じACTOR_ID回避は少なくとも他の3つのAWSリポジトリにも影響しており、追加の自動化アカウント、さらにはAWS従業員の個人GitHub認証情報まで露出する可能性があった。
この攻撃は、2025年7月のAmazon Q VS Code拡張機能の侵害など、最近のサプライチェーン事案に続くものだ。同事案では、脅威アクターが同様のCodeBuild設定ミスを悪用し、本番リリースに悪意あるコードを注入した。
AWSは、Wizによる責任ある開示を受けて、特定されたすべての問題を迅速に修正し、CodeBuild内でプラットフォーム全体の強化策を実装した。
とりわけ注目すべき点として、AWSは新たに「Pull Request Comment Approval」のビルドゲートを導入し、信頼できないPRのビルドを実行する前に手動承認を必須とした。
影響を受けたリポジトリの下流ユーザーに直ちに必要な対応はないものの、AWSはすべてのCodeBuildユーザーに対し、新しいPR承認ゲートを有効化し、最小権限の細粒度Personal Access Tokenを使用し、同様の悪用を防ぐためにWebhookの正規表現パターンを開始・終了文字で適切にアンカーすることを強く推奨している。
翻訳元: https://cyberpress.org/aws-console-supply-chain-attack-github-hijackingcyber/