事件经过
MySQL MCP Server的SSE/HTTP传输模式缺少强制Origin/Host验证所需的安全设置,允许未经身份验证的远程SQL执行针对后端数据库直接或通过来自受害者浏览器的DNS反弹攻击。
影响分析
MCP数据库服务器是LLM代理需要结构化数据访问的常见集成点;这个广泛使用的连接器中的未经身份验证的SQL执行原语——可以直接到达或通过欺骗浏览器将DNS反弹到本地MCP监听器——给攻击者提供了完全数据库入侵的路径,并且对于具有提升MySQL权限的情况,可能导致主机级代码执行。
攻击途径
当MCP_TRANSPORT=sse被设置时,服务器构造SseServerTransport时不带security_settings或enable_dns_rebinding_protection,因此MCP Python SDK的Origin/Host验证永远不会被应用。远程未经身份验证的攻击者(直接或通过恶意网页中的DNS反弹)可以向暴露的MCP服务器提交SQL查询;拥有足够的MySQL权限(例如FILE)可以升级为任意文件读/写和潜在的RCE。
受影响系统
mysql-mcp-server (PyPI)低于0.4.2版本
缓解措施
升级至mysql-mcp-server 0.4.2或更高版本,该版本在SSE模式下默认启用DNS反弹/Origin-Host保护。运行SSE/HTTP暴露的MCP MySQL服务器的操作员应验证它们不能直接在互联网上到达,并立即修补,鉴于CVSS 10.0的评级。