深入理解 CVE-2025–68613:n8n 工作流自动化工具中的高危远程代码执行漏洞

303 阅读6分钟

官网:http://securitytech.cc/

深入理解 CVE-2025–68613:n8n 工作流自动化工具中的高危远程代码执行漏洞

在撰写本文时(2025 年 12 月 24 日),网络安全社区因 CVE-2025–68613 的出现而受到强烈震动。该漏洞被认定为 高危漏洞,存在于流行的开源工作流自动化平台 n8n 中。

本文将首先介绍什么是 n8n,随后深入分析该漏洞的安全风险、相关技术原理、影响后果、受影响版本、检测方式以及修复与缓解方案。无论你是 IT 运维人员、安全研究员,还是 n8n 的使用者,本文都能帮助你理解并应对这一严重安全问题。


第一部分:n8n 简介

n8n 是一款采用 Fair-Code 许可 的工作流自动化工具,主要面向技术团队。它允许用户通过连接不同的应用与服务,在几乎无需编写大量代码的情况下构建复杂的自动化流程。

作为一个开源平台,n8n 支持 500+ 集成,可用于自动化 IT 运维、安全运营、软件开发、销售等多种场景。其核心功能包括:

  • 拖拽式工作流构建界面
    • 支持 AI 多步骤代理(Agents)
    • 自定义 JavaScript / Python 节点
    • 企业级功能:SSO、加密密钥、基于角色的访问控制(RBAC)

对于大型组织,n8n 支持通过 Docker 自建部署。其应用范围非常广泛,从 IT 运维中的员工入职自动化,到安全运营中工单增强处理。n8n 采用社区驱动模式,当前已提供 1700+ 工作流模板,可以高效地自动化重复性任务。

按回车或点击查看大图

n8n.io 上展示的工作流自动化功能


第二部分:什么是 CVE-2025–68613?漏洞原理解析

CVE-2025–68613 是一个 严重的远程代码执行(RCE)漏洞,源于 n8n 在 工作流表达式(Expression)求值机制 中存在的表达式注入问题。

该漏洞由安全研究员 fatihhcelik 以负责任方式发现并上报。漏洞允许 已登录的攻击者 在工作流定义中注入并执行任意代码。原因在于: n8n 在执行表达式时,运行环境隔离不足,攻击者可访问 Node.js 运行时的全局对象,如:

  • process
    • child_process

漏洞被归类为 CWE-913(动态代码资源控制不当)。简而言之,平台未能正确限制动态代码执行的能力。

一个拥有合法账户的恶意用户,可以在如 Set 节点 中编写恶意表达式,从而执行系统命令,最终可能导致 n8n 服务器完全被接管

该漏洞于 2025 年 12 月 19 日 由 n8n 官方通过 GitHub Security Advisory 公布。


第三部分:漏洞利用的技术细节

该漏洞源于 n8n 对用户定义表达式的执行方式。

n8n 使用如下语法来定义表达式:

={{ expression }}

表达式原本用于引用变量或执行简单计算。但在受影响版本中,这些表达式并未运行在真正隔离的沙箱中,导致 整个 Node.js 运行时环境对用户可见

漏洞利用流程(完整步骤)

1. 认证要求

攻击者必须拥有一个有效的 n8n 账号(Web UI 或 API)。 无需管理员权限,只需具备创建或编辑工作流的权限。


2. 创建存在漏洞的工作流

  • 登录 n8n Web 控制台
    • 点击 Add workflow / Create new workflow 创建空白工作流

3. 添加必要节点

  • 从左侧节点面板拖拽 Manual Trigger(手动触发) 节点
    • 再拖拽一个 Set 节点
    • 将 Manual Trigger 的输出连接到 Set 节点

4. 配置恶意表达式

  • 双击 Set 节点进入配置
    • 点击 Add Value → String
    • 字段名任意(如 result
    • 点击值右侧的 “=” 按钮,启用 表达式模式
    • 粘贴恶意表达式,例如:

按回车或点击查看大图

Payload 原文链接: pastebin.com/raw/11tecYq…

该 Payload 使用 child_process 模块,通过 this.process 访问 Node.js 内部对象,并执行 id 命令,返回当前系统用户与用户组信息。


5. 触发执行

  • 点击 Execute Workflow 或 Set 节点中的 Test step
    • n8n 在服务器端执行表达式
    • 由于沙箱隔离不足,代码成功逃逸并以 n8n 进程权限执行(Docker 中通常为 node 用户)

6. 输出与验证

  • 在 Set 节点输出中可看到命令执行结果,例如:
uid=1000(node) gid=1000(node) groups=1000(node)
  • 更危险的 Payload 可执行任意系统命令(如 uname -awhoami,甚至反弹 Shell)

按回车或点击查看大图

漏洞的根本原因在于 表达式求值器对全局 process 对象的访问控制不当。 修复版本通过更严格的运行时限制解决了该问题。

按回车或点击查看大图

n8n 中存在漏洞的工作流界面示例


第四部分:影响与风险评估

CVE-2025–68613 被评定为 Critical(严重)漏洞,CVSS 评分介于 9.9–10.0,意味着极易被利用,且后果极其严重。

一旦成功利用,攻击者可获得与 n8n 进程相同的权限,通常包括:

  • 访问存储的凭据(API Key、Token)
    • 读取/修改工作流配置文件
    • 访问数据库、第三方 API
    • 横向移动至内网其他系统

通过 Censys 等搜索引擎发现,全球暴露的 n8n 实例超过 103,000 个。 在生产环境中,该漏洞可能导致:

  • 客户数据泄露
    • 业务系统被篡改
    • 服务中断
    • 勒索软件攻击

n8n 社区论坛中已有真实案例表明:不及时修补将导致服务器被完全接管


第五部分:受影响版本与补丁

受影响版本范围:

  • 0.211.0 ≤ n8n < 1.120.4
    • 1.121.0(存在漏洞)
    • 1.121.1(已修复)

安全版本包括:

  • 1.120.4
    • 1.121.1
    • 1.122.0 及以后版本

相关 GitHub 修复提交(如 08f332015153decdda3c37ad4fcb9f7ba13a7c79)对表达式执行器进行了隔离增强。

Docker 用户可直接升级:

docker pull n8nio/n8n:1.122.0

第六部分:漏洞检测与识别

检测方式

  • 访问 /rest/settings 接口
  • 查看 JSON 中的 versionCli 字段
    • 使用社区工具(如 Nuclei 模板)扫描
    • 解析登录页面的 meta 标签,例如:
<meta name="n8n:config:sentry" content="..." />

按回车或点击查看大图


第七部分:缓解与防护建议

立即措施

  • 立刻升级到安全版本

临时缓解方案

  • 限制工作流创建与编辑权限,仅允许可信用户
    • 在最小权限、受限网络环境中运行 n8n

最佳实践

  • 使用隔离部署(air-gapped)
    • 加密敏感凭据
    • 定期备份
    • 关注官方安全公告(如比利时 CCB)