GitHub Actions Audit について
GitHub Actions Audit は、GitHub Actions のワークフローファイルにあるセキュリティとサプライチェーンのリスクを調べる MCP サーバーです。重要度や該当箇所、対処法、修正用 YAML を含む結果を返します。
主な機能
- 01ワークフローのセキュリティ検査 21 項目
- 02YAML 本文または URL の監査
- 03シークレットと権限の個別検査
- 04サプライチェーンとランナーの検査
- 05対処法と修正用スニペットの提示
活用シーン
- 01マージ前のワークフロー確認
- 02シークレット漏えいとスクリプトインジェクションの検出
- 03アクションのバージョン固定とトークン権限の確認
MCP 対応
MCP クライアントにワークフロー監査とチェック一覧のツールを提供します。YAML 本文または HTTPS のワークフロー URL を渡せます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://unbearable-dev--github-actions-audit.apify.actor/mcpclaude mcp add --transport http unbearabledev-github-actions-audit https://unbearable-dev--github-actions-audit.apify.actor/mcp{"mcpServers":{"unbearabledev-github-actions-audit":{"type":"http","url":"https://unbearable-dev--github-actions-audit.apify.actor/mcp"}}}Cursor で開く{"servers":{"unbearabledev-github-actions-audit":{"type":"http","url":"https://unbearable-dev--github-actions-audit.apify.actor/mcp"}}}VS Code で開く{"mcpServers":{"unbearabledev-github-actions-audit":{"type":"http","url":"https://unbearable-dev--github-actions-audit.apify.actor/mcp"}}}{"mcpServers":{"unbearabledev-github-actions-audit":{"serverUrl":"https://unbearable-dev--github-actions-audit.apify.actor/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://unbearable-dev--github-actions-audit.apify.actor/mcp認証が必要ツール
詳細
GitHub Actions セキュリティ監査
サプライチェーンのリスクを調べるために、
.github/workflows/*.ymlファイルを監査する MCP サーバーです。スクリプトインジェクション、トークンの漏えい、アクションのバージョン固定の不備、広すぎる権限、pull_request_targetの危険な使い方など、2024~2025 年に発生した複数のサプライチェーンインシデントの原因となったパターンを検出します。
Unbearable Labs が開発しました。 イベントごとの従量課金制で、ツールが実際に呼び出された場合にのみ課金されます。
利用できるサービス
- Apify Actor Store — メインの提供先。従量課金(PPE)
- MCPize — 申請中
- MCP.so — 申請中
- PulseMCP — 申請中
- Smithery — 申請中
- Glama — 申請中
ニュースレター: Unbearable TechTips Weekly · すべての Actor: github.com/UnbearableDev
機能
MCP 対応クライアント(Claude Desktop、Cursor、n8n、Make、Zapier、カスタムエージェント)からこのサーバーに接続し、ワークフローの YAML を渡すと、次の情報を含む構造化された検出結果が返されます。
- 重大度 — critical/high/medium/low/info
- 影響を受けるジョブとステップ — 問題が発生している正確な場所
- 説明 — 実際の攻撃経路を含む、問題が重要な理由
- 修正方法 — 対処方法
- 修正用スニペット — そのまま貼り付けられる YAML
ツール
| ツール | 用途 |
|---|---|
audit_workflow(workflow_yaml? | workflow_url?, min_severity='low') | すべてのチェックを実行します |
check_secrets(...) | シークレット漏えい経路のみをチェックします |
check_permissions(...) | GITHUB_TOKEN のスコープに関する問題のみをチェックします |
check_action_pinning(...) | アクションのバージョン固定のみをチェックします |
check_runner_security(...) | セルフホストランナーとスクリプトインジェクションをチェックします |
check_workflow_config(...) | タイムアウトと設定の適切さをチェックします |
check_supply_chain_advanced(...) | TeamPCP クラスのサプライチェーンパターン(GHA-201..208)をチェックします |
list_checks(category?) | チェック項目の一覧を表示します |
workflow_yaml(内容を貼り付ける)または workflow_url(HTTPS URL。通常は特定のワークフローファイルを指す GitHub の raw URL)のいずれか一方だけを指定してください。
チェックカタログ(v2:21 件)
| ID | カテゴリ | 重大度 | タイトル |
|---|---|---|---|
| GHA-001 | シークレット | 高 | シークレットが run: スクリプトに直接埋め込まれている |
| GHA-002 | シークレット | 高 | シークレットが echo / set-output で出力されている |
| GHA-003 | シークレット | 中 | シークレットが if: 条件で使用されている |
| GHA-004 | シークレット | 高 | env: にハードコードされた認証情報のパターンがある |
| GHA-010 | 権限 | 高 | permissions: write-all が付与されている |
| GHA-011 | 権限 | 中 | トップレベルに permissions: がない(広範なデフォルト権限を継承) |
| GHA-013 | 権限 | 高 | pull_request_target + PR の head を checkout する PWN 攻撃パターン |
| GHA-020 | アクションのピン留め | 高 | サードパーティ製アクションが変更可能なタグにピン留めされている |
| GHA-021 | アクションのピン留め | 高 | サードパーティ製アクションが変更可能なブランチにピン留めされている |
| GHA-022 | アクションのピン留め | 中 | ファーストパーティ製アクションが SHA にピン留めされていない |
| GHA-030 | ランナーのセキュリティ | 中 | フォークからの pull_request でセルフホストランナーが使用されている |
| GHA-032 | ランナーのセキュリティ | 高 | 信頼できない github.event.* の埋め込みによるスクリプトインジェクション |
| GHA-040 | ワークフロー設定 | 低 | ジョブに timeout-minutes が設定されていない |
| GHA-201 | 高度なサプライチェーン | 高 | アクションがピン留めされていないブランチ参照にピン留めされている(TeamPCP クラス:@main/@master) |
| GHA-202 | 高度なサプライチェーン | 高 | アクションが変更可能なタグにピン留めされている — SHA へのピン留めを推奨 |
| GHA-203 | 高度なサプライチェーン | 致命的 | pull_request_target + PR の head の SHA/ref を checkout(codecov/tj-actions の悪用経路) |
| GHA-204 | 高度なサプライチェーン | 高 | run: 内の github.event.* ユーザー制御フィールドによるスクリプトインジェクション |
| GHA-205 | 高度なサプライチェーン | 中 | 許可リストにない所有者のアクション(信頼できないサードパーティ) |
| GHA-206 | 高度なサプライチェーン | 高 | トップレベルの permissions: write-all またはジョブごとのスコープ指定がない contents: write |
| GHA-207 | 高度なサプライチェーン | 中 | run: ブロック内の echo / cat でシークレットがログに出力されている |
| GHA-208 | 高度なサプライチェーン | 低 | 既知の廃止済みタグをアクションが使用している |
料金
| イベント | USD |
|---|---|
| 監査 / check_* ツール呼び出し | $0.02 |
list_checks による検出 | $0.005 |
Claude Desktop からの接続
{
"mcpServers": {
"gha-audit": {
"transport": "streamable-http",
"url": "https://YOUR-ACTOR-URL.apify.actor/mcp"
}
}
}
Unbearable Labs の関連 MCP
docker-compose-audit—docker-compose.ymlのセキュリティ監査dockerfile-audit— Dockerfile のセキュリティと品質hu-postcode-validator— ハンガリーの郵便番号検索
現時点で対象外の項目
- 再利用可能なワークフローの監査(複数ファイルの解決)
- CodeQL 相当のデータフロー追跡
- Marketplace に掲載されているアクションの評判スコアリング
ソース / お問い合わせ
ソース:github.com/UnbearableDev/github-actions-audit。
問題やアイデア:[email protected]。
📬 Unbearable Labs の Noel が作成しました。ニュースレターで、その他の MCP サーバーや監査のヒントを紹介しています:https://unbearabletechtips.beehiiv.com
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。