# AWS - Codepipeline Privesc

{{#include ../../../../banners/hacktricks-training.md}}

## codepipeline

codepipeline の詳細は次を参照:

{{#ref}}
../../aws-services/aws-datapipeline-codepipeline-codebuild-and-codecommit.md
{{#endref}}

### `iam:PassRole`, `codepipeline:CreatePipeline`, `codebuild:CreateProject, codepipeline:StartPipelineExecution`

code pipeline を作成すると、実行に使用する codepipeline IAM Role を指定できるため、それを奪取できる可能性がある。

前述の権限に加えて、**コードが保存されている場所へのアクセス** (S3, ECR, github, bitbucket...) が必要。

私はウェブページでこのプロセスを試したが、前述の権限は codepipeline を作成するために必要な List/Get 以外のもので、ウェブで作成するにはさらに次の権限が必要だった: `codebuild:ListCuratedEnvironmentImages, codebuild:ListProjects, codebuild:ListRepositories, codecommit:ListRepositories, events:PutTargets, codepipeline:ListPipelines, events:PutRule, codepipeline:ListActionTypes, cloudtrail:<several>`

build project の**作成中**に、実行する**コマンド**(rev shell?)を指定でき、ビルドフェーズを**特権ユーザー**で実行する設定にできる。これが攻撃者が奪取するために必要な構成である:

![](<../../../images/image (276).png>)

![](<../../../images/image (181).png>)

### ?`codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution`

これらの権限を使って、codepipeline で使用されるロールや実行されるコマンドを変更できる可能性がある。

### `codepipeline:pollforjobs`

[AWS mentions](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_PollForJobs.html):

> この API が呼び出されると、CodePipeline は、アクションが入出力アーティファクトのためにその S3 バケットへのアクセスを必要とする場合、パイプラインのアーティファクトを格納するために使用される S3 バケットに対する **一時的な資格情報を返します**。この API はまた、アクションに定義された **任意のシークレット値も返します**。

{{#include ../../../../banners/hacktricks-training.md}}
