AWSのサポートにCodeBuildのセキュリティ上の問題を報告したらすぐに修正してくれた話
こんにちは、株式会社スマートラウンドSREの@shonansurvivorsです。
当社はCDパイプラインにCodePipelineとCodeBuildを使用しており、CodeBuildではコンテナイメージのビルドやDBマイグレーション、ECSへのデプロイなどを行っています。
先日、CodeBuildの機能にアップデートがあり、そこで発見したセキュリティに関する事項を共有します。
CodeBuildからGitHub Actionsのアクションを呼び出した時の問題(現在は修正済み)
2023年7月8日に発表があり、CodeBuildからGitHub Actionsのアクション[1]を呼び出せるようになりました。
早速、とあるアクション(名前はfoo/example
とします)をCodeBuildから呼び出してみました。
buildspec.ymlの内容は以下となります。
version: 0.2
env:
shell: bash
phases:
build:
steps:
- uses: foo/example@v1
アクションを使う場合のbuildspec.ymlの構文は、
- phases.<phase_name>.commands
ではなく、
- phases.<phase_name>.steps[*].run
や
- phases.<phase_name>.steps[*].uses
のようにGitHub Actionsのjobと似た形式となるのがポイントです。
このbuildspec.ymlを使ったCodeBuildを起動したところ、無事にアクションを呼び出せたのですが、CodeBuildのログを見た時にあることに気付きました。
[Container] 2023/07/08 06:04:52 Run foo/example@v1
[Container] 2023/07/08 06:04:52 with:
[Container] 2023/07/08 06:04:52 github-token: 012345789abcdef.........................
# 略
[Container] 2023/07/08 06:04:52 env:
[Container] 2023/07/08 06:04:52 github_token: 012345789abcdef.........................
何やらトークンの値がマスクされずにログに出ている...
ここで、このアクションfoo/example
の処理内容を見てみます。
inputs:
github-token:
description: "Access token for using the GitHub API"
required: false
default: ${{ github.token }}
runs:
using: "composite"
steps:
- shell: bash
env:
github_token: ${{ inputs.github-token }}
run: |
# GitHubのAPIを使った処理
このアクションではGitHubのAPIを使用しています。
そのため、APIを使うためのトークンをinputとして渡せる仕様となっているのですが、デフォルトではgithub.token
を使用しています。
inputs:
github-token:
# 略
default: ${{ github.token }}
このgithub.token
の値はsecrets.GITHUB_TOKEN
と同じです。GitHubのAPIを操作するための一時的なクレデンシャルとなっています。
そして、GitHub Actionsではsecrets
の値はログには出力されない仕様となっています。
実際、先ほどのfoo/example
をCodeBuildではなくGitHub Actionsで呼び出すと以下のようにログがマスクされて出力されます。
Run foo/example@v1
with:
github-token: ***
# 略
env:
github_token: ***
AWSのサポートに報告
せっかくCodeBuildからアクションを呼び出せるようになったのに、このままではGITHUB_TOKEN
を使うような一部のアクションを使うことが難しくなってしまうので、AWSのサポートに報告をしました。
その後数回に渡って丁寧な回答があり、
- 事象の再現を確認できた
- 製品開発担当部署にフィードバックした
とのことで、問い合わせとしてはクローズしました。
その後
いつ修正が完了したのかはわかりませんが、数日経過後の2023年7月16日時点ではトークンの値がマスクして表示されるようになっていました!
[Container] 2023/07/16 13:47:24 Run foo/example@v1
[Container] 2023/07/16 13:47:24 with:
[Container] 2023/07/16 13:47:24 github-token: ***
# 略
[Container] 2023/07/16 13:47:24 env:
[Container] 2023/07/16 13:47:24 github_token: ***
これで安心してCodeBuildからアクションを使えます。
終わりに
以上、AWSのサポートにセキュリティ上の問題を報告したら、すぐに修正してくれた話でした。
何かAWSのサービスで「おや?」と思われる点を発見したら、サポートに報告していくのが良いですね。
-
GitHubのマーケットプレイスで公開されているようなカスタムアクションのこと。actions/setup-nodeなど。 ↩︎
Discussion