mcpField
R
Rce Guard

Rce Guard

ローカル
matthiasmeyer.techセキュリティ01 週間前に更新

Rce Guard について

Rce Guardは、MCPサーバー運用者向けに隔離ポリシー記述子を生成し、サブプロセスのコマンドを既知のRCEパターンと照合するライブラリです。v0.1はポリシーを記述しますが、実行中のプロセスには適用しません。

主な機能

  1. 01プロセス隔離ポリシー記述子の生成
  2. 02ネットワーク送信先許可リスト
  3. 03既知のRCEパターン検査
  4. 04サーバー間のカナリア追跡
  5. 05追記型NDJSON監査ログ
  6. 06Unicode入力の正規化

活用シーン

  1. 01MCPサブプロセス向けポリシー生成
  2. 02コマンドの既知RCEパターン検査
  3. 03サーバー間のカナリア漏えい追跡

MCP 対応

サブプロセスの登録と監査、コマンド検査、カナリア追跡、送信先ポリシー記述子の出力、監査ログの読み取りを行うMCPサーバーを提供します。v0.1のツールは実行中のプロセスにポリシーを適用しません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"rce-guard": {
"command": "npx",
"args": [
"-y",
"mcp-rce-guard"
]
}
}
}
起動コマンドnpx -y mcp-rce-guard

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmmcp-rce-guard

ツール

6

掲載時のツール一覧 · 3 週間前に更新

パラメーター型必須説明
argsarrayいいえ
binarystringはい
serverIdstringはい
trustTierenumはいLOW | MEDIUM | HIGH | CRITICAL
isolationProfileobjectいいえ
isolationProfile.cpuMsintegerいいえ
isolationProfile.memMBintegerいいえ
isolationProfile.pidMaxintegerいいえ
isolationProfile.fsReadOnlyarrayいいえ
isolationProfile.fsWritablearrayいいえ
isolationProfile.egressAllowlistarrayいいえ

詳細

StudioMeyer MCP Stack の一部 — マヨルカ島で開発 🌴 · ご利用の際は ⭐ をお願いします

mcp-rce-guard

MCP サーバー向けのポリシー合成、振る舞いベースの CVE リプレイ、カナリア追跡ライブラリです。Foundation Pillar 9。

v0.1 の範囲:カーネルレベルのサンドボックスではなく、ポリシーシンセサイザー

これが何であり、何ではないかを正確に把握してください。 v0.1 は、分離用のポリシー記述子(landlock JSON プロファイル、sandbox-exec .sb スキームファイル、cgroups-v2 仕様マップ)を合成し、既知の RCE 脆弱性パターンに該当する形状がサブプロセスのコマンドにないかをスキャンする振る舞いベースの述語を提供するビルディングブロックライブラリです。実行中のプロセスにポリシーを適用することはありません。サブプロセスを起動するホストが、記述子をプラットフォーム固有のシステムコール(Linux landlock、macOS sandbox-exec、cgroups-v2 のファイル書き込み)に変換する役割を担います。

ネイティブな強制適用(NAPI-RS の landlock バインディング、sandbox-exec の execa ラップ、終了時クリーンアップを伴う cgroups-v2 のファイル書き込み、クロスプラットフォーム統合テスト)は v0.2 の段階に含まれ、v0.1 には同梱されません。多層防御を実現するには、ホスト側でポリシー出力を実際の強制適用に接続する必要があります。このライブラリは、その前半部分を適切に処理します。

