
n8n 中 CVE-2025-68613 漏洞的技术研究,涵盖受影响版本、实验探索场景、攻击与防御分析及缓解策略。
n8n 是一个工作流自动化平台,用于通过可视化流程和 JavaScript 表达式来集成系统与服务。
CVE-2025-68613 是一个严重的远程代码执行(RCE)漏洞,CVSS 评分为 9.9,影响多个版本的 n8n。该漏洞出现在受影响版本中,工作流中 JavaScript 表达式的处理未得到适当隔离。这允许拥有编辑权限的认证用户在应用程序预期行为之外执行代码。
在实践中,该漏洞可被利用来在运行 n8n 的服务器上以应用程序自身的权限执行命令。受影响版本范围从 0.211.0 到 1.120.4、1.121.1 和 1.122.0 版本修复之前的版本。
本仓库对 CVE-2025-68613 进行技术性文档记录,涵盖漏洞背景、受影响版本、利用方法以及建议的缓解措施。

| 状态 | n8n 版本 | 备注 |
|---|---|---|
| ❌ 受影响 | >= 0.211.0 | 引入易受攻击的机制 |
| ❌ 受影响 | < 1.120.4 | 在 1.120 分支的补丁之前仍受影响 |
| ❌ 受影响 | < 1.121.1 | 在 1.121 分支的补丁之前仍受影响 |
| ❌ 受影响 | < 1.122.0 | 在 1.122 分支的补丁之前仍受影响 |
| ✅ 已修复 | 1.120.4 | 已应用官方修复 |
| ✅ 已修复 | 1.121.1 | 已应用官方修复 |
| ✅ 已修复 | >= 1.122.0 | 默认包含修复 |
建议立即更新至 1.122.0 或更高版本。
为了演示该漏洞,需要满足以下条件:
该漏洞发生在工作流的创建和执行期间,而非身份验证之前。
第一步是使用有效用户登录 n8n Web 界面。

此步骤确认攻击并非匿名攻击。该漏洞需要已认证的用户。
登录后,验证用户是否具有创建和编辑工作流的权限。

这很关键,因为只有拥有此访问级别的用户才能在工作流中插入动态表达式。
使用已认证的用户创建一个全新的工作流。

此处开始合法使用 n8n 功能,该功能在受影响版本中可被利用。
添加到工作流的第一个节点是手动触发器。

该节点的作用: 允许手动执行工作流,用作流程的起点。
在此场景中,它仅作为工作流执行的入口点。
添加的第二个节点是“编辑字段(设置)”。

该节点的作用: 该节点允许在工作流中创建、修改或覆盖数据字段。它接受静态值或在执行时评估的 JavaScript 表达式。
正是在这一点上,漏洞得以显现。
在“编辑字段(设置)”节点的值字段中,插入一个由 {{ }} 包裹的 JavaScript 表达式,这是 n8n 用于评估动态表达式的格式。

示例有效载荷:
{{ (function(){
return this.process.mainModule
.require('child_process')
.execSync('id')
.toString()
})() }}
(function(){ ... })():定义一个自执行函数,允许封装所有逻辑并直接向工作流表达式返回值。this.process:访问内部 Node.js 的 process 对象,该对象暴露运行时信息和资源。process.mainModule:允许访问应用程序的主模块,从而能够加载其他内部 Node.js 模块。require('child_process'):Node.js 原生模块,允许在操作系统上创建新进程并执行外部命令。execSync('id'):直接在运行 n8n 的操作系统上执行一条命令,使用应用程序的进程权限。.toString():将执行命令的输出转换为文本,从而允许在 n8n 界面中显示结果。显示的结果确认了该命令已使用 n8n 进程权限在操作系统上执行,体现了远程代码执行(RCE)的特性。