AWS Codebuild - Token Leakage
Github/Bitbucketで構成されたトークンの回復
最初に、漏洩させる可能性のあるソース資格情報が構成されていないかを確認します:
Dockerイメージを介して
例えば、GitHubへの認証がアカウントに設定されていることがわかった場合、プロジェクトのビルドを実行するためにCodeBuildが特定のDockerイメージを使用するように設定することで、そのアクセス(GHトークンまたはOAuthトークン)を外部に持ち出すことができます。
この目的のために、新しいCodeBuildプロジェクトを作成するか、既存のプロジェクトの環境を変更してDockerイメージを設定できます。
使用できるDockerイメージはhttps://github.com/carlospolop/docker-mitmです。これは非常に基本的なDockerイメージで、https_proxy
、http_proxy
、SSL_CERT_FILE
の環境変数を設定します。これにより、**https_proxy
およびhttp_proxy
で指定されたホストのほとんどのトラフィックを傍受し、SSL_CERT_FILE
**で指定されたSSL証明書を信頼できます。
独自のDocker MitMイメージを作成してアップロード
リポジトリの手順に従ってプロキシIPアドレスを設定し、SSL証明書を設定してDockerイメージをビルドします。
メタデータエンドポイントへのリクエストを傍受しないように、
http_proxy
を設定しないでください。ngrok tcp 4444
のように**ngrok
**を使用してプロキシをホストに設定できます。Dockerイメージをビルドしたら、それをパブリックリポジトリ(Dockerhub、ECRなど)にアップロードします。
環境を設定
新しいCodeBuildプロジェクトを作成するか、既存のプロジェクトの環境を変更します。
プロジェクトが以前に生成されたDockerイメージを使用するように設定します。
ホストでMitMプロキシを設定
Githubリポジトリで指示されているように、次のようなものを使用できます:
mitmproxyのバージョンは9.0.1を使用しましたが、バージョン10では動作しない可能性が報告されています。
ビルドを実行して資格情報をキャプチャする
Authorizationヘッダーでトークンを見ることができます:
これは、aws cliから次のような方法で行うこともできます
HTTPプロトコル経由
この脆弱性は2023年2月20日の週(おそらく金曜日)にAWSによって修正されました。したがって、攻撃者はこれをもう悪用できません :)
CodeBuildで昇格された権限を持つ攻撃者は、構成されたGithub/Bitbucketトークンを漏洩することができます。また、OAuth経由で権限が構成されている場合は、コードにアクセスするために使用される一時的なOAuthトークンを漏洩させることができます。
攻撃者は、CodeBuildプロジェクトに環境変数http_proxyとhttps_proxyを追加し、それを自分のマシンを指すように設定できます(例:
http://5.tcp.eu.ngrok.io:14972
)。
次に、githubリポジトリのURLをHTTPSではなくHTTPを使用するように変更します。例: **http://**github.com/carlospolop-forks/TestActions
次に、プロキシ変数(http_proxyおよびhttps_proxy)が指すポートでhttps://github.com/synchronizing/mitmの基本例を実行します。
最後に、プロジェクトをビルドをクリックすると、資格情報がmitmポートにクリアテキスト(base64)で送信されます:
これで攻撃者は自分のマシンからトークンを使用し、それが持つすべての特権をリストアップし、CodeBuildサービスを直接使用するよりも簡単に(悪用)することができます。
最終更新