CrewAI RCE(CVSS 9.8)、LiteLLM 命令注入(CVSS 8.7)、Amazon Q Developer 自动执行漏洞均为 MCP 配置可执行导致的根因,提供 40 行检测代码。
先说结论:过去两个月,三个真实的 MCP 服务器漏洞被披露——一个 CrewAI stdio RCE(CVSS 9.8)、一个 LiteLLM MCP-REST 命令注入(CVSS 8.7,正在被主动利用),以及一个 Amazon Q Developer MCP 自动执行缺陷(CVSS 8.5)。三者有一个共同的根因:MCP 配置是可执行的,而非数据。本文逐一分析这三个 CVE,然后演示一个 40 行的验证器,在此类漏洞发版前就捕获它。
Model Context Protocol(MCP)是 AI Agent 连接工具的方式——文件系统、数据库、浏览器、CI 流水线。协议的 stdio 传输设计极为简洁:你的配置文件写"运行 python ./server.py",客户端就会精确执行它,作为你机器上的一个子进程,带着你的环境变量运行。
这个设计本身就是漏洞所在。MCP 配置是可执行内容,但协议中没有任何机制将它当作那样来处理。没有白名单、没有沙箱、没有"这个配置可信吗?"的检查点。一个恶意仓库、一个误植的包、或一个投毒的 PR,只要往你的工作区塞一个 MCP 配置文件,就离用你的凭证运行任意代码只有一步之遥。
下面三个 CVE 不是假设场景。它们是已在野外披露的实际模式。
是什么:在 CrewAI 中,StdioTransport.__init__() 将用户控制的命令字符串直接传递给 stdio_client(),零验证。任何指向恶意命令的 MCP 服务器配置都会触发任意的操作系统进程执行。
为何重要:这是一个主流 Agent 框架——不是冷门工具。漏洞类别是"工具注入":LLM 生成的 tool_call 参数,或一个被投毒的配置文件,无需任何中间检查就变成了一条 OS 命令。
状态:已向 MSRC 披露(Case 126356),公开追踪为 CVE-2026-2287。
是什么:LiteLLM 的 AI 网关暴露了 POST /mcp-rest/test/connection 和 POST /mcp-rest/test/tools/list——这两个端点本意是在保存 MCP 服务器配置前对其进行预览。它们接受完整配置(包括 command、args、env),而对于 stdio 配置,会在代理主机上直接以子进程形式运行提供的命令,没有任何沙箱。CISA 在 2026 年 6 月 8 日将其加入已知被利用漏洞目录,此前已有主动利用。
更糟的是:结合 CVE-2026-48710(一个 Starlette Host 头绕过),它变成了联合 CVSS 10.0 的未认证 RCE——无需凭据。野外后利用观察:Web Shell 安装、凭据窃取、横向移动。
状态:已在 LiteLLM 1.83.7 中修复(test 端点需要 PROXY_ADMIN 角色)。如果你在运行 LiteLLM 网关且尚未打补丁,这是优先级最高的升级。
是什么:AWS 的 Language Servers(< 1.65.0)自动加载并执行来自工作区 .amazonq/mcp.json 文件的 MCP 服务器配置——无需用户同意、无需工作区信任验证。生成出的进程继承了开发者的完整环境变量,暴露了 AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、CLI 认证令牌、API 密钥和 SSH Agent 套接字。
为何重要:攻击面不是网络服务——而是开发者的编辑器。一个恶意 PR、一个误植的包、或一道假面试题往工作区里塞一个 .amazonq/ 配置,Amazon Q 就会运行它。
状态:由 Wiz Research 披露(2026 年 4 月 20 日报告;Language Servers 1.65.0 / Amazon Q 2.20 中已修复)。
每一个都与命令注入相邻,而每一个都可通过配置时检查来捕获:检查这个 MCP 配置是否在运行危险命令、是否在暴露密钥、是否在混合 stdio 与 env。
以下是其检测逻辑。它是真实可用的、开源的,运行在一个小型 Python 类中。安装方式:
pip install ccs-verifier
from ccs.guardrail import MCPSecurityValidator
malicious = {
"name": "file-ops-server",
"transport": "stdio",
"env": {"OPENAI_API_KEY": "sk-proj-***"},
"tools": [
{
"name": "purge_all",
"implementation": 'def purge_all():\n os.system("rm -rf /data/user/*")',
"env": {},
},
{
"name": "run_shell",
"implementation": 'subprocess.call(["bash", "-c", user_cmd])',
"env": {},
},
],
}
result = MCPSecurityValidator.validate_mcp_config(malicious)
print(result["safe"]) # False
针对模拟了全部三个 CVE 模式的配置的的实际输出:
{
"safe": false,
"issues": [
{
"severity": "HIGH",
"type": "stdio_env_exposure",
"message": "stdio transport with env variables",
"cve_ref": "CVE-2026-12957",
"remediation": "Use env_isolation or switch to sse/http transport"
},
{
"severity": "CRITICAL",
"type": "command_injection",
"pattern": "rm -rf",
"cve_ref": "CVE-2026-42271"
},
{
"severity": "CRITICAL",
"type": "command_injection",
"pattern": "os.system",
"cve_ref": "CVE-2026-42271"
},
{
"severity": "CRITICAL",
"type": "command_injection",
"pattern": "subprocess.call",
"cve_ref": "CVE-2026-42271"
}
]
}
一个干净的配置则通过:
safe = {
"name": "reader",
"transport": "sse",
"env": {},
"tools": [{"name": "read", "implementation": "def read(): return open(f).read()", "env": {}}],
}
print(MCPSecurityValidator.validate_mcp_config(safe)["safe"]) # True
检测类型说明:
command_injection — rm -rf、curl | sh、wget | bash、eval(、exec(、os.system、subprocess.call(CVE-2026-42271 模式)env_exposure — API_KEY、SECRET、TOKEN、PASSWORD、PRIVATE_KEY、CREDENTIALS、AUTH 出现在 tool env 中stdio_env_exposure — stdio 传输携带 env 变量(CVE-2026-12957 模式)这三个 CVE 以三种不同方式修复——但模式处处相同:
命令白名单——绝不接受来自配置或不可信调用方的任意命令。如必须,验证其是否在显式白名单内(CrewAI 的修复方案)。
配置与权限分离——stdio + env 是最危险的组合。使用 env_isolation,或切换到 SSE/HTTP 并配合窄权限模型(LiteLLM 的修复方案:PROXY_ADMIN 门控)。
自动执行需显式同意——永远不要自动运行随工作区内容一起到达的 MCP 配置。先提示、验证信任、再运行(Amazon Q 的修复方案)。
运行时也要验证——配置时检查能挡住明显的案例;工具输出上的验证层能挡住其余的。MCP Python SDK 在工具上定义了 readOnlyHint,但运行时从未强制执行它——我们的审计在六个框架(AutoGen、Semantic Kernel、FastMCP、Dify、Griptape、MCP Python SDK)的 87 个生产代码实例中发现了这一缺口。
如果你使用 Cursor 或 Claude Desktop,可以对任意 MCP 服务器 URL 远程运行配置检查:
https://mcp.correctover.com/mcp
暴露的工具:ccs_scan(扫描 URL 的 MCP/运行时安全问题)、ccs_check(7 维度运行时工具输出验证)、ccs_info(CCS 标准参考)。
或本地安装:pip install ccs-verifier。
Correctover —— AI Agent 的运行时验证。我们研究并披露 AI Agent 基础设施中的漏洞(CVE-2026-2287,以及横跨 13 个框架的发现),并交付工具来在下一个漏洞发版前捕获它。
CVE 引用已对照 CISA KEV(2026 年 6 月)、AWS Security Bulletin 2026-047 和 MSRC Case 126356 进行验证。