この穴を発見したWizの研究者は、AWSのGitHubリポジトリが侵害される可能性があったと述べた。
AWSのコードビルドサービスにおける設定ミスにより、重要なAWSのGitHubコードリポジトリやアプリケーションが大量に侵害される可能性があったと、この問題を発見したWizの研究者は述べている。
脆弱性は、リポジトリの AWS CodeBuild のCI(継続的インテグレーション)パイプラインがビルドトリガーを処理する方法における、見落としやすい欠陥に起因していた。「正規表現フィルターで2文字が欠けていただけで、認証されていない攻撃者がビルド環境に侵入し、特権資格情報を漏えいさせることが可能になっていた」と研究者らは木曜日のブログで述べた。
問題の中心にあった正規表現(regex)フィルターは、ログ出力をスキャンしてシークレットを検出し、漏えいを防ぐためにそれらを隠す自動のパターンマッチング規則である。
この問題により、主要なAWSのGitHubリポジトリ、特にAWSコンソールを支える中核ライブラリであるAWS JavaScript SDKが完全に乗っ取られる可能性があった。
「これはサプライチェーン脆弱性の力とリスクを示しています」と、バグに関する報告書の共著者であるYuval Avrahami氏はCSOに語った。「まさにそれが、サプライチェーン攻撃が増加している理由です。小さな欠陥ひとつが、途方もなく大きな影響を持つ攻撃につながり得ます。」
AWSは昨年8月に脆弱性の警告を受けると、迅速に穴を塞ぎ、同様の攻撃の可能性を防ぐためにCodeBuildサービス全体でグローバルな強化策を実施した。この問題の詳細が明らかにされるのは、Wiz およびAWSによって今になってからである。
AWSはCSOに対し、「いかなる顧客環境やAWSサービスの機密性または完全性にも影響はなかったことを確認した」と述べた。また開発者に対し、AWS CodeBuildの利用におけるベストプラクティスに従うよう助言した。
しかしWizの研究者は、この製品を使用する開発者に対し、同様の問題からプロジェクトを守るための対策を講じるよう警告した。
発見
Wizは昨年8月、Amazon QのVS Code拡張機能に対するサプライチェーン攻撃の試みを受けて、この問題を発見した。攻撃者は設定ミスのあるCodeBuildプロジェクトを悪用して拡張機能のGitHubリポジトリを侵害し、メインブランチに悪意のあるコードを注入した。このコードはその後、ユーザーがダウンロードしたリリースに含まれた。攻撃者のペイロードは最終的にタイプミスのため失敗したものの、エンドユーザーのマシン上で実行はされており、設定ミスのあるCodeBuildパイプラインのリスクを明確に示した。
Wizの研究者は調査を進め、欠陥の核心である「アンカーされていない正規表現」による脅威アクターIDのバイパスを突き止め、AWSに通知した。Wizのブログに添えられた声明でAWSは、48時間以内にその穴を塞いだと述べた。
また、GitHubトークンやその他の資格情報をメモリ内に保持するすべてのビルドプロセスに追加の保護を加えるなど、さらなる強化も実施した。AWSは、AWSのオープンソース資産全体に同様の問題が存在しないことを確認するため、他のすべての公開ビルド環境も監査したと述べた。
さらに、すべての公開ビルドリポジトリのログおよび関連するCloudTrailログを調査し、「Wiz研究チームが示したアンカーされていない正規表現の問題を、他のアクターが悪用した形跡はないと判断した。AWSは、特定された問題がいかなる顧客環境やAWSサービスの機密性または完全性にも影響しなかったと判断した」としている。
カナダ拠点のリスク管理企業Deepcove Cybersecurityの最高技術責任者であるKellman Meghu氏は、CodeBuildを公開していない開発者にとっては大きな問題にはならないだろうと述べた。「しかし」と同氏は付け加えた。「人々が注意を怠れば、これが悪用され得ることは分かります。巧妙です。」
開発者はビルド環境を公開すべきではない
CSOは、開発者がビルド環境を公開しないよう確実にすべきだとMeghu氏は述べた。「GitHubのような公開ホスト型サービスを使うことは、企業のコード管理やデプロイには適切ではありません」と同氏は付け加えた。「プライベートなGitLab/GitHubサービス、あるいは自社のgitリポジトリサーバーを用意することが企業のデフォルトであるべきで、そうすれば、そもそも[脅威アクターが]リポジトリを見られない限り、この攻撃は不可能になります。リポジトリは企業が所有すべきであり、開発者が必要に応じて勝手に用意するようなものにすべきではありません。」実際、同氏は、ITや情報セキュリティのリーダーがコードリポジトリをセットアップすべきだと述べた。開発者は「システムの利用者であるべきで、最終的な所有者であってはならない」。
Wizは、すべてのAWS CodeBuildユーザーに対し、潜在的な侵害から自分たちのプロジェクトを守るために、以下の安全対策を実装することを強く推奨している。」
- 信頼できないプルリクエストが特権ビルドをトリガーしないようにするために:
- 新しい Pull Request Comment Approval ビルドゲートを有効化する;
- または、 CodeBuildホスト型ランナー を使用し、GitHubワークフロー経由でビルドトリガーを管理する;
- webhookフィルターに依存せざるを得ない場合は、正規表現パターンがアンカーされていることを確認する。
- CodeBuildとGitHubの接続を保護するために:
- 各CodeBuildプロジェクトごとに一意で、きめ細かなPersonal Access Token(PAT)を生成する;
- PATの権限を厳格に制限し、必要最小限にする。
- CodeBuild統合用に、専用の非特権GitHubアカウントの使用を検討する。
この記事は元々InfoWorldに掲載された。