次の用途には、このライブラリを使用してください。

  • MCP サブプロセスに許可する読み取り、書き込み、起動、通信の範囲を、型付きで検証可能な方法で記述したい場合。
  • サブプロセスコマンドにおける既知の RCE 脆弱性クラス(MCP-SDK-RCE-2026-04-22、CVE-2026-27124、Nginx-MCP RCE 9.8、インタープリターのインライン評価による RCE)に加え、simulate_attacker_input コーパスに含まれる 5 種類のシェルインジェクションと 3 種類の全角 Unicode ペイロードパターンを再現可能な方法でスキャンしたい場合。
  • すべての分離判断を追記専用の NDJSON 監査ログに記録したい場合。改ざん検知可能な署名の検証(Acra パターンの鍵導出 + ローテーション + 統合検証ツール)は v0.2 のロードマップに含まれます。v0.1 では署名なしのログを提供し、署名機能は v0.2 の成果物として扱います。

カーネル境界で悪意のあるサブプロセスを実際に封じ込めるサンドボックスが必要な場合、v0.1 は使用しないでください。その場合は、v0.1 の記述子を強制適用ヘルパーと組み合わせる必要があります。そのヘルパーは v0.2 で提供されます。

機能(v0.1)

  • プロセス分離ポリシーの合成 — landlock(Linux >=5.13)ポリシー記述子、sandbox-exec(macOS)Scheme プロファイル、cgroups-v2 仕様(memory.max、pids.max、cpu.max)を出力します。記述子のみで、システムコールは実行しません。
  • ネットワーク送信許可リスト — ワイルドカード / 完全一致 / サフィックス / port:* によるマッチングを備えたデフォルト拒否ポリシーです。記述子のみで、nftables / パケットフィルターとの統合はありません。
  • CVE リプレイスイート — 既知の MCP サーバー RCE ベクトル(mcp-sdk-rce-2026-04-22、cve-2026-27124、nginx-mcp-rce-9.8、mcp-interpreter-eval-rce)に対する振る舞いベースの述語です。エクスプロイトペイロードではなく、対象コマンドに脆弱性のある形状がないかをスキャンする述語です。mcp-interpreter-eval-rce フィクスチャ(0.1.1 で追加)は、シェルバイナリやシェルのメタ文字を使わずに任意のコードを実行するインタープリターのインライン評価シンク(node -e/--eval/-p、python -c、perl -e、ruby -e、php -r、deno eval、bun -e)を検出します。シェルメタ文字の述語も、0.1.1 以降はコマンド区切り文字としての改行/CR を検出します。完全一致トークンの照合により、--experimental-vm-modules、--max-old-space-size、--inspect などの無害な起動フラグは検出対象外になります。
  • サーバー間カナリアトークン — トークンを発行し、下流の stdout / fs-write / network-egress ストリームに漏えいがないかをスキャンします(MCPHunt arXiv 2604.27819 のパターン)。
  • NDJSON 追記専用監査ログ — すべてのツール呼び出しを $MCP_RCE_GUARD_HOME/audit.log に追記します。100MB ごとにローテーションし、バックアップは最大 10 個です。v0.1 では署名なしで提供されます(プロセス内の検証ツールはありません)。v0.2 では、Acra パターンの HMAC チェーン、鍵導出、ローテーションの安全性、統合検証ツールを追加します。
  • Pillar 8(mcp-stdio-shellguard)と共有する NFKC + ゼロ幅文字除去 + Bidi ブロック正規化。

インストール

npm install -g mcp-rce-guard

または、npx から実行します。

npx -y mcp-rce-guard serve

ツール(MCP、仕様 2025-06-18)

ツール目的readOnlydestructive
register_subprocess分離プロファイルを指定して子 MCP サーバーを登録し、ハンドル、フィンガープリント、ポリシー記述子を取得しますyesno
audit_subprocess要求された引数が登録済みの許可リストと一致することを検証します(NFKC 正規化後、不可視文字の有無をチェック)yesno
scan_cve_replay対象サーバーのコマンドに対して動作述語を実行しますyesno
track_canaryカナリアトークンを発行し、下流サーバーに漏えいがないかスキャンしますyesno
inject_egress_policy登録済みのサブプロセスに対するネットワーク送信許可リスト記述子を出力します(v0.1 では記述子のみ)yesno
get_audit_logフィルターを指定して NDJSON 監査ログのエントリーを読み取りますyesno

