🟠 【深度分析】高危安全漏洞: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 操作中,代码会执行以下步骤(简化描述):

  1. 路径验证:检查用户提供的目标路径是否在允许的合法目录范围内(例如工作空间目录)。
  2. 文件系统操作:调用 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 节点克隆操作会在路径验证后立即对目标目录进行 原子化锁定(例如使用文件锁或临时目录 + 重命名),确保验证与写入之间无法被中间人替换。
同时,社区节点目录的扫描逻辑会额外校验节点来源的路径合法性。

临时缓解措施(无法立即升级时)

  1. 限制 Git 节点使用权限:通过 n8n 的 RBAC 功能,仅授予信任的管理员用户工作流编辑权限。
  2. 外部监控:使用文件系统审计工具(如 auditdinotify)监控社区节点目录的异常写入事件。
  3. 禁用社区节点功能:在 n8n.config 中设置 nodes.communityPackage.enabled: false,重启后生效。
  4. 防火墙隔离:确保 n8n 实例无法通过出站访问未知的 Git 仓库(仅允许内部 GitLab/GitHub Enterprise)。
  5. 定期重启前检查:自定义脚本在每次重启前检查社区节点目录是否包含意外符号链接。

云用户

n8n 云实例无需自行操作,平台方会自动推送修复版本。若您使用云实例,请关注官方状态页面,确认更新部署时间。在更新完成前,建议暂停使用包含 Git 节点的工作流。


参考资料


免责声明:本文基于 NVD 公开数据分析,旨在提供安全预警与技术参考。所有利用代码与具体实施细节仅供参考,请勿用于非法用途。建议组织尽快安排修复。