【Vul】CodeBuildの設定ミスによるフィルタバイパス

今回はこちらの記事から

概要

code buildにはgithubのコミットを受けてビルドする際に, 「だれからのpushなのか」を判定し、
特定のgithubアカウントによるコミットのみビルドを起動するように設定でき、
webhook Actor IDにGithubユーザーIDをリストアップする

(Actor ID(アクターID)とは、Webhookイベントを発生させた主体(ユーザー、アプリケーション、システムなど)を識別するためのユニークなID)

そこの設定値は正規表現で絞れるのだが、
^$ が抜けていた

例: 543678453

これはID: 543678453のユーザーからのコミットのみをビルドトリガにしているが、これが正規表現ならば、部分一致となってしまい, XHJKSD543678453SKL や 111543678453111 がフィルタを通ってしまう

実際確認された設定値

フィルタを抜かれるアカウントはコミット内容にて CIランナー上のgithub PATを漏洩できる -> mainブランチコードを汚染してサプライチェーン攻撃可能

GitHubは毎日約20万件の新しいIDを作成しています。このペースでいくと、6桁のメンテナーIDの場合、それを含む新しい長いIDが約5日ごとに登録可能になる

カウントアップで生成されるGithub IDでACTOR_IDのIDを含むユーザーを生成することは現実的

問題の本質

完全一致の想定が部分一致

設定ミスがあったcode buildプロジェクト

  • aws-sdk-js-v3
  • aws-lc
  • amazon-corretto-crypto-provider
  • awslabs/open-data-registry

この脆弱性は、攻撃者がCI/CD環境を標的とする理由を示す典型的な例です。
巧妙で見落とされやすい欠陥が、悪用されれば甚大な被害をもたらす可能性があります

正規表現の書き漏れはサプライチェーン攻撃に直結することがある

RiiiM

Author: RiiiM

Backend Developer

Share

Link is copied.