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跟踪跨服务 Canary 泄漏
  5. 05追加写入 NDJSON 审计日志
  6. 06规范化 Unicode 输入

适用场景

  1. 01为 MCP 子进程生成策略
  2. 02检查命令中的已知 RCE 模式
  3. 03跟踪跨服务的 Canary 泄漏

MCP 相关

它提供 MCP 服务及用于注册、审计子进程,扫描命令、跟踪 Canary、生成网络出口策略描述符和读取审计日志的工具。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 fs 写入)。

原生强制执行(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 种 shell 注入模式和 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),这些入口无需 shell 二进制文件或 shell 元字符即可执行任意代码;自 0.1.1 起,shell 元字符谓词也会标记换行符/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 服务,并获取句柄、指纹和策略描述符是否
audit_subprocess验证请求参数是否符合已注册的允许列表(NFKC 规范化后,检查是否有不可见字符)是否
scan_cve_replay针对目标服务命令运行行为谓词是否
track_canary签发金丝雀令牌,并扫描下游服务是否有泄漏是否
inject_egress_policy为已注册的子进程生成网络出口允许列表描述符(v0.1 仅生成描述符)是否
get_audit_log按筛选条件读取 NDJSON 审计日志条目是否

v0.1 说明: v0.1 中所有六个工具均为 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 hook(带外)cgroups-v2
Linux < 5.13不支持不支持不支持
macOS 11+sandbox-exec (.sb)sandbox-exec 网络规则不适用
Windows不支持(计划支持:AppContainer)不适用不适用

分层架构(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
MEDIUM512MB64仅 API范围有限的已知供应商
HIGH1024MB128广泛源码经过审查的第一方 MCP
CRITICAL2048MB256不受限制与本地 OS 集成、源码由你掌控的 MCP

审计日志位置

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

每行写入一份 JSON 文档(NDJSON),读取时逐行执行 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 测试样例是行为谓词,而非可运行的漏洞利用程序。它们检查的是“目标命令是否符合已知可被利用的特征?”,而不是“能否触发漏洞利用?”
  • 金丝雀令牌使用加密安全随机生成的 64 位十六进制主体,并置于 __MCP_CANARY_<hex>__ 标记中。模式的唯一性在统计意义上成立,但无法通过密码学保证其能抵御控制生成器的对手。

已知问题 v0.1

这些是 v0.1 系列中确实存在但已接受的限制。它们已列入下方的 v0.2 路线图;如果其中任何一项会阻碍你的使用场景,请在未来的 v0.2.x 版本发布后固定使用该版本。

  • 审计日志轮换存在 TOCTOU 窗口(src/audit/log.ts rotateAuditLog)。大小检查和重命名不是原子操作。在 多进程/高并发环境中,两个追加进程可能都会观察到“需要轮换”,并都尝试重命名;失败一方的追加操作会写入 刚创建的空活动日志。解决方法:串行化写入,或每个进程只运行一个写入器。v0.2 将通过 proper-lockfile 控制轮换。
  • 重启后内存状态会丢失(src/state.ts)。已注册的 子进程和金丝雀链保存在进程内存中。进程重启后,注册表会被清空;操作员必须重新注册。v0.2 计划提供 SQLite 后端存储,作为可选的持久化层。
  • mcp-protocol-validator CI 步骤不是硬性门禁 (.github/workflows/ci.yml)。由于上游工具仍在稳定过程中,验证器以 continue-on-error: true 运行;失败会显示为 CI 注释,但不会阻止流程。v0.2 将在上游稳定后把它提升为 硬性门禁。
  • v0.1 中的审计日志未签名。参见上文“审计日志位置”。v0.2 将添加经过验证的 Acra 模式签名链。

v0.2 路线图(暂缓,尚无提交日期)

  • pnpm 工作区包含 mcp-rce-guard + mcp-rce-demo + mcp-rce-fixtures(市场分发卫生:CVE 夹具单独分发)。
  • 为 Linux 提供 NAPI-RS Landlock 绑定(内核 >=5.13)。不通过 C 桥接,无法测试使用 prctl + LANDLOCK_CREATE_RULESET 的普通 child_process.spawn。
  • 使用 profile 文件生命周期包装 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。
  • 参考服务 mcp-rce-demo,包含 6 个可实时演示各项功能的工具(read_isolated_file、attempt_egress_blocked、spawn_subprocess_audited、replay_cve_demo、inject_canary_demo、get_demo_audit)。
  • 在 ubuntu-latest GitHub Actions 运行器上进行延迟测试“子进程启动 p95 <200ms”。
  • 为全部 3 个 npm 包启用 Sigstore Trusted Publishing OIDC。
  • 经过验证的 Acra 模式审计日志链:KDF 主密钥 → 每条记录的 HMAC、带重叠窗口的密钥轮换,以及集成的 verify_audit_log 工具。替代 v0.1 中因缺少验证器而在发布前移除的 HMAC-SHA256 原型。

许可证

MIT — 版权所有 (c) 2026 Matthias Meyer(StudioMeyer)

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。