AWS - Codepipeline Privesc
codepipeline
codepipelineに関する詳細情報は次を参照してください:
pageAWS - DataPipeline, CodePipeline & CodeCommit Enumiam:PassRole
, codepipeline:CreatePipeline
, codebuild:CreateProject, codepipeline:StartPipelineExecution
iam:PassRole
, codepipeline:CreatePipeline
, codebuild:CreateProject, codepipeline:StartPipelineExecution
コードパイプラインを作成する際に、実行するためのcodepipeline IAMロールを指定できるため、それを妨害する可能性があります。
前述の権限に加えて、コードが保存されている場所にアクセスする必要があります(S3、ECR、github、bitbucket...)
私はこのプロセスをウェブページでテストしました。前述の権限は、コードパイプラインを作成するために必要なList/Getではなく、ウェブで作成するためには、codebuild:ListCuratedEnvironmentImages, codebuild:ListProjects, codebuild:ListRepositories, codecommit:ListRepositories, events:PutTargets, codepipeline:ListPipelines, events:PutRule, codepipeline:ListActionTypes, cloudtrail:<several>
も必要です。
ビルドプロジェクトの作成中に、実行するコマンド(逆シェル?)とビルドフェーズを特権ユーザーとして実行することができます。これが攻撃者が妨害するために必要な構成です:
?codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution
codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution
前述の権限で、コードパイプラインで使用されるロールと実行されるコマンドを変更することが可能かもしれません。
codepipeline:pollforjobs
codepipeline:pollforjobs
このAPIが呼び出されると、CodePipelineは、アクションがそのS3バケットへの入力または出力アーティファクトのためにそのS3バケットへのアクセスを必要とする場合、一時的なS3バケットの認証情報を返します。このAPIはまた、アクションで定義された任意のシークレット値を返します。
最終更新