HackerNews

HackerNews
n8n 沙箱逃逸漏洞允许工作流编辑器以 n8n 进程身份运行 OS 命令

n8n 沙箱逃逸漏洞允许工作流编辑器以 n8n 进程身份运行 OS 命令

给文章评分:

n8n 已修复一个高严重性的表达式沙箱逃逸漏洞,该漏洞可能允许经过身份验证的工作流编辑器在运行该自动化平台的服务器上执行操作系统命令。Security Joes 在探查 n8n 针对 CVE-2026-27577 的 2 月修复是否存在另一个绕过方法时发现了该漏洞。
受影响版本范围为 <2.31.5 和 >=2.32.0,<2.32.1。n8n 已在 2.31.5 和 2.32.1 版本中修复了该漏洞。该问题编号为 GHSA-gv7g-jm28-cr3m,评级为高,CVSS 4.0 评分为 8.7,截至 2026 年 7 月 27 日尚未分配 CVE 编号。
管理员应进行更新,而非依赖 n8n 的临时指导(即限制实例访问并将工作流编辑权限仅限完全可信用户)。该公告将这些控制措施描述为不完整的短期缓解方案。公告中未列出已修复的 1.x 版本,也未说明 n8n Cloud 是否受到影响。
利用该漏洞需要拥有创建或修改工作流权限的有效账户,无需其他用户操作。成功利用后,攻击者将以 n8n 进程的权限执行命令。
Security Joes 在与 The Hacker News 分享的一份报告中表示,该访问权限可能暴露 N8N_ENCRYPTION_KEY,并允许解密存储在 n8n 中的凭据。它还可能打开通往已连接数据库、内部服务和云端点的路径。该公司在准备报告时尚未观察到野外利用。公开公告未说明该漏洞在修复前是否已被利用。
n8n 工作流构建器使用诸如 ={{ $json.email }} 之类的表达式。一个抽象语法树重写器将这些表达式中的自由 JavaScript 标识符重定向到 n8n 受控的数据上下文,而非 Node.js 运行时。在 2.31.4 版本中,VariablePolyfill.ts 将 ArrowFunctionExpression 放置在一个显式的 no-op 分支中。因此,像 () => process 这样的简洁箭头体可以将 process 解析为真实的 Node.js 全局对象,而非沙箱化值。
Security Joes 表示,第二个盲点在于 n8n 的属性检查,它检查成员表达式中的静态属性名称。Reflect.get() 将所请求的属性作为函数参数接收。研究人员利用这一区别恢复了 process.getBuiltinModule,加载了 child_process,并在主机上运行了一条命令。
他们通过已发布的工作流包和本地 n8n 实例,针对 n8n 2.30.4 测试了该概念验证。
对比公开的 2.31.4 和 2.31.5 源文件,确认了箭头函数的差距。但这并未独立确认 Security Joes 报告中描述的完整 Reflect.get() 利用链。修复后的重写器增加了一个专门的 ArrowFunctionExpression 处理器,将简洁箭头体中的裸标识符通过数据上下文进行路由。
"单独一个条件都不足以利用。两者均未被测试覆盖,"Security Joes 的研究团队在谈到其利用所依赖的两个条件时表示。Security Joes 最初估计该漏洞的评分将接近 CVE-2026-27577 的 9.4 关键级别;厂商发布的 8.7 是当前评分。
研究人员于 7 月 14 日发现了残留的逃逸漏洞,并于 7 月 15 日通过 n8n 的漏洞披露计划进行了报告。n8n 于 7 月 22 日发布了修复版本。防御者应审查最近创建或修改的工作流,查看是否存在意外的箭头函数或混淆的 JavaScript。他们还应查找作为 n8n 或 Node.js 进程子进程生成的 shell、PowerShell、curl 或 wget。如果发现可疑的工作流执行或主机命令活动,应轮换凭据。
这一发现延续了 n8n 自 2025 年以来修复的一系列表达式沙箱逃逸漏洞。此前是 CVE-2026-27577,一个评分为 9.4 的逃逸漏洞,于 2 月修复,此前研究人员发现 process 对象未经转换就通过了相同的标识符重写层。
在受影响部署中,如果 n8n 存储了广泛权限的凭据或可以访问敏感内部系统,那么入侵工作流编辑账户的攻击者可以利用该漏洞以 n8n 进程身份执行命令,并访问从 n8n 主机可达的服务。


消息来源:thehackernews.com;
本文由 HackerNews.cc 翻译整理,封面来源于网络;
转载请注明“转自 HackerNews.cc”并附上原文
分享到:
hackernews

hackernews

该作者暂无简介