Send GitLab an email, push to main
【なぜ重要か】 GitLabの「メールでワークアイテムを作成する」機能に使われるメールアドレスには、UIの説明をはるかに超えた権限を持つトークンが埋め込まれている。このアドレスが一つ漏洩するだけで、攻撃者はコードのプッシュ・CI/CDパイプラインの実行・シークレットの窃取などが可能になる。さらに、GitLabのIPアクセス制限すら迂回できることが確認されており、「IPallowlistで守られてい...
【なぜ重要か】 GitLabの「メールでワークアイテムを作成する」機能に使われるメールアドレスには、UIの説明をはるかに超えた権限を持つトークンが埋め込まれている。このアドレスが一つ漏洩するだけで、攻撃者はコードのプッシュ・CI/CDパイプラインの実行・シークレットの窃取などが可能になる。さらに、GitLabのIPアクセス制限すら迂回できることが確認されており、「IPallowlistで守られているから安全」という前提が崩れる。
【ポイント】
glimt- トークンはアカウントが持つ全プロジェクト(公開・非公開を問わず)に対して有効であり、本質的にはアカウント全体スコープの個人アクセストークン(PAT)に相当する。-issue から -merge-request に変えると、.patch ファイルを添付することでブランチへのコミット(main を含む)とCI/CDジョブ実行が可能。.gitlab-ci.yml を改ざんしたパッチを送るだけで攻撃者のコードが被害者の権限で実行される。main ブランチへの反映が確認された。【まとめ】 GitLabのイシュー作成用メールアドレスは、単なる通知用の連絡先ではなく、アカウント全体に及ぶ強力なクレデンシャルである。GitLab.comの全アカウントおよびIncoming Emailを有効にした自己管理インスタンスが対象となる。直ちにIncoming Emailトークンをローテーションし、リポジトリ内にこの形式のアドレスが含まれていないかシークレットスキャンを実施すること。また、GitLabのIPallowlistはメール経由のコードプッシュをブロックしないことを前提にセキュリティ設計を見直すべきである。
原文を読む
Aikido Security Blog
英語で詳細な技術情報を確認