Существует уязвимость удаленного выполнения кода (RCE) без аутентификации в React Server Components.

Мы рекомендуем немедленно обновиться.

29 ноября Лахлан Дэвидсон сообщил об уязвимости безопасности в React, которая позволяет удаленное выполнение кода без аутентификации путем эксплуатации ошибки в том, как React декодирует полезную нагрузку, отправленные на эндпоинты React Server Function.

Даже если ваше приложение не реализует эндпоинты React Server Function, оно все равно может быть уязвимым, если поддерживает React Server Components.

Эта уязвимость была раскрыта как CVE-2025-55182 и имеет рейтинг CVSS 10.0.

Уязвимость присутствует в версиях 19.0, 19.1.0, 19.1.1 и 19.2.0 пакетов:

Требуются немедленные действия

Исправление было представлено в версиях 19.0.1, 19.1.2 и 19.2.1. Если вы используете любой из вышеперечисленных пакетов, пожалуйста, немедленно обновитесь до любой из исправленных версий.

Если React-код вашего приложения не использует сервер, ваше приложение не подвержено этой уязвимости. Если ваше приложение не использует фреймворк, сборщик или плагин сборщика, поддерживающий React Server Components, ваше приложение не подвержено этой уязвимости.

Затронутые фреймворки и сборщики

Некоторые фреймворки и сборщики React зависели, имели peer-зависимости или включали уязвимые пакеты React. Следующие фреймворки и сборщики React затронуты: next, react-router, waku, @parcel/rsc, @vitejs/plugin-rsc и rwsdk.

Мы обновим этот пост инструкциями по обновлению по мере их поступления. (примечание переводчика: лучше ориентироваться на оригинал статьи)

Меры по смягчению последствий от хостинг-провайдеров

Мы работали с рядом хостинг-провайдеров для применения временных мер по смягчению последствий.

Вы не должны полагаться на них для защиты вашего приложения и все равно должны немедленно обновиться.

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

React Server Functions позволяют клиенту вызывать функцию на сервере. React предоставляет точки интеграции и инструменты, которые фреймворки и сборщики используют для помощи в запуске кода React как на клиенте, так и на сервере. React транслирует запросы на клиенте в HTTP-запросы, которые перенаправляются на сервер. На сервере React транслирует HTTP-запрос в вызов функции и возвращает необходимые данные клиенту.

Неаутентифицированный злоумышленник может создать вредоносный HTTP-запрос к любому эндпоинту Server Function, который при десериализации React приводит к удаленному выполнению кода на сервере. Более подробная информация об уязвимости будет предоставлена после завершения развертывания исправления.

Инструкции по обновлению

Next.js

Всем пользователям следует обновиться до последней исправленной версии в их линейке релизов:

npm install next@15.0.5   // для 15.0.x
npm install next@15.1.9   // для 15.1.x
npm install next@15.2.6   // для 15.2.x
npm install next@15.3.6   // для 15.3.x
npm install next@15.4.8   // для 15.4.x
npm install next@15.5.7   // для 15.5.x
npm install next@16.0.7   // для 16.0.x

Если вы используете Next.js 14.3.0-canary.77 или более поздний canary релиз, откатитесь до последнего стабильного релиза 14.x:

npm install next@14

Смотрите changelog Next.js для получения дополнительной информации.

React Router

Если вы используете нестабильные API RSC в React Router, вам следует обновить следующие зависимости в package.json, если они существуют:

npm install react@latest
npm install react-dom@latest
npm install react-server-dom-parcel@latest
npm install react-server-dom-webpack@latest
npm install @vitejs/plugin-rsc@latest

Expo

Обновитесь до последней версии react-server-dom-webpack:

npm install react@latest react-dom@latest react-server-dom-webpack@latest

Redwood SDK

Убедитесь, что вы используете rwsdk>=1.0.0-alpha.0

Для последней бета-версии:

npm install rwsdk@latest

Обновитесь до последней версии react-server-dom-webpack:

npm install react@latest react-dom@latest react-server-dom-webpack@latest

Смотрите документацию Redwood для получения дополнительных инструкций по миграции.

Waku

Обновитесь до последней версии react-server-dom-webpack:

npm install react@latest react-dom@latest react-server-dom-webpack@latest

@vitejs/plugin-rsc

Обновитесь до последней версии плагина RSC:

npm install react@latest react-dom@latest @vitejs/plugin-rsc@latest

react-server-dom-parcel

Обновитесь до последней версии:

npm install react@latest react-dom@latest react-server-dom-parcel@latest

react-server-dom-turbopack

Обновитесь до последней версии:

npm install react@latest react-dom@latest react-server-dom-turbopack@latest

react-server-dom-webpack

Обновитесь до последней версии:

npm install react@latest react-dom@latest react-server-dom-webpack@latest

Хронология

  • 29 ноября: Лахлан Дэвидсон сообщил об уязвимости безопасности через Meta* Bug Bounty.

  • 30 ноября: Исследователи безопасности Meta* подтвердили уязвимость и начали работать с командой React над исправлением.

  • 1 декабря: Было создано исправление, и команда React начала работать с затронутыми хостинг-провайдерами и open source проектами для проверки исправления, внедрения мер по смягчению и развертывания исправления.

  • 3 декабря: Исправление было опубликовано в npm и публично раскрыто как CVE-2025-55182.

Благодарности

Спасибо Лахлану Дэвидсону за обнаружение, сообщение и работу по помощи в исправлении этой уязвимости.

Meta* и ее продукты (Facebook, Instagram) запрещены на территории Российской Федерации

Комментарии (0)