mcpField
D
detecting-supply-chain-attacks-in-ci-cd

detecting-supply-chain-attacks-in-ci-cd

github.com/mukul975セキュリティ35.2k134 回インストール8 週間前に更新
リポジトリ

detecting-supply-chain-attacks-in-ci-cd について

SOC アナリストやセキュリティエンジニア向けに、CI/CD のサプライチェーンリスクを調べるスキルです。GitHub Actions の依存関係、インジェクション経路、権限設定を確認します。

主な機能

  1. 01GitHub Actions YAML の解析
  2. 02未固定バージョンの Actions の検出
  3. 03式を介したスクリプトインジェクションの検出
  4. 04トークン権限とシークレットの確認

活用シーン

  1. 01CI/CD サプライチェーンインシデントの調査
  2. 02脅威ハンティングルールの作成
  3. 03ワークフローリスク監視の網羅性確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill detecting-supply-chain-attacks-in-ci-cd

インストール後、Claude Code で/detecting-supply-chain-attacks-in-ci-cdを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
references/
api-reference.md
scripts/
agent.py

詳細

CI/CD におけるサプライチェーン攻撃の検出

使用する場面

  • CI/CD におけるサプライチェーン攻撃の検出が必要なセキュリティインシデントを調査するとき
  • この分野の検出ルールや脅威ハンティング用クエリを作成するとき
  • SOC アナリストがこの種の分析に向けた体系的な手順を必要とするとき
  • 関連する攻撃手法に対するセキュリティ監視の対応範囲を検証するとき

前提条件

  • セキュリティ運用の概念とツールに関する知識
  • 安全に実行できるテスト環境またはラボ環境へのアクセス
  • 必要な依存関係をインストールした Python 3.8+
  • テスト活動に必要な適切な許可

手順

GitHub Actions の YAML を解析し、ピン留めされていない依存関係、スクリプトインジェクションの経路、シークレットの露出を確認して、CI/CD ワークフローファイルをスキャンし、サプライチェーンのリスクを調べます。

import yaml
from pathlib import Path

for wf in Path(".github/workflows").glob("*.yml"):
    with open(wf) as f:
        workflow = yaml.safe_load(f)
    for job_name, job in workflow.get("jobs", {}).items():
        for step in job.get("steps", []):
            uses = step.get("uses", "")
            if uses and "@" in uses and not uses.split("@")[1].startswith("sha"):
                print(f"Unpinned action: {uses} in {wf.name}")

主なサプライチェーンのリスク:

  1. ピン留めされていない GitHub Actions(SHA ではなく @main を使用)
  2. ${{ github.event }} 式を介したスクリプトインジェクション
  3. 過度に広い GITHUB_TOKEN の権限
  4. リポジトリへの書き込み権限を持つサードパーティ製アクション
  5. 公開パッケージ名と非公開パッケージ名の衝突による依存関係の混同

例

# Check for script injection in run steps
for step in job.get("steps", []):
    run_cmd = step.get("run", "")
    if "${{" in run_cmd and "github.event" in run_cmd:
        print(f"Script injection risk: {run_cmd[:80]}")

コメント