Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
n8n-function-vm2 — Prueba de concepto y laboratorio para un escape de sandbox de n8n 2.42.0: los nodos ocultos Function/FunctionItem ejecutan JS en el proceso principal, otorgando a los miembros autenticados RCE en el host. | Kitploit
Herramientas/GitHubGitHub/abraxas/n8n-function-vm2
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPost-ExplotaciónVirtualización de SeguridadPruebas de PenetraciónRed TeamingLabs y Práctica
GitHubabraxas/n8n-function-vm2

n8n-function-vm2

Prueba de concepto y laboratorio para un escape de sandbox de n8n 2.42.0: los nodos ocultos Function/FunctionItem ejecutan JS en el proceso principal, otorgando a los miembros autenticados RCE en el host.

1hace 15 díasAún no revisado
Ver Repositorio

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

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 movió n8n-nodes-base.code al proceso hijo task-runner de JS. El spawn de producción añade --disallow-code-generation-from-strings y --disable-proto=delete. Lo que queda son los nodos que ocultaron en lugar de mover. Function.node.ts tiene hidden: true. FunctionItem también. LangChain Code también. Ocultar en la paleta es un flag de UI. El guardado/importación del JSON del workflow sigue resolviendo el tipo. El NODES_EXCLUDE por defecto solo incluye Execute Command y Local File Trigger. La ruta de ejecución es vm2 NodeVM 3.12.2 en proceso dentro del proceso principal de n8n.

Un miembro por defecto que puede crear un workflow puede ejecutar JS en el proceso principal de n8n. Oculto no es una ACL.

IDsin CVE todavía
CWECWE-94, CWE-269
CVSSAlto: 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Producton8n
Afectadohasta 2.42.0 (86c23326); remanente de GHSA-j4p8
Authmiembro autenticado con permiso de crear/importar/ejecutar workflows
LicenciaGNU Affero GPL v3.0
Labsolo 127.0.0.1

Qué puede hacer un atacante

Como miembro por defecto, importar o crear un workflow cuyo type de nodo sea n8n-nodes-base.function (o functionItem, o @n8n/n8n-nodes-langchain.code) y ejecutarlo. El JS se ejecuta en el proceso principal de n8n.

Eso es RCE en el host con el UID de n8n: secretos de la instancia, el texto cifrado de credenciales de otros usuarios en disco, la base de datos. De miembro multi-tenant a toma de control de la instancia. No es LPE del SO. No es no autenticado. Code v2 en la misma instancia no ve process de esa forma.

Mismo producto, remanente hermano: Databricks path join.

Cómo lo encontré

Primero leí la oleada de GHSA del 16 de septiembre de 2026, luego diez cacerías sobre el tag [email protected]. Sandbox de expresiones, Code/Function/vm2, credenciales, webhooks, HTTP/SSRF, nodo Git, paquetes de la comunidad, auth/SSO, inyección de nodos, API pública. La mayoría de los Altos de esa oleada están cerrados en este pin. Code no estaba terminado.

Las reglas de cambios disruptivos de v3 ya marcan Function / FunctionItem como eliminados. En 2.42.0 son un remanente, no un sandbox intencionado a largo plazo. Function además inyecta this.helpers, incluidos helpers que el runner de JS lista como no soportados. No necesité un gadget público de vm2 para demostrar la frontera de proceso.

Levanté el n8nio/n8n:2.42.0 estándar, registré un miembro (no el propietario de la instancia), importé n8n-nodes-base.function, lo ejecuté. El pid=7 de Function es el PID principal de n8n. El mismo JS en Code v2: hasProcess: false. El proceso hijo task-runner es el pid 26. Testigo N8N-FUNCTION-VM2-WITNESS.

Caminos equivocados ya registrados: tipo Function rechazado por oculto/desconocido (entonces el nodo sí está excluido); pid de Function igual al proceso hijo task-runner (entonces ya se movió); Code v2 viendo process (entonces el runner no es el control); un gadget de exploit de vm2, una reverse shell, LPE del SO. Teatro. El testigo es el PID principal frente a hasProcess: false.

Lab

cd lab
./run.sh

Objetivo solo http://127.0.0.1:18201. NODES_EXCLUDE por defecto. El atacante es un miembro.

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

La solución

Añadir n8n-nodes-base.function, n8n-nodes-base.functionItem y @n8n/n8n-nodes-langchain.code al NODES_EXCLUDE por defecto, o enrutarlos a través de JsTaskRunnerSandbox como ya hace Code v2. hidden en la paleta no es suficiente.

Referencias

  • github.com/n8n-io/n8n tag [email protected]
  • Function.node.ts · Code.node.ts · nodes.config.ts · task-runner-process-js.ts
  • Parcheado cercano: GHSA-j4p8-h8mh-rh8q
  • Mismo producto: n8n-databricks-path-join
  • CWE-94 · CWE-269

Licencia

GNU Affero GPL v3.0. Ver LICENSE. Solo lab en loopback. Sin garantía.

Descargar herramienta