
Technische Untersuchung der Schwachstelle CVE-2025-68613 in n8n, die betroffene Versionen, ein Laborexplorationsszenario, offensive und defensive Analyse sowie Abhilfestrategien abdeckt.
n8n ist eine Workflow-Automatisierungsplattform, die zur Integration von Systemen und Diensten über visuelle Abläufe und JavaScript-Ausdrücke verwendet wird.
CVE-2025-68613 ist eine kritische Remote Code Execution (RCE)-Sicherheitslücke mit CVSS 9.9, die mehrere Versionen von n8n betrifft. Der Fehler tritt bei der Verarbeitung von JavaScript-Ausdrücken in Workflows in anfälligen Versionen auf, die nicht ordnungsgemäß isoliert sind. Dadurch können authentifizierte Benutzer mit Bearbeitungsberechtigungen Code außerhalb des erwarteten Verhaltens der Anwendung ausführen.
In der Praxis kann dieser Fehler ausgenutzt werden, um mit den Berechtigungen der Anwendung selbst Befehle auf dem Server auszuführen, auf dem n8n läuft. Betroffene Versionen reichen von 0.211.0 bis zu Versionen vor den in 1.120.4, 1.121.1 und 1.122.0 angewendeten Korrekturen.
Dieses Repository dokumentiert CVE-2025-68613 technisch und behandelt den Kontext des Fehlers, betroffene Versionen, Ausnutzung und empfohlene Abhilfemaßnahmen.

Es wird empfohlen, sofort auf Version 1.122.0 oder höher zu aktualisieren.
Um die Schwachstelle zu demonstrieren, sind die folgenden Bedingungen erforderlich:
Der Fehler tritt während der Erstellung und Ausführung von Workflows auf, nicht vor der Authentifizierung.
Der erste Schritt ist die Anmeldung an der n8n-Weboberfläche mit einem gültigen Benutzer.

Dieser Schritt bestätigt, dass der Angriff nicht anonym ist. Die Schwachstelle erfordert einen authentifizierten Benutzer.
Nach der Anmeldung überprüfen Sie, ob der Benutzer Berechtigungen zum Erstellen und Bearbeiten von Workflows hat.

Dies ist relevant, da nur Benutzer mit dieser Zugriffsebene dynamische Ausdrücke in Workflows einfügen können.
Erstellen Sie mit dem authentifizierten Benutzer einen neuen Workflow von Grund auf.

Hier beginnt die legitime Nutzung der n8n-Funktionalität, die in anfälligen Versionen ausgenutzt werden kann.
Der erste zum Workflow hinzugefügte Knoten ist der manuelle Trigger.

Was dieser Knoten tut: Ermöglicht die manuelle Ausführung des Workflows, dient als Startpunkt des Ablaufs.
In diesem Szenario dient es nur als Einstiegspunkt für die Workflow-Ausführung.
Der zweite hinzugefügte Knoten ist der Edit Fields (Set).

Was dieser Knoten tut: Dieser Knoten ermöglicht das Erstellen, Ändern oder Überschreiben von Datenfeldern innerhalb des Workflows. Er akzeptiert statische Werte oder JavaScript-Ausdrücke, die zur Ausführungszeit ausgewertet werden.
Genau an dieser Stelle manifestiert sich die Schwachstelle.
Fügen Sie im Wertfeld des Edit Fields (Set)-Knotens einen JavaScript-Ausdruck ein, der von {{ }} umschlossen ist, dem Format, das n8n zur Auswertung dynamischer Ausdrücke verwendet.

Beispiel-Payload:
{{ (function(){
return this.process.mainModule
.require('child_process')
.execSync('id')
.toString()
})() }}
(function(){ ... })(): Definiert eine selbstaufrufende Funktion, die die Kapselung der gesamten Logik ermöglicht und direkt einen Wert an den Workflow-Ausdruck zurückgibt.this.process: Greift auf das interne Node.js-process-Objekt zu, das Laufzeitinformationen und Ressourcen bereitstellt.process.mainModule: Ermöglicht den Zugriff auf das Hauptmodul der Anwendung und damit das Laden anderer interner Node.js-Module.require('child_process'): Natives Node.js-Modul, das das Erstellen neuer Prozesse im Betriebssystem und das Ausführen externer Befehle ermöglicht.execSync('id'): Führt einen Befehl direkt auf dem Betriebssystem aus, auf dem n8n läuft, unter Verwendung der Prozessberechtigungen der Anwendung..toString(): Konvertiert die Ausgabe des ausgeführten Befehls in Text, sodass das Ergebnis in der n8n-Oberfläche angezeigt werden kann.Das angezeigte Ergebnis bestätigt, dass der Befehl mit den n8n-Prozessberechtigungen auf dem Betriebssystem ausgeführt wurde, was eine Remote Code Execution (RCE) darstellt.
| Status | n8n Version | Hinweis |
|---|
| ❌ Betroffen | >= 0.211.0 | Einführung des anfälligen Mechanismus |
| ❌ Betroffen | < 1.120.4 | Anfällig bis zum Patch in Branch 1.120 |
| ❌ Betroffen | < 1.121.1 | Anfällig bis zum Patch in Branch 1.121 |
| ❌ Betroffen | < 1.122.0 | Anfällig bis zum Patch in Branch 1.122 |
| ✅ Behoben | 1.120.4 | Offizieller Fix angewendet |
| ✅ Behoben | 1.121.1 | Offizieller Fix angewendet |
| ✅ Behoben | >= 1.122.0 | Fix standardmäßig enthalten |