Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
n8n-function-vm2 — Prova de conceito e laboratório para um escape de sandbox do n8n 2.42.0: nós ocultos Function/FunctionItem executam JS no processo principal, concedendo RCE no host a membros autenticados. | Kitploit
Ferramentas/GitHubGitHub/abraxas/n8n-function-vm2
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebPós-ExploraçãoVirtualização para SegurançaTestes de PenetraçãoRed TeamingLabs e Prática
GitHubabraxas/n8n-function-vm2

n8n-function-vm2

Prova de conceito e laboratório para um escape de sandbox do n8n 2.42.0: nós ocultos Function/FunctionItem executam JS no processo principal, concedendo RCE no host a membros autenticados.

14há 7 diasAinda não revisado
Ver Repositório

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Abraxas Labs - n8n-function-vm2

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

Análise: https://abraxaslabs.tech/research/n8n-function-vm2

n8n-function-vm2

n8n 2.42.0 - n8n GmbH

GHSA-j4p8-h8mh-rh8q moveu o n8n-nodes-base.code para o processo filho do task-runner JS. A inicialização em produção adiciona --disallow-code-generation-from-strings e --disable-proto=delete. O que sobra são os nós que eles esconderam em vez de mover. Function.node.ts está com hidden: true. O FunctionItem também. O LangChain Code também. Ocultar na paleta é apenas uma flag de UI. O salvamento/importação do JSON do workflow ainda resolve o tipo. O NODES_EXCLUDE padrão inclui apenas Execute Command e Local File Trigger. O caminho de execução é o vm2 NodeVM 3.12.2 in-process no processo principal do n8n.

Um membro padrão que pode criar um workflow consegue executar JS no processo principal do n8n. Oculto não é ACL.

IDainda sem CVE
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
Produton8n
Afetadoaté 2.42.0 (86c23326); resquício do GHSA-j4p8
Autenticaçãomembro autenticado com permissão de criar/importar/executar workflows
LicençaGNU Affero GPL v3.0
Labapenas 127.0.0.1

O que um atacante pode fazer

Como membro padrão, importar ou criar um workflow cujo type do nó seja n8n-nodes-base.function (ou functionItem, ou @n8n/n8n-nodes-langchain.code) e executá-lo. O JS é executado no processo principal do n8n.

Isso é RCE no host com o UID do n8n: segredos da instância, o texto cifrado das credenciais de outros usuários em disco, o banco de dados. De membro multi-tenant para tomada de controle da instância. Não é LPE de SO. Não é não autenticado. O Code v2 na mesma instância não enxerga process dessa forma.

Mesmo produto, resquício irmão: Databricks path join.

Como eu encontrei

Li primeiro a onda de GHSAs de 16 de setembro de 2026, depois fiz dez investigações na tag [email protected]. Sandbox de expressões, Code/Function/vm2, credenciais, webhooks, HTTP/SSRF, nó Git, pacotes da comunidade, auth/SSO, injeção de nós, API pública. A maioria dos problemas de severidade Alta dessa onda está corrigida nesta versão fixada. O Code não estava finalizado.

As regras de breaking change da v3 já marcam Function / FunctionItem como removidos. Na 2.42.0 eles são resquícios, não um sandbox de longo prazo intencional. O Function também injeta this.helpers, incluindo helpers que o runner JS lista como não suportados. Não precisei de um gadget público do vm2 para provar a fronteira de processo.

Subi o n8nio/n8n:2.42.0 padrão, cadastrei um membro (não o proprietário da instância), importei n8n-nodes-base.function, executei. O pid=7 do Function é o PID principal do n8n. O mesmo JS no Code v2: hasProcess: false. O processo filho do task-runner é o pid 26. Testemunha N8N-FUNCTION-VM2-WITNESS.

Caminhos errados já registrados: tipo Function rejeitado como oculto/desconhecido (então o nó na verdade está excluído); pid do Function igual ao do processo filho do task-runner (então ele já foi movido); Code v2 enxergando process (então o runner não é o controle); um gadget de exploit do vm2, um reverse shell, LPE de SO. Teatro. A testemunha é o PID principal versus hasProcess: false.

Lab

cd lab
./run.sh

Direcione apenas para http://127.0.0.1:18201. NODES_EXCLUDE padrão. O atacante é um membro.

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

A correção

Adicione n8n-nodes-base.function, n8n-nodes-base.functionItem e @n8n/n8n-nodes-langchain.code ao NODES_EXCLUDE padrão, ou encaminhe-os através do JsTaskRunnerSandbox da mesma forma que o Code v2 já faz. O hidden da paleta não é suficiente.

Referências

  • github.com/n8n-io/n8n tag [email protected]
  • Function.node.ts · Code.node.ts · nodes.config.ts · task-runner-process-js.ts
  • Corrigido nas proximidades: GHSA-j4p8-h8mh-rh8q
  • Mesmo produto: n8n-databricks-path-join
  • CWE-94 · CWE-269

Licença

GNU Affero GPL v3.0. Consulte LICENSE. Apenas laboratório de loopback. Sem garantia.

Baixar ferramenta