Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
n8n-function-vm2 — Proof-of-Concept und Lab für einen Sandbox-Escape in n8n 2.42.0: Versteckte Function/FunctionItem-Knoten führen JS im Hauptprozess aus und ermöglichen authentifizierten Mitgliedern Host-RCE. | Kitploit
Tools/GitHubGitHub/abraxas/n8n-function-vm2
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPost-ExploitationSicherheitsvirtualisierungPenetrationstestsRed TeamingLabs & Praxis
GitHubabraxas/n8n-function-vm2

n8n-function-vm2

Proof-of-Concept und Lab für einen Sandbox-Escape in n8n 2.42.0: Versteckte Function/FunctionItem-Knoten führen JS im Hauptprozess aus und ermöglichen authentifizierten Mitgliedern Host-RCE.

14vor 7 TagenNoch nicht geprüft
Repository anzeigen

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Abraxas Labs - n8n-function-vm2

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

Write-up: https://abraxaslabs.tech/research/n8n-function-vm2

n8n-function-vm2

n8n 2.42.0 - n8n GmbH

GHSA-j4p8-h8mh-rh8q hat n8n-nodes-base.code auf den JS-Task-Runner-Child-Prozess verschoben. Der Produktions-Spawn fügt --disallow-code-generation-from-strings und --disable-proto=delete hinzu. Übrig bleibt das, was sie versteckt statt verschoben haben. Function.node.ts ist hidden: true. FunctionItem ebenfalls. LangChain Code ebenfalls. Das Ausblenden in der Palette ist nur ein UI-Flag. Beim Speichern/Importieren von Workflow-JSON wird der Typ weiterhin aufgelöst. Das Standard-NODES_EXCLUDE umfasst nur Execute Command und Local File Trigger. Der Ausführungspfad ist ein prozessinternes vm2 NodeVM 3.12.2 im n8n-Hauptprozess.

Ein Standard-Mitglied, das einen Workflow erstellen kann, kann JS im n8n-Hauptprozess ausführen. Versteckt ist keine ACL.

IDnoch keine CVE
CWECWE-94, CWE-269
CVSSHoch: 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Produktn8n
Betroffenbis 2.42.0 (86c23326); Überbleibsel von GHSA-j4p8
Authauthentifiziertes Mitglied mit Workflow-Erstellen/Importieren/Ausführen
LizenzGNU Affero GPL v3.0
Labnur 127.0.0.1

Was ein Angreifer tun kann

Als Standard-Mitglied einen Workflow importieren oder erstellen, dessen Node-type n8n-nodes-base.function (oder functionItem oder @n8n/n8n-nodes-langchain.code) ist, und ihn ausführen. Das JS läuft im n8n-Hauptprozess.

Das ist Host-RCE unter der n8n-UID: Instanz-Geheimnisse, der Credential-Ciphertext anderer Benutzer auf der Festplatte, die DB. Von Multi-Tenant-Mitglied zu Instanz-Übernahme. Kein OS-LPE. Nicht unauthentifiziert. Code v2 auf derselben Instanz sieht process nicht auf diese Weise.

Gleiches Produkt, verwandtes Überbleibsel: Databricks path join.

Wie ich es gefunden habe

Ich habe zuerst die GHSA-Welle vom 16. September 2026 gelesen, dann zehn Jagden auf dem Tag [email protected]. Expression-Sandbox, Code/Function/vm2, Credentials, Webhooks, HTTP/SSRF, Git-Node, Community-Pakete, Auth/SSO, Node-Injection, öffentliche API. Die meisten Highs dieser Welle sind auf diesem Pin geschlossen. Code war nicht abgeschlossen.

Die Breaking-Change-Regeln von v3 markieren Function / FunctionItem bereits als entfernt. Auf 2.42.0 sind sie ein Überbleibsel, keine beabsichtigte langfristige Sandbox. Function injiziert außerdem this.helpers, einschließlich Helper, die der JS-Runner als nicht unterstützt auflistet. Ich brauchte kein öffentliches vm2-Gadget, um die Prozessgrenze zu beweisen.

Ich habe ein unverändertes n8nio/n8n:2.42.0 aufgesetzt, ein Mitglied registriert (nicht den Instanz-Eigentümer), n8n-nodes-base.function importiert und ausgeführt. Function pid=7 ist die n8n-Haupt-PID. Dasselbe JS in Code v2: hasProcess: false. Task-Runner-Child ist PID 26. Witness N8N-FUNCTION-VM2-WITNESS.

Bereits dokumentierte Irrwege: Function-Typ als versteckt/unbekannt abgelehnt (dann ist der Node tatsächlich ausgeschlossen); Function-PID gleich dem Task-Runner-Child (dann ist er bereits verschoben); Code v2 sieht process (dann ist der Runner nicht die Kontrolle); ein vm2-Exploit-Gadget, eine Reverse Shell, OS-LPE. Theater. Der Witness ist Haupt-PID vs. hasProcess: false.

Lab

cd lab
./run.sh

Ziel nur http://127.0.0.1:18201. Standard NODES_EXCLUDE. Angreifer ist ein Mitglied.

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

Die Behebung

Fügen Sie n8n-nodes-base.function, n8n-nodes-base.functionItem und @n8n/n8n-nodes-langchain.code zum Standard-NODES_EXCLUDE hinzu oder leiten Sie sie durch JsTaskRunnerSandbox um, so wie es Code v2 bereits tut. Die Palette-Einstellung hidden reicht nicht aus.

Referenzen

  • github.com/n8n-io/n8n Tag [email protected]
  • Function.node.ts · Code.node.ts · nodes.config.ts · task-runner-process-js.ts
  • In der Nähe gepatcht: GHSA-j4p8-h8mh-rh8q
  • Gleiches Produkt: n8n-databricks-path-join
  • CWE-94 · CWE-269

Lizenz

GNU Affero GPL v3.0. Siehe LICENSE. Nur Loopback-Lab. Keine Gewährleistung.

Tool herunterladen