Разбор уязвимости десериализации в пакетах React Server Components, которая может привести к удалённому выполнению кода без аутентификации. Описано, что происходит, кого это касается и как реагировать, с точки зрения защитника и без шагов атаки.
- CVE
- CVE-2026-126187 (GHSA-xqc2-xf4c-x3h3; React: Unauthenticated Remote Code Execution in React Server Components)
- Тяжесть
- CVSS v4.0 9.5 (Critical; вектор AV:N/AC:L/AT:P/PR:N/UI:N; присвоена GitHub). Анализ NVD ожидается по состоянию на 11 ноября 2026 года
- Тип
- Десериализация недоверенных данных (CWE-502)
- Воздействие
- Удалённое выполнение кода без аутентификации через специально сформированные данные. Бюллетень сообщает, что это затрагивает лишь крайне редкие случаи, когда ответы передают несколько типизированных массивов и значение, контролируемое атакующим
- Затронуто
- react-server-dom-webpack, -parcel и -turbopack версий 19.0.0–19.0.8, 19.1.0–19.1.9, 19.2.0–19.2.8 и 19.3.0
- Исправление
- 19.0.9 / 19.1.10 / 19.2.9 / 19.3.1 (выпущены 14 октября 2026 года)
- Опубликовано
- 10 ноября 2026 года (CVE и бюллетень GitHub)
- Эксплуатация
- Об эксплуатации не сообщается. По состоянию на 12 ноября 2026 года нет в KEV
Чем опасно ожидание
Аутентификация не нужна, а при успехе код выполняется на сервере (высокое воздействие на конфиденциальность, целостность и доступность). Узкие условия помогают, но уязвимости серверов, доступных из интернета, после публикации обычно изучают. Переход на опубликованную исправленную версию — небольшая задача, поэтому у этого сайта мало оснований откладывать её из-за строгих условий.
Что это за уязвимость
Бюллетень GitHub сообщает, что специально сформированные данные, нацеленные на фреймворки с поддержкой React Server Components, могут привести к удалённому выполнению кода. Классифицируется как CWE-502 (десериализация недоверенных данных).
- Аутентификация не требуется (PR:N), работает по сети, взаимодействие пользователя не нужно (UI:N).
- Бюллетень говорит, что это затрагивает лишь крайне редкие случаи, когда ответы передают несколько типизированных массивов и значение, контролируемое атакующим. AT:P в векторе CVSS v4 (требования для атаки присутствуют) отражает это ограничение (наша интерпретация).
- Server Components выполняют код React на сервере. Уязвимость находится в пакетах, обрабатывающих этот трафик.
- Бюллетень не описывает, как строятся данные, и точные условия, и этот сайт тоже не описывает.
- В этом механизме уже появлялась критическая уязвимость. См. обзор уязвимостей Next.js и React.
Затронутые версии
| Пункт | Подробности |
|---|---|
| Пакеты | react-server-dom-webpack / react-server-dom-parcel / react-server-dom-turbopack |
| Затронутые версии | 19.0.0–19.0.8 / 19.1.0–19.1.9 / 19.2.0–19.2.8 / 19.3.0 |
| Исправленные версии | 19.0.9 / 19.1.10 / 19.2.9 / 19.3.1 |
| Не затронуто | Приложения, чей код React не использует сервер; приложения, не использующие фреймворк, сборщик или плагин с поддержкой Server Components (по бюллетеню) |
| Обходные пути / смягчение | В бюллетене не найдены |
| Next.js | Официального заявления не найдено. Проверьте версии react-server-dom-* в зависимостях |
- Диапазоны версий взяты из текста бюллетеня GitHub. Запись CVE (зарегистрированная GitHub) формулирует версии иначе, и в её тексте есть опечатка, поэтому номера исправленных версий мы сверили с текстом бюллетеня и релизами React.
- Три пакета устанавливаются в зависимости от вашего сборщика (webpack, Parcel или Turbopack). Если присутствует несколько, проверьте все.
Как проверить, затронуты ли вы
Проверьте, используете ли вы Server Components
Выясните, используете ли вы фреймворк с поддержкой Server Components, например App Router в Next.js. Приложение, где React работает только в браузере, по бюллетеню не затронуто.
Проверьте версии react-server-dom-* в lock-файле
Найдите в package-lock.json, pnpm-lock.yaml или yarn.lock react-server-dom-webpack, react-server-dom-parcel и react-server-dom-turbopack и проверьте, попадает ли версия в затронутые диапазоны выше. Они могут присутствовать как зависимость фреймворка, даже если вы не устанавливали их напрямую. Об автоматических проверках зависимостей см. мониторинг зависимостей с osv-scanner.
Проверьте версию фреймворка
Такие фреймворки, как Next.js, могут сами включать или закреплять react-server-dom-*. Проверьте официальные примечания к релизам и бюллетени фреймворка на предмет реакции на эту CVE. Когда мы проверили 12 ноября 2026 года, официального заявления Next.js мы не нашли.
Что делать сегодня
Перейдите на исправленную версию react-server-dom-* или новее (главный приоритет)
Используйте 19.0.9, 19.1.10, 19.2.9 или 19.3.1 либо новее, в соответствии с используемой веткой релизов. Для прямой зависимости поднимите версию пакета и обновите lock-файл.
Если вы работаете через фреймворк, ждите его обновления
Если фреймворк закрепляет версию внутри, дождитесь обновления фреймворка или следуйте его официальным указаниям. Пока указаний нет, проверьте версии зависимостей сами и при необходимости спросите сопровождающего. Переопределения зависимостей применяйте только после проверки, что фреймворк по-прежнему работает.
Протестируйте после обновления, затем разверните
Проверьте страницы Server Components и Server Actions, затем разверните. После обновления снова проверьте версии в lock-файле.
Просмотрите журналы
Поищите подозрительные запросы к конечным точкам Server Components и неожиданные ошибки сервера до обновления. Об эксплуатации не сообщается, но журналы — единственное свидетельство, которое можно проверить.
Статус эксплуатации
- Ни бюллетень, ни запись CVE не упоминают эксплуатацию.
- CVE нет в каталоге KEV CISA (версия KEV 2026.11.10, проверено 12 ноября 2026 года).
- NVD показывает «Received» и ещё не проанализировала её. Оценка CVSS v4 9.5 присвоена GitHub (CNA).
- Исправленные релизы (14 октября) вышли примерно на четыре недели раньше CVE и бюллетеня (10 ноября). Примечания к релизам описывают лишь улучшение транспортного протокола и не говорят, что это исправление уязвимости.
Источники
- GitHub — GHSA-xqc2-xf4c-x3h3 React: Unauthenticated Remote Code Execution in React Server Components (затронутые и исправленные версии, условия отсутствия воздействия, CVSS v4 9.5)
- React — Бюллетень безопасности в репозитории React
- React — Релиз v19.2.9 (19.0.9, 19.1.10 и 19.3.1 выпущены в тот же день)
- CVE.org — CVE-2026-126187 (опубликовано 10 ноября 2026 года)
- NVD — CVE-2026-126187 (Received)
- Next.js — бюллетени безопасности vercel/next.js (упоминаний этой CVE не найдено)
Мы не утверждаем о воздействии на Next.js и подобные фреймворки, потому что официального заявления не найдено. Последняя проверка: 12 ноября 2026 года.