Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
n8n-function-vm2 — 针对 n8n 2.42.0 沙箱逃逸的漏洞验证与实验环境:隐藏的 Function/FunctionItem 节点在主进程中执行 JS,使已认证成员获得主机 RCE。 | Kitploit
工具/GitHubGitHub/abraxas/n8n-function-vm2
漏洞分析漏洞利用Web应用程序漏洞利用后渗透利用安全虚拟化渗透测试红队实验室与实践
GitHubabraxas/n8n-function-vm2

n8n-function-vm2

针对 n8n 2.42.0 沙箱逃逸的漏洞验证与实验环境:隐藏的 Function/FunctionItem 节点在主进程中执行 JS,使已认证成员获得主机 RCE。

查看仓库
115天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Abraxas Labs - n8n-function-vm2

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  n8n-function-vm2

n8n-function-vm2

n8n 2.42.0 - n8n GmbH

GHSA-j4p8-h8mh-rh8q 将 n8n-nodes-base.code 迁移到了 JS 任务运行器子进程。生产环境启动时添加了 --disallow-code-generation-from-strings 和 --disable-proto=delete。遗留的是那些他们隐藏起来而非迁移的节点。Function.node.ts 是 hidden: true。FunctionItem 也是。LangChain Code 也是。面板隐藏只是一个 UI 标志。工作流 JSON 保存/导入仍然会解析该类型。默认的 NODES_EXCLUDE 仅包含 Execute Command 和 Local File Trigger。执行路径位于 n8n 主进程中的进程内 vm2 NodeVM 3.12.2。

一个能够创建工作流的默认成员即可在 n8n 主进程中运行 JS。隐藏不是 ACL。

ID暂无 CVE
CWECWE-94, CWE-269
CVSSHigh: 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
产品n8n
受影响版本至 2.42.0(86c23326);GHSA-j4p8 的遗留问题
认证具有工作流创建/导入/执行权限的已认证成员
许可证GNU Affero GPL v3.0
实验环境仅限 127.0.0.1

攻击者能做什么

作为默认成员,导入或创建一个节点 type 为 n8n-nodes-base.function(或 functionItem,或 @n8n/n8n-nodes-langchain.code)的工作流并执行它。该 JS 运行在 n8n 主进程中。

这就是以 n8n UID 身份实现的宿主机 RCE:实例密钥、磁盘上其他用户的凭据密文、数据库。多租户成员到实例接管。不是操作系统 LPE。不是未认证。同一实例上的 Code v2 无法以那种方式看到 process。

同一产品,同类遗留问题:Databricks path join。

我是如何发现的

我先阅读了 2026 年 9 月 16 日的 GHSA 浪潮,然后在标签 [email protected] 上进行了十次搜寻。表达式沙箱、Code/Function/vm2、凭据、webhooks、HTTP/SSRF、Git 节点、社区包、认证/SSO、节点注入、公共 API。该浪潮中的大多数 High 在此版本上已关闭。Code 尚未完成。

v3 破坏性变更规则已将 Function / FunctionItem 标记为 已移除。在 2.42.0 上它们是遗留物,而非预期的长期沙箱。Function 还会注入 this.helpers,包括 JS 运行器列为不支持的 helpers。我不需要公开的 vm2 gadget 来证明进程边界。

我搭建了原版 n8nio/n8n:2.42.0,注册了一个 成员(非实例所有者),导入 n8n-nodes-base.function,执行它。Function 的 pid=7 就是 n8n 主 PID。Code v2 中的相同 JS:hasProcess: false。任务运行器子进程是 pid 26。见证 N8N-FUNCTION-VM2-WITNESS。

已记录的弯路:Function 类型被拒绝为隐藏/未知(然后该节点实际上被排除);Function pid 等于任务运行器子进程(然后它已经迁移);Code v2 看到 process(然后运行器不是控制点);vm2 漏洞利用 gadget、反向 shell、操作系统 LPE。都是表演。见证是主 PID 对比 hasProcess: false。

实验环境

cd lab
./run.sh

目标 仅限 http://127.0.0.1:18201。默认 NODES_EXCLUDE。攻击者为成员。

authenticated-as=member
function-fields pid=7 witness=N8N-FUNCTION-VM2-WITNESS
code-fields hasProcess=False pid=None
compare function_pid=7 code_pid=None main_pid=7 runner_pid=26 who=member
SUCCESS N8N-FUNCTION-VM2 who=member function_pid=7 code_pid=None main_pid=7 runner_pid=26 N8N-FUNCTION-VM2-WITNESS

修复方案

将 n8n-nodes-base.function、n8n-nodes-base.functionItem 和 @n8n/n8n-nodes-langchain.code 添加到默认 NODES_EXCLUDE,或者像 Code v2 已经做的那样将它们路由到 JsTaskRunnerSandbox。面板 hidden 不够。

参考资料

  • github.com/n8n-io/n8n 标签 [email protected]
  • Function.node.ts · Code.node.ts · nodes.config.ts · task-runner-process-js.ts
  • 附近已修补:GHSA-j4p8-h8mh-rh8q
  • 同一产品:n8n-databricks-path-join
  • CWE-94 · CWE-269

许可证

GNU Affero GPL v3.0。参见 LICENSE。仅限回环实验环境。无担保。

下载工具