v0.1 に関する注記: v0.1 では、6 つすべてのツールが readOnlyHint=true, destructiveHint=false です。ポリシー記述子を出力して監査ログに追記しますが、サブプロセスの状態は変更しないためです。ネイティブの強制適用機能が組み込まれる v0.2 では、inject_egress_policy の destructiveHint が true に変更されます。

CLI

mcp-rce-guard serve            # start MCP server on stdio
mcp-rce-guard platform         # detect isolation backend (landlock/sandbox-exec/unsupported)
mcp-rce-guard scan-cve <cmd>   # one-shot CVE replay against a command
mcp-rce-guard audit-log        # tail the audit log
mcp-rce-guard policy <profile.json>  # synthesize landlock+cgroups+sandbox-exec from JSON

互換性マトリックス

プラットフォーム分離バックエンドネットワーク送信cgroups
Linux >= 5.13landlocknftables フック(帯域外)cgroups-v2
Linux < 5.13非対応非対応非対応
macOS 11+sandbox-exec (.sb)sandbox-exec ネットワークルールn/a
Windows非対応(予定:AppContainer)n/an/a

レイヤーアーキテクチャ(v0.1)

Pillar 1 (mcp-protocol-conformance) — protocol input shape
        ↓
Pillar 8 (mcp-stdio-shellguard)     — argv allowlist + invisible-codepoint detection
        ↓
Pillar 9 (mcp-rce-guard, this lib)  — policy synthesis + CVE-replay scan + canary
        ↓
Host spawner (caller responsibility) — applies the policy descriptor via real syscalls

v0.2 では、最下部のボックスが Pillar 9 に統合されます(NAPI-RS landlock バインディング、sandbox-exec 実行ラップ、クリーンアップを伴う cgroups-v2 のファイルシステム書き込み)。それまでは、ホストが記述子をプラットフォームに橋渡しする必要があります。

信頼レベル

レベルmempidsegress用途
LOW256MB32なしレジストリから取得した信頼できない MCP
MEDIUM512MB64API のみスコープが限定された既知のベンダー
HIGH1024MB128広範ソースコードをレビュー済みの自社 MCP
CRITICAL2048MB256制限なしローカル OS に統合された MCP。ソースコードを自分で所有しています

監査ログの場所

$MCP_RCE_GUARD_HOME/audit.log     # default: ~/.mcp-rce-guard/audit.log

エントリーは 1 行につき 1 つの JSON ドキュメントとして書き込まれ(NDJSON)、1 行ごとに JSON.parse で読み戻されます。そのため、args 文字列内の任意の文字(タブ、引用符、埋め込みエスケープシーケンス)を安全に往復できます。100MB でローテーションし、最大 10 個のバックアップ(audit.log.1 .. audit.log.10)を保持します。

v0.1 ではエントリーに署名しません。以前の MCP_RCE_GUARD_SIGNING_KEY による HMAC-SHA256 の仕組みは、公開前に削除されました。プロセス内の検証機能がなく、鍵長の検証もローテーション戦略もなかったため、セキュリティ対策を装うだけのものだったからです。v0.2 では、検証機能を備えた Acra パターンのチェーン(KDF(master) → per-entry HMAC、鍵のローテーション、統合された verify_audit_log ツール)を提供します。

注記

  • v0.1 が出力するのはポリシー記述子です。実際の landlock システムコールの適用は、起動ヘルパーの責任です(関心の分離:ポリシーの合成は移植可能ですが、システムコールはプラットフォーム固有です)。ネイティブバインディングのラッパーは v0.2 での提供を予定しています。
  • CVE フィクスチャは実行可能なエクスプロイトではなく、動作述語です。「対象のコマンドは、悪用可能と知られている形式に一致するか」を確認します。「エクスプロイトを発動できるか」を確認するものではありません。
  • カナリアトークンでは、__MCP_CANARY_<hex>__ マーカー内に暗号学的にランダムな 64 桁の 16 進数文字列を使用します。パターンの一意性は統計的なものであり、ジェネレーターを制御する敵対者に対して暗号学的に保証されるものではありません。

