Дослідники виявили критичну вразливість (CVE-2026-21858, CVSS 10.0) у платформі автоматизації n8n, яка дозволяє зловмисникам повністю захопити локально розгорнуті екземпляри системи. За оцінками, під загрозою перебувають близько 100 000 серверів по всьому світу.
Офіційних обхідних шляхів для цієї вразливості не існує. Користувачам необхідно терміново оновитися до версії 1.121.0 або новішої.
Що таке n8n
Платформа n8n стала провідним інструментом для побудови автоматизованих робочих процесів в епоху штучного інтелекту та AI-агентів. З понад 100 мільйонами завантажень через Docker, мільйонами користувачів та тисячами підприємств, які її використовують, n8n перетворилася на центральну нервову систему автоматизаційної інфраструктури багатьох організацій.
Платформа пропонує зручний інтерфейс drag-and-drop і незліченну кількість інтеграцій, що дає змогу навіть нетехнічним користувачам створювати автоматизації та делегувати завдання. Крім того, n8n має велику спільноту, яка ділиться готовими робочими процесами для найрізноманітніших сценаріїв використання.
Технічні деталі вразливості CVE-2026-21858
Перед розглядом технічних аспектів варто відзначити, що команда безпеки n8n підтримує високий рівень захищеності продукту та надзвичайно швидко реагує на повідомлення про вразливості.
Webhooks у n8n
Webhook — це компонент, який допомагає сервісам працювати за принципом подієвої архітектури. Замість постійного опитування інших додатків для перевірки подій, система просто очікує специфічних повідомлень.
У n8n вебхуки виступають початковою точкою для робочих процесів, дозволяючи отримувати вхідні дані з форм, чат-повідомлень, сповіщень WhatsApp тощо.
Потік виконання для всіх вузлів Webhook починається однаково і проходить через проміжну функцію parseRequestBody(). Після цього викликається логічна функція, специфічна для кожного типу вебхука.
Функція parseRequestBody()
Ця проміжна функція зчитує заголовок Content-Type для визначення способу парсингу тіла запиту. Для запитів типу multipart/form-data використовується функція parseFormData() (парсер завантаження файлів), для всіх інших типів контенту — parseBody() (звичайний парсер тіла).
Ключовий момент: функція парсить HTTP-тіло на основі заголовка Content-Type, а потім зберігає декодований результат у глобальній змінній req.body.
Обробка завантажених файлів
Парсер завантаження файлів є обгорткою навколо функції parse() бібліотеки Formidable — Node.js-бібліотеки для обробки завантаження файлів. Formidable автоматично зберігає завантажені файли у випадково згенеровані шляхи в тимчасовій директорії, що захищає від атак path traversal.
На відміну від звичайного парсера, який заповнює req.body, парсер завантаження файлів заповнює req.body.files виводом з Formidable.
Стандартна практика в n8n для будь-якої функції обробки файлів — отримувати завантажені файли безпосередньо з req.body.files. Функція ChatTrigger Webhook є хорошим прикладом цього патерну: спочатку перевіряється, що Content-Type є multipart/form-data, а потім викликається handleFormData() для обробки файлів.
Експлуатація вразливості
Сценарій: корпоративна база знань
Уявімо типовий сценарій: велике підприємство створює централізовану базу знань на основі технології RAG (Retrieval-Augmented Generation), яка об’єднує розрізнену документацію — специфікації продуктів, HR-політики, фінансові звіти.
Архітектура проста: будь-який співробітник може завантажити відповідні дані до бази знань через форму та отримати інформацію через чат-інтерфейс.
Читання довільних файлів
Щоб використати вразливість “плутанини типів контенту” для читання довільних файлів з екземпляра n8n, потрібно перехопити HTTP-запит під час завантаження файлу через форму та змінити content-type з multipart/form-data на інший (наприклад, application/json). Після цього тіло запиту формується таким чином, щоб контролювати об’єкт req.body.files.
Контролюючи req.body.files[number].filepath, зловмисник завантажує внутрішній файл (наприклад, /etc/passwd) до організаційної бази знань замість завантаженого. Для отримання вмісту цього файлу достатньо запитати про нього через чат-інтерфейс.
Підробка сесії та обхід автентифікації
Платформа n8n зберігає сесію автентифікації в cookie під назвою n8n-auth. Після успішного входу n8n генерує значення цього cookie через специфічний процес: створюється словник з ключовими деталями користувача (ID користувача та перші 10 символів SHA256-хешу, обчисленого з рядка, що об’єднує email та пароль користувача), після чого цей payload підписується секретним ключем.
Усі елементи, необхідні для підробки дійсної сесії, існують у локальних файлах на екземплярі n8n:
- Записи всіх користувачів зберігаються в базі даних n8n, яка в локальних розгортаннях (Docker, встановлення з вихідного коду) зберігається на диску (наприклад, /home/node/.n8n/database.sqlite у Docker)
- Секретний ключ шифрування зберігається у конфігураційному файлі (/home/node/.n8n/config)
Використовуючи вразливість для завантаження бази даних до бази знань, зловмисник може через чат-інтерфейс отримати ID адміністратора, email та хешований пароль. Потім аналогічно витягується ключ шифрування з конфігураційного файлу.
Маючи ці дані, зловмисник створює JWT-хеш та встановлює його значення в cookie n8n-auth, отримуючи доступ як адміністратор.
Виконання коду
Після обходу автентифікації для досягнення виконання коду достатньо створити новий робочий процес з вузлом “Execute Command” — і зловмисник отримує повний контроль над системою.
Масштаб загрози
Скомпрометований екземпляр n8n означає катастрофічні наслідки. Платформа з’єднує незліченні системи: корпоративний Google Drive, API-ключі OpenAI, дані Salesforce, IAM-системи, платіжні процесори, клієнтські бази даних, CI/CD-конвеєри тощо.
Для великого підприємства з понад 10 000 співробітників, які використовують один сервер n8n, компрометація не означає втрату однієї системи — це означає надання зловмисникам ключів до всього. API-облікові дані, OAuth-токени, підключення до баз даних, хмарне сховище — усе централізовано в одному місці.
Платформа n8n стає єдиною точкою відмови та золотою жилою для зловмисників.
Рекомендації
Користувачам n8n необхідно:
- Терміново оновити n8n до версії 1.121.0 або новішої
- Не виставляти n8n в інтернет без крайньої необхідності
- Вимагати автентифікацію для всіх створюваних форм

