MCP Inspector 代理服务器 HTTP 头注入漏洞分析

张开发
2026/7/1 23:38:41 15 分钟阅读
MCP Inspector 代理服务器 HTTP 头注入漏洞分析
项目场景在开发基于 Model Context ProtocolMCP的 AI 工具集成应用时我们使用了 Anthropic 官方提供的 MCP Inspector 作为调试代理。该代理运行在本地 localhost:6277用于转发客户端与上游 MCP 服务器之间的请求支持 StreamableHTTP、SSE、stdio 等多种传输方式。为了方便团队远程调试有时会将代理绑定到 0.0.0.0 并通过防火墙开放端口。在一次安全审计中我们尝试对代理的请求转发逻辑进行黑盒测试发现了一个严重的安全缺陷问题描述使用代理转发请求时客户端可以通过 x-custom-auth-headers 请求头指定要转发的自定义 HTTP 头。例如以下请求期望代理将 Host, Inferer, x-mcp-proxy-auth 等头转发给上游 MCP 服务器预期行为代理只应该转发安全的头如 mcp-*、last-event-id而不应允许客户端覆盖 Host 等敏感字段。实际现象上游 MCP 服务器收到的请求中Host 被篡改为 evil.comInferer被注入伪造 IP,x-mcp-proxy-auth存储的Token外泄。这意味着代理无条件信任了客户端提供的所有自定义头名称造成了 HTTP 头注入漏洞1111原因分析漏洞根源在 MCP Inspector 的 getHttpHeaders 函数中。该函数提取客户端请求中的三类头1.以 mcp- 开头的头2.authorization、last-event-id 等标准头3.通过 x-custom-auth-headers JSON 数组声明的任意自定义头解决方案强制重置 Host 头在发送上游请求前使用上游 URL 的 host 覆盖 Host 头忽略客户端输入。

更多文章