オープンソースのCI/CD悪用検知ツール、認証情報窃取攻撃から防御

CI/CD Abuse Detectorは、継続的インテグレーション(CI)・継続的デプロイメント(CD)のパイプライン、ワークフロー、自動化設定に対する不審な変更を検知するために大規模言語モデルを活用するオープンソースプロジェクトです。リポジトリにはGitHub Actions、GitLab CI、Azure DevOps向けのドロップイン形式のテンプレートが含まれています。

Image

本プロジェクトは、ソフトウェアサプライチェーンの侵害において頻繁に見られる攻撃チェーンを標的としています。窃取された開発者の認証情報を悪用してワークフローファイルに変更が加えられ、CI環境に保存されたシークレットが搾取されます。この検知ツールは、改ざんされたワークフローが実行される前に、コードレビューの段階でこうした変更を捉えることを目的としています。

分析の仕組み

ワークフローは6つのステージで実行されます。プルリクエストで変更されたファイルは、まずCI/CD、ビルド、リリース、パッケージング設定のパスパターンに照合されます。一致したファイルはそれぞれ個別に差分(diff)が取られ、悪意ある変更を大量の無害な追記の中に隠すバイパス試行を抑制するため、各差分は10,000文字に制限されています。

事前スクリーニングステップでは、正規表現とメタデータのルールを適用して各差分にコンテキストラベルを付与します。その後、差分とラベルはClaude Code CLIを通じてClaudeに送信され、認証情報の搾取に焦点を当てた脅威モデルに基づいてコンテンツが分析されます。判定結果は定義済みのJSONスキーマに準拠します。

出力オプションとして、GitHubのステップサマリー、リポジトリのIssue、Webhook経由のSlack通知、設定した閾値に達した場合のElasticsearchへの判定結果送信が利用できます。オプションのフェイルゲートを設定すると、深刻度が別途設定した閾値を超えた場合にプルリクエストをブロックできます。デフォルトの動作はアラートのみです。

セットアップ要件

この検知ツールを導入するチームは、3つのファイルをリポジトリにコピーします。ワークフローYAMLファイル、プロンプトMarkdownファイル、および判定フォーマット用JSONスキーマです。認証にはAnthropicのAPIキー、またはエンタープライズ向けデプロイメントの場合はFoundryのエンドポイントURLとAPIキーのペアをリポジトリのシークレットとして保存する必要があります。

動作を調整する環境変数がいくつかあります:

  • CI_CD_ABUSE_ALERT_THRESHOLDはアラートの最低深刻度を設定し、デフォルトはhighです。
  • CI_CD_ABUSE_FAIL_ON_SEVERITYはブロックの閾値を制御し、デフォルトは空(アラートのみモード)です。
  • CI_CD_ABUSE_INCLUDE_PUSHESはmainおよびmasterブランチへの直接プッシュの分析を有効にし、デフォルトはtrueです。

テンプレートの前処理はbash、jq、grepに依存しています。Node経由でインストールされるClaude Code CLIが、CI環境に追加される唯一の分析依存関係です。Pythonはメンテナーツールの検証と単一ファイルのビルドスクリプトにのみ使用されており、公開されているワークフローの実行時パスにPythonは含まれていません。

ステータスとスコープ

このリポジトリは「Detecting CI/CD pipeline abuse with LLM-augmented analysis」と題されたElastic Security Labsの調査研究に基づくプロトタイプおよびリファレンス実装です。Elasticはこのプロジェクトを公式製品カタログ外のプロトタイプとして位置づけており、サポートは限定的でロードマップも定まっていません。

基盤となる手法に関心のあるチームは、リンク先のElastic Security Labsの記事や、リポジトリ内のアーキテクチャ、脅威モデル、スコアリングノートに関するドキュメントを参照することができます。脆弱性の報告は、SECURITY.mdに記載されているElasticの開示プロセスに従ってください。

CI/CD Abuse DetectorはGitHubで無料公開されています。

翻訳元: https://www.helpnetsecurity.com/2026/06/15/ci-cd-abuse-detector-open-source/

ソース: helpnetsecurity.com