невзлом

Срочно · React / Next.js

CVE-2025-55182 React Server Components RCE — KEV, ransomware Known

· CVE-2025-55182

← Простая версия для всех

Суть

Небезопасный разбор payload React Server Function / RSC: неаутентифицированный сетевой запрос → RCE в процессе приложения (дальше — хост, если права позволяют). CVSS 10.0 (React Team). CVE-2025-66478 — rejected, связан с 55182. Вектор: сеть, без логина и без UI-действия. По React Team: приложение с поддержкой RSC может быть уязвимо даже если своих Server Function endpoints нет.

Затронуто и исправлено

КомпонентУязвимоМинимум с фиксом
react-server-dom-webpack / parcel / turbopack19.0.0; 19.1.0–19.1.1; 19.2.019.0.1 / 19.1.2 / 19.2.1
Next.js 13.3+ / 14.xниже патча линии14.2.35
Next.js 15.0 … 15.5ниже патча линии15.0.8 / 15.1.12 / 15.2.9 / 15.3.9 / 15.4.11 / 15.5.10
Next.js 16.0 / 16.1ниже патча линии16.0.11 / 16.1.5
Next canary 15.x / 16.xуязвимый canary15.6.0-canary.60 / 16.1.0-canary.19 (или новее)

Также: React Router (unstable RSC), Waku, @parcel/rsc, @vitejs/plugin-rsc, rwsdk — по блогу React. Клиент-only React без сервера / без RSC-плагина — вне 55182. Pages Router сам по себе не даёт этот RCE; вендор всё равно рекомендует патч-линию.

Смежные (не RCE, те же пакеты/линии; детали в статье): CVE-2025-55184, CVE-2025-67779, CVE-2025-55183, CVE-2026-23864 (26.01.2026). Ориентир версий — актуальная таблица на странице React.

Эксплуатация

  • CISA KEV: added 2025-12-05, due 2025-12-12, ransomware Known.
  • JPCERT/CC (02.2026): инциденты с компрометацией через 55182 вскоре после disclosure; на одном хосте — несколько независимых пост-эксплуатаций.
  • EPSS ≈ 0.997 (лента 06.11.2026).
  • Вторично: массовое сканирование в 2025–2026 — без ссылок.
  • Публичные PoC/модули атак существуют — не ссылаем, не описываем.

Как проверить

Ориентир — версии в lockfile (и то же на хосте деплоя после выкладки).

# npm — главный ориентир на типичном Next: версия next (RSC часто vendored внутрь next)
npm ls next
npm ls react-server-dom-webpack react-server-dom-parcel react-server-dom-turbopack 2>/dev/null
# yarn / pnpm / bun — смотреть lockfile
rg -n 'react-server-dom-(webpack|parcel|turbopack)|"next":|next@|"next@|next:' package-lock.json yarn.lock pnpm-lock.yaml bun.lock 2>/dev/null | head

Пустой вывод по react-server-dom-* не значит «не затронуто»: на обычном Next App Router RSC часто внутри next — сверяйте next по таблице. Пустой rg ≠ «чисто».

Критерий закрытия: RSC ≥ таблицы (если пакет top-level есть); Next ≥ патча своей minor-линии; running процесс/контейнер — новый билд (не старый PM2/systemd/digest). Сравнение: 19.1.1 < 19.1.2; 15.5.9 < 15.5.10; 16.0.10 < 16.0.11.

Пройти все окружения с App Router / RSC, если торчат в интернет (prod, staging, preview).

Как исправить

  1. Перед обновлением — бэкап кода/БД или snapshot хоста.
  2. Обновить зависимости. Примеры:
    npm install next@14.2.35   # линия 13.3+/14.x
    npm install next@15.5.10   # линия 15.5.x
    npm install next@16.0.11   # линия 16.0.x
    npm install react@latest react-dom@latest react-server-dom-webpack@latest
    yarn/pnpm — те же версии пакетов. Canary 14.3.0-canary.77+ → стабильный 14.2.35; canary 15/16 → минимумы таблицы или стабильная линия.
  3. Пересобрать образ/артефакт без кэша слоя node_modules (--no-cache / эквивалент CI), выкатить, перезапустить сервис (systemctl/pm2 restart/новый ReplicaSet). Снять pin на старый digest.
  4. После ротации секретов — перевыпустить деплой с новыми env в CI/оркестраторе.
  5. Hosting WAF/mitigations — только временное дополнение; React Team: не полагаться вместо патча. Workaround как замена обновлению — нет.

Если обновить нельзя

Официального workaround нет. До патча: убрать приложение с публичного доступа (закрытый ingress / VPN / снять публичный маршрут PaaS). Одного включения WAF недостаточно. Неофициальные патчи и «однострочники с форумов» — не предлагать. Отключение только Server Function endpoints не считается достаточной мерой (вендор: уязвимость возможна при поддержке RSC без своих endpoints).

Признаки взлома и что делать

Индикаторов от React Team почти нет. При долгой экспозиции после 03.12.2025 считать компрометацию возможной: патча мало.

  1. Ротация .env / secrets manager, ключей CI/CD, токенов хостинга, сессий админов, DB-паролей; затем redeploy с новыми env.
  2. Сверка дерева деплоя с чистым git; поиск неожиданных cron/systemd, исходящих соединений, новых пользователей.
  3. При подтверждённом взломе — пересборка окружения, восстановление из проверенного бэкапа до инцидента.

Источники

React Team, бюллетень CVE-2025-55182 от 03.12.2025 (апдейты до 26.01.2026): версии RSC 19.0.1 / 19.1.2 / 19.2.1 и таблица Next — фактом без URL (со страницы вендора в один hop — GitHub автора с PoC-репозиторием).

CISA KEV CVE-2025-55182: added 2025-12-05, due 2025-12-12, ransomware Known — фактом без URL. JPCERT/CC (02.2026) — факт атак без URL. Реестры NVD/CVE.org — номерами без ссылок.