IPBUF安全漏洞报告
English
CVE-2026-33749 CVSS 9.0 严重

CVE-2026-33749 n8n 存储型XSS漏洞

披露日期: 2026-03-25

漏洞信息

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

相关标签

XSSStored XSSn8nCWE-79CVSS:9.0Workflow AutomationRemote Code Execution

漏洞概述

n8n是一个开源工作流自动化平台。在1.123.27、2.13.3和2.14.1版本之前,存在一个严重的安全漏洞。拥有创建或修改工作流权限的经过身份验证的用户,可以精心制作一个产生无文件名HTML二进制数据对象的工作流。`/rest/binary-data`端点在没有`Content-Disposition`或`Content-Security-Policy`头的情况下内联提供此类响应,导致HTML在浏览器中原样渲染,并获得完整的同源JavaScript访问权限。攻击者可以将生成的URL发送给权限更高的用户,从而在受害者的经过身份验证的会话中执行JavaScript,进而窃取工作流和凭据、修改工作流或提权至管理员。

技术细节

该漏洞的根本原因在于n8n处理二进制数据对象时缺乏必要的安全响应头。攻击者利用其创建工作流的权限,构建一个特殊的节点(如Code节点),使其输出一个包含恶意HTML/JavaScript代码的二进制数据流,并特意不设置文件名。当n8n通过`/rest/binary-data`接口提供该数据时,由于缺少`Content-Disposition: attachment`头,浏览器不会强制下载文件,而是尝试渲染内容。同时,由于缺少Content-Security-Policy (CSP) 头,浏览器不会限制内联脚本的执行。这导致了存储型XSS攻击。因为脚本在n8n的同源下运行,它可以访问受害者的会话Cookie、本地存储数据以及页面DOM,从而允许攻击者窃取凭证、篡改工作流或执行管理员操作。

攻击链分析

STEP 1
1. 初始访问
攻击者需要一个具有创建或修改工作流权限的低权限账户。
STEP 2
2. 制作恶意工作流
攻击者创建一个新的工作流,配置一个节点(如Code节点)以生成包含恶意JavaScript的HTML内容,并将其作为没有文件名的二进制数据对象输出。
STEP 3
3. 执行与生成链接
攻击者执行该工作流,n8n系统生成并存储该二进制数据。攻击者获取指向该数据的`/rest/binary-data/<id>`链接。
STEP 4
4. 社会工程学
攻击者将生成的恶意链接发送给拥有更高权限(如管理员)的目标用户,诱导其点击。
STEP 5
5. 利用漏洞
目标用户访问链接。由于缺少文件名和安全头,浏览器在n8n的同源上下文中渲染HTML并执行恶意脚本。
STEP 6
6. 后果
恶意脚本窃取受害者的Session ID或API Token,允许攻击者接管账户, exfiltrate数据,或提升权限。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC Concept: Create a workflow node that outputs HTML binary data without a filename // 1. Define a malicious workflow node (e.g., Function or Code node) const maliciousWorkflowNode = { "parameters": { "jsCode": "// Generate HTML content with XSS payload\nconst htmlContent = '<script>alert(\'XSS via n8n Binary Data\'); console.log(document.cookie);</script>';\nconst binaryData = Buffer.from(htmlContent).toString('base64');\nreturn [{\n json: {},\n binary: {\n data: {\n data: binaryData,\n mimeType: 'text/html',\n fileName: '' // Critical: Empty filename triggers inline rendering\n }\n }\n}];" }, "name": "Exploit Node", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [250, 300] }; // 2. Execute the workflow to generate the binary object // 3. Capture the Binary Data ID from the execution result // 4. Construct the malicious URL // Example: https://<n8n-domain>/rest/binary-data/<binary-id> // 5. Send this URL to an admin user. When they visit it, the script executes in their context.

影响范围

n8n < 1.123.27
n8n >= 2.0.0, < 2.13.3
n8n >= 2.14.0, < 2.14.1

防御指南

临时缓解措施
如果无法立即升级,管理员应仅向完全受信任的用户授予工作流创建和编辑权限。此外,建议限制对n8n实例的网络访问,防止不受信任的用户访问二进制数据URL。请注意,这些变通方法不能完全消除风险,应仅作为短期的缓解措施。

参考链接

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