3 декабря 2025 года команда React объявила о CVE-2025-55182 – критической уязвимости удаленного исполнения кода в компонентах React Server.
Ее влияние усиливается тем, насколько легко ее эксплуатировать: одного вредоносного HTTP-запроса достаточно, чтобы злоумышленник получил полный контроль над уязвимым сервером.
Ключевые моменты
Уязвимые системы: Любое приложение, использующее компоненты React 19 Server или действия сервера Next.js, подвергается влиянию, включая новые проекты create-next-app без изменений кода.
Степень серьезности: Обе уязвимости имеют оценку CVSS 10.0. Публичные proof-of-concept уже демонстрируют выполнение произвольных команд.
Детали эксплойта: Проблема возникает из-за ненадежной десериализации в протоколе React Flight. Атаки впервые были обнаружены 4 декабря, но ожидается более широкая эксплуатация.
Действия поставщиков облачных услуг: Cloudflare ввела фильтрацию запросов на уровне сети, чтобы блокировать известные шаблоны эксплойтов для клиентов, использующих ее WAF. Другие облачные платформы могут предлагать подобные временные средства защиты, но ни одна из них не должна рассматриваться как замена исправлений.
Покрытие Invicti: Сканеры Invicti DAST теперь включают проверки для обнаружения и сообщения о конечных точках, уязвимых к этой проблеме.
Рекомендации: Исправление уязвимых версий React и Next.js, восстановление развертываний, оценка уязвимости приложений и проверка логов на наличие необычных или подозрительных запросов на действия сервера.
Официальные рекомендации React и Next.js имеют последние версии исправлений.
Уязвимые версии
| Пакет | Уязвимые версии | Исправленные версии |
| React | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
| Next.js | 14.3.0-canary, а также все версии 15.x и 16.x до выхода версий с патчами | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 |
Другие потенциально уязвимые фреймворки
- Vite с плагином RSC
- Parcel с плагином RSC
- React Router (предыдущие версии RSC)
- RedwoodJS
- Waku
Подробнее о проблеме
React 19 предоставил компоненты React Server (RSC) и серверные действия (server actions, server functions). Эти возможности зависят от кастомного бинарного протокола Flight, обрабатывающего сериализацию данных компонентов между сервером и клиентом. В уязвимых версиях декодер на стороне сервера доверяет нескольким типам записей Flight, которые можно подделать, что позволяет злоумышленникам отправлять вредные полезные нагрузки, которые сервер будет обрабатывать и выполнять.
Next.js уязвим, поскольку реализует свои серверные действия непосредственно на базе той же среды выполнения RSC. И даже программы, не реализующие никаких конечных точек функций React Server, могут быть уязвимыми из-за поддержки RSC. Это также относится к уязвимым версиям Next.js, поскольку они по умолчанию включают функции RSC как часть стандартного шаблона проекта.
Уязвимость существует в основном коде фреймворка, который обрабатывает полезные нагрузки RSC, и этот код выполняется всякий раз, когда приложение обрабатывает запросы, даже если никто не создал серверное действие.
Это создает серьезную угрозу безопасности. Недостаток заключается не в коде программы, а в библиотеках, от которых она зависит. Это особенно беспокоит, учитывая то, насколько широко используются React и Next.js в современных веб-приложениях.
Таким образом, любой публичный маршрут, вызывающий обработку серверных действий, может стать вектором для атаки. Wiz Research оценивает, что до 39% облачных сред могут использовать по крайней мере одно уязвимое приложение.
“Учитывая распространенность Next.js, это может быть самая большая уязвимость приложений в 2025 году”
Bogdan Calin
главный исследователь безопасности в Invicti
О небезопасной десериализации
Проблема возникает из-за трех тесно связанных пакетов, составляющих стек рендеринга на стороне сервера React:
- react-server-dom-webpack
- react-server-dom-parcel
- react-server-dom-turbopack
Эти компоненты отвечают за декодирование и обработку полезных нагрузок протокола Flight, направляемых в конечные точки серверных действий. В уязвимых версиях (React 19.0.0, 19.1.0, 19.1.1 и 19.2.0) содержится логика десериализации, которая не проверяет структуру и содержание входных полезных нагрузок.
Вызов серверного действия работает следующим образом:
- Сервер сериализирует результат и отправляет его обратно
- Клиент сериализирует аргументы функции в формате протокола Flight
- Клиент отправляет POST-запрос в конечную точку серверного действия.
- Сервер получает и десериализирует полезную нагрузку
- Сервер вызывает функцию с предоставленными аргументами
Когда сервер десериализирует полезную нагрузку, его можно обманом заставить интерпретировать вредоносный payload как выполняемые инструкции, а не простые аргументы функции.
Основная проблема состоит в том, что эта опасная десериализация происходит до выполнения любого кода программы. Даже безупречная проверка входных данных внутри не может предотвратить эту проблему, поскольку уязвимость срабатывает раньше.
Шаги по исправлению CVE-2025-55182 и CVE-2025-66478
Исправление для серверных компонентов React 19
На приложение влияет проблема, если он использует версии React 19.0.0, 19.1.0, 19.1.1 или 19.2.0 для любого из следующих модулей:
- react-server-dom-webpack
- react-server-dom-parcel
- react-server-dom-turbopack
Необходимые действия:
- Обновление до исправленных версий, выпущенных React. По состоянию на 4 декабря исправленные версии – это 19.0.1, 19.1.2 и 19.2.1.
- Перестройка и повторное развертывание всех сред.
- Обеспечение того, что ни один кастомный бандлер или фреймворк не фиксирует старые зависимости RSC.
Исправление для Next.js
Проект уязвим, если он использует версию 15.x или 16.x без патчей.
Необходимые действия:
- Обновление до последней версии Next.js с патчем, указанным в официальных рекомендациях. По состоянию на 4 декабря это включает в себя 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7 и 16.0.7.
- Восстановление артефактов продакшна для удаления уязвимых путей кода серверных действий.
- Обеспечение того, чтобы проект не использовал зафиксированную версию React, блокирующую обновление компонентов RSC.
- Проверка Vercel, контейнера и self-hosted образов (для собственного хостинга), чтобы подтвердить, что они подтягивают обновленные пакеты.
- Проверки безопасности Invicti на наличие CVE-2025-55182 и CVE-2025-66478
На момент 5 декабря решения DAST от Invicti включают тесты на наличие уязвимостей компонентов React Server (CVE-2025-55182 и CVE-2025-66478).
Вывод
Этот случай показывает, что даже активно поддерживаемые фреймворки все еще могут иметь серьезные недостатки безопасности. С максимальным баллом CVSS 10.0, легкостью эксплуатации и уязвимыми конфигурациями по умолчанию это создает значительный риск.