既知の問題 v0.1

これらは実際に存在しますが、v0.1 系列では許容されている制限事項です。以下の v0.2 ロードマップで追跡しています。いずれかがユースケースの妨げになる場合は、 v0.2.x リリースが公開されたら、そのバージョンに固定してください。

  • 監査ログのローテーションには TOCTOU の隙間があります(src/audit/log.ts rotateAuditLog)。サイズの確認と名前の変更はアトミックではありません。 マルチプロセス/高並行性の環境では、2 つの追記処理がどちらも「ローテーションが 必要」と判断し、両方が名前の変更を試みる可能性があります。負けた側の追記は、 新しく作成された空のアクティブログに書き込まれます。回避策:書き込みを直列化するか、 プロセスごとに書き込み処理を 1 つだけ実行してください。v0.2 では ローテーションを proper-lockfile による制御下に置く予定です。
  • 再起動時にインメモリ状態が失われます(src/state.ts)。登録済みの サブプロセスとカナリアチェーンはプロセスメモリ内に保持されます。プロセスを 再起動するとレジストリが空になるため、オペレーターは再登録する必要があります。 v0.2 では、オプトインの永続化レイヤーとして SQLite ベースのストアを計画しています。
  • CI の mcp-protocol-validator ステップは厳格なゲートではありません (.github/workflows/ci.yml)。上流のツールがまだ安定化の途中のため、 バリデーターは continue-on-error: true で実行されます。失敗は CI の注釈として 表示されますが、処理はブロックされません。上流が安定したら、v0.2 で厳格なゲートに 引き上げる予定です。
  • v0.1 では監査ログに署名がありません。「監査ログの場所」を参照してください。 v0.2 では、検証可能な Acra パターンの署名付きチェーンを追加します。

v0.2 ロードマップ(保留中、コミット日未定)

  • mcp-rce-guard + mcp-rce-demo + mcp-rce-fixtures を含む pnpm ワークスペース(Marketplace の配布衛生:CVE フィクスチャーは別途配布)。
  • Linux 向け NAPI-RS Landlock バインディング(kernel >=5.13)。C ブリッジなしでは、prctl + LANDLOCK_CREATE_RULESET を使ったプレーンな child_process.spawn はテストできません。
  • macOS の sandbox-exec を execa でラップし、プロファイルファイルのライフサイクルを管理します(deny-network は connection-refused を、deny-fs-read は EACCES を発生させます)。
  • cgroups-v2 の fs.writeFile に権限チェック、終了時のクリーンアップ、シグナルハンドラーを追加します。
  • 統合テスト tests/integration/linux-landlock.test.ts + tests/integration/macos-sandbox-exec.test.ts。
  • 各機能を実行時に実演する 6 つのツール(read_isolated_file、attempt_egress_blocked、spawn_subprocess_audited、replay_cve_demo、inject_canary_demo、get_demo_audit)を備えたリファレンスサーバー mcp-rce-demo。
  • ubuntu-latest GitHub Actions ランナーでのレイテンシーテスト「サブプロセスの spawn p95 <200ms」。
  • 3 つすべての npm パッケージで Sigstore Trusted Publishing OIDC を使用します。
  • 検証可能な Acra パターンの監査ログチェーン:KDF マスターキー → エントリーごとの HMAC、重複期間を設けた鍵のローテーション、統合された verify_audit_log ツール。検証機能がなかったため公開前に削除された、v0.1 の HMAC-SHA256 プロトタイプを置き換えます。

ライセンス

MIT — Copyright (c) 2026 Matthias Meyer (StudioMeyer)

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。