Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
n8n-function-vm2 — Proof-of-concept e lab per un sandbox escape di n8n 2.42.0: i nodi Function/FunctionItem nascosti eseguono JS nel processo principale, concedendo ai membri autenticati RCE sull'host. | Kitploit
Strumenti/GitHubGitHub/abraxas/n8n-function-vm2
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPost-ExploitVirtualizzazione per la SicurezzaPenetration TestingRed TeamingLab e Pratica
GitHubabraxas/n8n-function-vm2

n8n-function-vm2

Proof-of-concept e lab per un sandbox escape di n8n 2.42.0: i nodi Function/FunctionItem nascosti eseguono JS nel processo principale, concedendo ai membri autenticati RCE sull'host.

115 giorni faNon ancora revisionato
Vedi Repository

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

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 ha spostato n8n-nodes-base.code sul processo figlio JS task-runner. Lo spawn in produzione aggiunge --disallow-code-generation-from-strings e --disable-proto=delete. Ciò che resta sono i nodi che hanno nascosto invece di spostare. Function.node.ts è hidden: true. Lo è anche FunctionItem. Lo è anche LangChain Code. Nascondere dalla palette è un flag dell'interfaccia. Il salvataggio/importazione del JSON del workflow risolve comunque il tipo. Il valore predefinito di NODES_EXCLUDE è solo Execute Command e Local File Trigger. Il percorso di esecuzione è vm2 NodeVM 3.12.2 in-process nel processo principale di n8n.

Un membro predefinito che può creare un workflow può eseguire JS nel processo principale di n8n. Nascosto non è una ACL.

IDnessuna CVE al momento
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
Prodotton8n
Affettofino alla 2.42.0 (86c23326); residuo di GHSA-j4p8
Authmembro autenticato con creazione/importazione/esecuzione di workflow
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1

Cosa può fare un attaccante

Come membro predefinito, importare o creare un workflow il cui nodo type è n8n-nodes-base.function (o functionItem, o @n8n/n8n-nodes-langchain.code) ed eseguirlo. Il JS viene eseguito nel processo principale di n8n.

Si tratta di RCE sull'host con l'UID di n8n: segreti dell'istanza, ciphertext delle credenziali degli altri utenti su disco, il DB. Da membro multi-tenant a takeover dell'istanza. Non è LPE del sistema operativo. Non è non autenticato. Code v2 sulla stessa istanza non vede process in quel modo.

Stesso prodotto, residuo affine: Databricks path join.

Come l'ho trovato

Ho letto prima la ondata di GHSA del 16 settembre 2026, poi dieci ricerche sul tag [email protected]. Sandbox delle espressioni, Code/Function/vm2, credenziali, webhook, HTTP/SSRF, nodo Git, pacchetti della community, auth/SSO, injection nei nodi, API pubblica. La maggior parte delle vulnerabilità High di quella ondata sono chiuse su questo pin. Code non era stato completato.

Le regole di breaking change della v3 marcano già Function / FunctionItem come rimossi. Sulla 2.42.0 sono un residuo, non una sandbox intenzionale a lungo termine. Function inietta anche this.helpers, inclusi helper che il runner JS elenca come non supportati. Non mi è servito un gadget pubblico di vm2 per dimostrare il confine del processo.

Ho avviato l'immagine stock n8nio/n8n:2.42.0, registrato un membro (non il proprietario dell'istanza), importato n8n-nodes-base.function, eseguito. Il pid=7 di Function è il PID principale di n8n. Lo stesso JS in Code v2: hasProcess: false. Il processo figlio task-runner è il pid 26. Witness N8N-FUNCTION-VM2-WITNESS.

Vicoli ciechi già registrati: tipo Function rifiutato come nascosto/sconosciuto (allora il nodo è effettivamente escluso); pid di Function uguale a quello del processo figlio task-runner (allora si è già spostato); Code v2 che vede process (allora il runner non è il controllo); un gadget di exploit vm2, una reverse shell, LPE del sistema operativo. Teatro. Il witness è PID principale vs hasProcess: false.

Lab

cd lab
./run.sh

Target solo http://127.0.0.1:18201. NODES_EXCLUDE predefinito. L'attaccante è un 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

La correzione

Aggiungere n8n-nodes-base.function, n8n-nodes-base.functionItem e @n8n/n8n-nodes-langchain.code al valore predefinito di NODES_EXCLUDE, oppure instradarli attraverso JsTaskRunnerSandbox come già fa Code v2. Il hidden nella palette non è sufficiente.

Riferimenti

  • github.com/n8n-io/n8n tag [email protected]
  • Function.node.ts · Code.node.ts · nodes.config.ts · task-runner-process-js.ts
  • Correlato già corretto: GHSA-j4p8-h8mh-rh8q
  • Stesso prodotto: n8n-databricks-path-join
  • CWE-94 · CWE-269

Licenza

GNU Affero GPL v3.0. Vedi LICENSE. Solo lab su loopback. Nessuna garanzia.

Scarica lo strumento