Wizのセキュリティ研究者によると、AWSのCodeBuildサービスにおける重大な設定ミスにより、クラウドプロバイダー自身のGitHubリポジトリを完全に乗っ取ることが可能となり、世界中のあらゆるAWS環境が危険にさらされていたという。
Wizの面々はこのサプライチェーン上の失態を8月にAWSへ開示し、クラウド大手は9月にこのセキュリティ問題を修正した。サイバー犯罪者や政府支援のならず者がこの設定ミスに気づいて悪用し、世界規模のメルトダウンを引き起こす前に手当てが間に合った形だ。
これにより、SolarWindsを上回る規模のサプライチェーン攻撃が防がれたという。今夜眠りにつく前に、近所の頼れるセキュリティ研究者に感謝しておくといい。
「この脆弱性は、AWSコンソール自体で使われている中核ライブラリ――クラウドの中枢神経――を侵害しました」と、Wizの脆弱性研究者Yuval Avrahami氏はThe Registerに語った。「SolarWindsは攻撃者に企業ネットワークへのアクセスを与えました。これは、管理者がインフラ全体を管理するために使うまさにそのインターフェース上で、攻撃者にコード実行を与え得たのです。」
なお、昨年3月にGoogleはWizを320億ドルで買収し、同社のクラウドセキュリティ製品をAWSと直接競合するGoogle Cloudプラットフォームへ統合する意向を発表している。この取引は米国規制当局に承認されたが、EUなどでの承認待ちだ。
コード(ビルド)を破る
公開に先立ちThe Registerと共有された分析で、Avrahami氏ら共著者は、CodeBreachと名付けたサプライチェーン脆弱性の詳細を示した。
これは、GitHubリポジトリに接続されることが多いAWSのマネージド継続的インテグレーション(CI)サービスCodeBuildに存在する。そして原因は、信頼できないプルリクエストから防御するはずのWebhookフィルター――ビルドをトリガーするためにイベントが満たすべきルール――に、2文字が欠けていたことにある。
Avrahami氏は、このセキュリティ上の脅威はAWSにとどまらない可能性があると付け加えた。
「この脆弱性はCI/CD(継続的インテグレーション/継続的デリバリー)セキュリティの盲点を突くもので、AWS固有の欠陥ではありません」と同氏は述べた。「この特定のリスク――自動化されたCI/CDビルドを通じて外部コントリビューターに過剰な権限を付与してしまうこと――は普遍的な課題です。GitHub Actions、Jenkins、あるいはAWS CodeBuildのようなクラウドCIサービスを使っていようと、主要なクラウドプロバイダーやテック企業は、オープンソースのサプライチェーンにおいてまさに同じリスクに直面しています。」
この脆弱性はCI/CDセキュリティの盲点を突くもので、AWS固有の欠陥ではない
Wizの報告書に掲載された声明で、AWSの広報担当者は、クラウドプロバイダーが問題を調査して修正し、研究者が特定した設定上の欠陥は顧客環境やAWSサービスのいずれにも「影響はなかった」と判断したと述べた。
「AWSはWizが発見したすべての問題を緩和するために複数の措置を講じ、同様の将来起こり得る問題から保護するための追加の手順と緩和策も実施しました」と声明は述べた。さらに声明は、「特定されたリポジトリにおける、アンカーされていない正規表現によるアクターIDバイパスという中核的問題は、最初の開示から48時間以内に緩和されました」と続け、AWSが「メモリ上にGithubトークンやその他の認証情報を含むすべてのビルドプロセスに対する追加の保護」も実施したと付け加えた。
しかし、まだある。AWSはまた、オープンソースプロジェクト全体で同様のセキュリティ欠陥が存在しないことを確認するため、他のすべての公開ビルド環境を監査したという。さらに、すべての公開ビルドリポジトリのログと関連するCloudTrailログも監査し、「Wiz研究チームが示したアンカーされていない正規表現の問題を、他のアクターが悪用した形跡はないと判断した」としている。
CIパイプラインを探る
WizチームがAmazonのCIパイプラインを調べ始めたのは、同様のCodeBuild問題に起因するAmazon QのVS Code拡張機能に対するサプライチェーン攻撃の未遂を受けてのことだった。
まず研究者らは、公開CodeBuildプロジェクトに接続されているGitHubリポジトリを探すことにした。
「公開に設定すると、CodeBuildプロジェクトは設定を一般公開のダッシュボード経由で露出し、ビルドをトリガーするあらゆるコミットのステータスに自動的にリンクされます。ダッシュボードからは、誰でもプロジェクトのビルドログと設定――使用されているWebhookフィルターの正確な内容を含む――を閲覧できます」と彼らは報告書に記した。
彼らは、プルリクエストでビルドを実行するよう設定され、稼働中のものを4つ見つけた。
- JavaScript向けAWS SDK(aws/aws-sdk-js-v3)
- AWS Libcrypto(aws/aws-lc)
- Amazon Corretto Crypto Provider(corretto/amazon-corretto-crypto-provider)
- AWS上のオープンデータ・レジストリ(awslabs/open-data-registry)
4つのプロジェクトはいずれも、承認済みGitHubユーザーIDの許可リストを提供する安全機能であるACTOR_ID webhookフィルターを使用していた。信頼されたユーザーだけがビルドをトリガーできる仕組みだ。
このフィルターは正規表現(regex)パターンだったが、アンカーされていなかった。「完全一致を要求する開始アンカー^と終了アンカー$がないと、正規表現エンジンはパターンに完全一致する文字列を探すのではなく、それを含むだけの文字列を探します」と研究者らは書いた。「つまり、承認済みIDを上位文字列として含む任意のGitHubユーザーIDが、フィルターを回避できたのです。」
無からリポジトリ管理者を作り出す
次にセキュリティ調査員たちは、既存メンテナーのIDを含む新しいGitHubユーザーIDを登録する方法を突き止めた。そのために彼らが使ったのはGitHub Appsで、ユーザーがアプリを作成できる(これにより、プルリクエストとやり取りできる対応するボットユーザーと、固有の確認URLが生成される)。また、アプリ作成リクエストを自動化できる機能も備えている。
Wizは、ACTOR_IDフィルターを回避できるユーザーIDを捕捉できることを期待して、GitHub Apps経由で200件のアプリ作成リクエストを自動化した。結果は成功で、WizはJavaScript向けAWS SDKリポジトリの信頼されたメンテナーIDを手に入れた。
研究者らは次に、正当な問題を修正するための通常の貢献に見えるプルリクエストを用意した。しかし内部にはペイロードを隠していた。ビルド環境で実行され、GitHub認証情報を抽出するよう設計されたNPMパッケージ依存関係である。
「その直後、私たちはaws-sdk-js-v3 CodeBuildプロジェクトのGitHub認証情報の取得に成功しました」と彼らは書いた。
彼らは権限を昇格させ、メインブランチへコードをプッシュし、プルリクエストを承認し、リポジトリのシークレットを持ち出せるリポジトリ管理者を作成した。これは「サプライチェーン攻撃への明確な道筋」を提供するものだという。
中級レベルの開発者なら誰でも実行できる。本当の課題はステルス性だ。誰かがライブラリのコードを点検した場合でも十分に無害に見えるペイロードを作り込むこと
攻撃者は、最新リリースが公開される直前(これは週次で行われる)にJavaScript SDKへ悪意あるコードを注入し、下流の全ユーザーに感染させることができる。そしてWizによれば、その攻撃範囲は「驚くべき」ものだ。クラウドセキュリティ企業は、クラウド環境の66%がJavaScript SDKを含んでおり、その利用者の一つがAWSコンソールだとしている。
研究者らはまた、同じ手法を用いて「複数」の他リポジトリでも管理者レベルの完全な権限を獲得した。その中には、JavaScript SDKのAWSによるプライベートミラーと思われるものも含まれていたという。
この時点で、乗っ取りの「潜在的影響」を認識したWizは、研究結果をAWSに引き渡した。
Avrahami氏によると、この種の攻撃に必要な技術的熟練度は「驚くほど低い」ものだった。
「この攻撃は高度なエクスプロイトではなく、リポジトリをフォークしてプルリクエストを提出する、といった標準的な開発者ワークフローに依存しています」と同氏はThe Registerに語った。「中級レベルの開発者なら誰でも実行できます。本当の課題はステルス性です。誰かがライブラリのコードを点検した場合でも十分に無害に見えるペイロードを作り込むことです。」
さらにこれは、「諜報を狙う国家主体」と「規模を狙うサイバー犯罪シンジケート」の双方に訴求する攻撃ベクターだとAvrahami氏は付け加えた。「リポジトリを掌握した後、彼らはSDKにバックドアを注入して数百万のアプリケーションから認証情報を収集したり、機密データを持ち出したり、あるいはAWSコンソール自体を標的にしてクラウドインフラを検知されずに操作したりできたでしょう。」 ®
翻訳元: https://go.theregister.com/feed/www.theregister.com/2026/01/15/codebuild_flaw_aws/