🟠 高危 | CVE-2026-65598 — n8n before 1.123.64, 2.29.8, and 2.30.1 contains a...
🟠 【深度分析】高危安全漏洞:CVE-2026-65598
CVSS 评分: 高危(8.9)🟠 状态: Analyzed 发布时间: 2026-07-22
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-65598 |
| CVSS 评分 | 8.9 🟠 |
| 严重程度 | 高危 |
| CVSS 向量 | CVSS:4.0/AV:N/AC:H/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:L/SA:L/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
| CWE 分类 | CWE-367 |
| 发布时间 | 2026-07-22 |
| 最后更新 | 2026-07-27 |
| 状态 | Analyzed |
| 数据来源 | disclosure@vulncheck.com |
CVSS 评分:8.9(高危)
CVSS 向量:CVSS:4.0/AV:N/AC:H/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:L/SA:L
危害等级: 高危(任意 JavaScript 执行,影响完整性与机密性)
漏洞状态: 已分析,已修复
漏洞概述
CVE-2026-65598 是 n8n 工作流自动化平台中 Git 节点克隆操作存在的一个 TOCTOU(Time-of-Check Time-of-Use)竞态条件 漏洞。
攻击者(需为已认证用户)可以通过在路径验证与克隆执行之间的极短窗口内,将已验证的目录替换为指向 社区节点目录 的符号链接,从而绕过路径限制。
成功利用后,攻击者可将精心构造的恶意仓库克隆到社区节点目录中,在 n8n 下一次重启时自动加载为自定义节点,并执行其中的任意 JavaScript 代码。
该漏洞同时影响 自托管实例 和 n8n 云实例(云实例通常默认启用社区节点功能),威胁面广泛。
受影响组件与版本
| 组件 | 受影响版本范围 | 修复版本 |
|---|---|---|
| n8n (自托管/云) | < 1.123.64(1.x 分支) < 2.29.8(2.x 分支) < 2.30.1(2.30.x 分支) |
≥ 1.123.64 ≥ 2.29.8 ≥ 2.30.1 |
注意: 云实例由 n8n 官方运维,用户无需自行升级,但需等待平台侧完成更新。
漏洞原理分析
技术成因
漏洞根因属于 CWE-367:TOCTOU 竞态条件。
在 n8n 的 Git 节点 clone 操作中,代码会执行以下步骤(简化描述):
- 路径验证:检查用户提供的目标路径是否在允许的合法目录范围内(例如工作空间目录)。
- 文件系统操作:调用
git clone将远程仓库克隆到该路径。
问题在于:路径验证与后续克隆之间并未锁定文件系统状态。
攻击者可以同时运行另一个进程(或线程),在验证完成后、克隆开始前,利用 rename()、symlink() 等系统调用将被验证的目录替换为一个 符号链接,指向 n8n/community-nodes/ 目录(社区节点存放目录)。
由于 git clone 会跟随符号链接写入实际目标,因此仓库内容会直接写入社区节点目录。
n8n 在启动时会扫描该目录,加载所有 .js 或 .node 文件作为自定义节点,并执行其中的 JavaScript。
攻击者只需在恶意仓库中放入一个符合 n8n 节点格式(例如导出一个 Node API 对象)的脚本,即可在服务器上执行任意代码。
攻击向量
- 攻击入口:n8n Web 界面中任何可以创建 Git 节点的工作流(需至少
Editor权限,PR:L)。 - 所需准备:攻击者需拥有一个可被目标 n8n 实例访问的 Git 仓库(可托管于公开或私有服务)。
- 竞态窗口:通常需在 100ms 以内完成目录替换,利用难度较高(
AC:H),但可以通过多次重试或使用监控文件变化(如inotify)的工具来自动化。 - 后续利用:重启后触发恶意节点执行,可直接操控数据库、执行系统命令、横向移动等。
CVSS 向量解读
| 组件 | 值 | 含义 |
|---|---|---|
| AV:N | 网络 | 攻击可通过网络远程发起 |
| AC:H | 高复杂度 | 竞态窗口精确控制,需多次尝试或自动化脚本 |
| AT:P | 需准备 | 攻击者需提前创建可用的 Git 仓库及文件系统操作脚本 |
| PR:L | 低权限 | 只需普通登录权限(无管理员权限) |
| UI:N | 无需交互 | 用户无需额外操作 |
| VC:H/VI:H/VA:H | 高机密/完整/可用 | 可完全控制受影响服务器上的数据与功能 |
| SC:H/SI:L/SA:L | 安全机密高,完整与可用低 | 攻击者可能进一步影响系统安全属性,但影响范围有限 |
影响评估
实际威胁等级:极高
- 攻击复杂度:高。需要精确控制竞态条件,但存在成熟的自动化利用框架(如系统调用竞争包装器),且 n8n 常用于企业自动化环境,攻击面广。
- 所需权限:低。仅需拥有一个工作流编辑权限的普通账户,许多团队默认开启注册功能。
- 利用条件:
- n8n 实例启用了 Git 节点(默认启用)。
- 社区节点目录可被符号链接写入(默认
~/.n8n/custom/或配置目录)。 - 攻击者能触发 n8n 重启(如通过 API 或诱导管理员重启),或等待自动重启(如更新后、定时维护)。
- 潜在后果:
- 完全接管 n8n 服务器(执行任意 JavaScript)。
- 窃取存储在工作流中的凭证、API Key、数据库连接字符串。
- 横向移动到内网其他服务。
- 云实例中可能影响多租户隔离(取决于 n8n 云架构,官方尚未披露详情,但描述中明确“cloud instances are affected”)。
已有信息核实
根据 NVD 数据,现有信息足以确定漏洞成因与利用方式,无需额外推断。
修复建议
正式补丁
立即升级至以下版本之一(或更高):
1.123.64(1.x 分支)2.29.8(2.x 分支)2.30.1(2.30.x 分支)
升级后,Git 节点克隆操作会在路径验证后立即对目标目录进行 原子化锁定(例如使用文件锁或临时目录 + 重命名),确保验证与写入之间无法被中间人替换。
同时,社区节点目录的扫描逻辑会额外校验节点来源的路径合法性。
临时缓解措施(无法立即升级时)
- 限制 Git 节点使用权限:通过 n8n 的 RBAC 功能,仅授予信任的管理员用户工作流编辑权限。
- 外部监控:使用文件系统审计工具(如
auditd、inotify)监控社区节点目录的异常写入事件。 - 禁用社区节点功能:在
n8n.config中设置nodes.communityPackage.enabled: false,重启后生效。 - 防火墙隔离:确保 n8n 实例无法通过出站访问未知的 Git 仓库(仅允许内部 GitLab/GitHub Enterprise)。
- 定期重启前检查:自定义脚本在每次重启前检查社区节点目录是否包含意外符号链接。
云用户
n8n 云实例无需自行操作,平台方会自动推送修复版本。若您使用云实例,请关注官方状态页面,确认更新部署时间。在更新完成前,建议暂停使用包含 Git 节点的工作流。
参考资料
- CVE 详情页:https://nvd.nist.gov/vuln/detail/CVE-2026-65598
- CWE-367:https://cwe.mitre.org/data/definitions/367.html
- n8n 官方安全公告:https://n8n.io/security/advisories/ (预计发布时更新)
- Git 节点文档:https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.git/
- 社区节点加载机制:https://docs.n8n.io/hosting/configuration/community-nodes/
免责声明:本文基于 NVD 公开数据分析,旨在提供安全预警与技术参考。所有利用代码与具体实施细节仅供参考,请勿用于非法用途。建议组织尽快安排修复。