n8n 自托管版本存在高危漏洞:遗留代码节点可导致任意文件读写

自托管 n8n 工作流自动化平台在特定配置下存在安全漏洞,允许拥有工作流编辑权限的认证用户通过遗留代码节点读写主机文件系统,建议立即升级或调整配置以缓解风险。

漏洞详情

CVE ID: CVE-2025-68697 GHSA ID: GHSA-j4p8-h8mh-rh8q 严重性: 高危 (CVSS 分数 7.1) 影响范围: n8n 版本 < 2.0.0 已修复版本: n8n 版本 >= 2.0.0

影响分析

自托管的 n8n 实例中,如果代码节点(Code node)运行在传统的(非任务运行器)JavaScript 执行模式下,拥有工作流编辑权限的认证用户可以通过代码节点调用内部辅助函数。这允许工作流编辑器以 n8n 进程相同的权限在 n8n 主机上执行操作,包括:

  • 读取主机文件系统中的文件(受限于实例配置的任意文件访问限制以及操作系统/容器权限)。
  • 向主机文件系统写入文件(受限于相同的限制)。

从 n8n 1.2.1 版本开始,默认阻止访问 n8n 主目录(.n8n)中的文件。然而,除非配置了额外的文件访问限制,否则这并不能限制对文件系统其他部分的访问。

解决方案

官方补丁

  • 升级到 n8n 2.0.0 或更高版本,这些版本默认启用任务运行器(task runners)来执行代码节点。
  • 对于 n8n 1.71.0 及更高版本,可以通过设置环境变量 N8N_RUNNERS_ENABLED=true 来启用任务运行器。

临时缓解措施: 如果无法立即迁移到任务运行器模式,可采取以下步骤:

  1. 通过设置环境变量 N8N_RESTRICT_FILE_ACCESS_TO 来限制文件操作到一个专用目录(例如 ~/.n8n-files),并确保该目录不包含敏感数据。
  2. 保持 N8N_BLOCK_FILE_ACCESS_TO_N8N_FILES=true(默认值)以阻止访问 .n8n 目录和用户定义的配置文件。
  3. 如果工作流编辑者不完全受信任,考虑使用环境变量 NODES_EXCLUDE 来禁用高风险节点(包括代码节点)。

技术参考

安全弱点标识

该漏洞与以下通用弱点枚举(CWE)相关联:

  • CWE-269: 权限管理不当 - 产品未正确分配、修改、跟踪或检查参与者的权限,为其创建了非预期的控制范围。
  • CWE-749: 暴露危险方法或函数 - 产品提供了与外部参与者交互的应用程序编程接口(API)或类似接口,但该接口包含一个未受到适当限制的危险方法或函数。

致谢

此漏洞由 berkdedekarginoglu 报告。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计