11 декабря 2025 г., Команда React
Обновлено 26 января 2026 г.
Исследователи безопасности обнаружили и опубликовали две дополнительные уязвимости в React Server Components при попытке обойти исправления критической уязвимости прошлой недели.
Эти новые уязвимости не позволяют выполнить удаленное выполнение кода. Исправление для React2Shell остается эффективным для минимизации эксплойта удаленного выполнения кода.
Новые уязвимости классифицированы следующим образом:
- Отказ в обслуживании — высокая степень серьезности: CVE-2025-55184, CVE-2025-67779 и CVE-2026-23864 (CVSS 7.5)
- Утечка исходного кода — средняя степень серьезности: CVE-2025-55183 (CVSS 5.3)
Мы рекомендуем выполнить немедленное обновление из-за серьезности вновь обнаруженных уязвимостей.
Примечание
Ранее опубликованные исправления уязвимы.
Если вы уже обновились для устранения предыдущих уязвимостей, вам потребуется обновиться снова.
Если вы обновились до версий 19.0.3, 19.1.4 и 19.2.3, эти обновления являются неполными, и вам потребуется обновиться снова.
Инструкции по обновлению см. в предыдущем посте.
Обновлено 26 января 2026 г.
Дополнительные сведения об этих уязвимостях будут предоставлены после завершения развертывания исправлений.
Требуются немедленные действия
Эти уязвимости присутствуют в тех же пакетах и версиях, что и CVE-2025-55182.
Это включает версии 19.0.0, 19.0.1, 19.0.2, 19.0.3, 19.1.0, 19.1.1, 19.1.2, 19.1.3, 19.2.0, 19.2.1, 19.2.2 и 19.2.3 следующих пакетов:
- react-server-dom-webpack
- react-server-dom-parcel
- react-server-dom-turbopack
Исправления были перенесены (бэкпортированы) в версии 19.0.4, 19.1.5 и 19.2.4. Если вы используете какой-либо из указанных выше пакетов, немедленно обновитесь до любой из исправленных версий.
Как и раньше, если код React вашего приложения не использует сервер, ваше приложение не подвержено данным уязвимостям. Если ваше приложение не использует фреймворк, сборщик или плагин сборщика, поддерживающий React Server Components, ваше приложение не подвержено данным уязвимостям.
Примечание
Для критических CVE характерно обнаружение сопутствующих уязвимостей.
Когда публикуется критическая уязвимость, исследователи тщательно изучают соседние пути кода в поисках альтернативных техник эксплойтов, чтобы проверить, можно ли обойти первоначальное средство защиты.
Эта тенденция наблюдается по всей индустрии, а не только в JavaScript. Например, после Log4Shell были зарегистрированы дополнительные CVE (1, 2), когда сообщество исследовало первоначальное исправление.
Дополнительные публикации могут вызывать разочарование, но они обычно являются признаком здорового цикла реагирования.
Затронутые фреймворки и сборщики
Некоторые фреймворки и сборщики React зависели от уязвимых пакетов React, имели для них сопутствующие зависимости (peer dependencies) или включали их в себя. Затронуты следующие фреймворки и сборщики React: next, react-router, waku, @parcel/rsc, @vite/rsc-plugin и rwsdk.
Инструкции по обновлению см. в предыдущем посте.
Меры защиты со стороны хостинг-провайдеров
Как и раньше, мы сотрудничали с рядом хостинг-провайдеров для применения временных мер защиты.
Вы не должны полагаться на них для обеспечения безопасности вашего приложения и все равно должны немедленно выполнить обновление.
React Native
Для пользователей React Native, не использующих монорепозиторий или react-dom, версия react должна быть зафиксирована в package.json, и никаких дополнительных действий не требуется.
Если вы используете React Native в монорепозитории, вам следует обновить только затронутые пакеты, если они установлены:
- react-server-dom-webpack
- react-server-dom-parcel
- react-server-dom-turbopack
Это необходимо для устранения уязвимостей, но вам не нужно обновлять react и react-dom, поэтому это не приведет к ошибке несовпадения версий в React Native.
Дополнительную информацию см. в этом тикете.
Высокая степень серьезности: Множественные отказы в обслуживании
CVE: CVE-2026-23864 Базовый балл: 7.5 (Высокая) Дата: 26 января 2026 г.
Исследователи безопасности обнаружили, что в React Server Components все еще существуют дополнительные уязвимости DoS.
Уязвимости вызываются отправкой специально сформированных HTTP-запросов на конечные точки серверных функций (Server Function) и могут привести к сбоям сервера, исключениям нехватки памяти (Out-Of-Memory) или чрезмерному использованию ЦП, в зависимости от используемого уязвимого пути кода, конфигурации приложения и кода приложения.
Исправления, опубликованные 26 января, устраняют эти уязвимости DoS.
Примечание
Опубликованы дополнительные исправления
Первоначальное исправление, устраняющее DoS в CVE-2025-55184, было неполным.
Из-за этого предыдущие версии остались уязвимыми. Версии 19.0.4, 19.1.5, 19.2.4 безопасны.
Обновлено 26 января 2026 г.
Высокая степень серьезности: Отказ в обслуживании
CVE: CVE-2025-55184 и CVE-2025-67779 Базовый балл: 7.5 (Высокая)
Исследователи безопасности обнаружили, что можно сформировать и отправить вредоносный HTTP-запрос на любую конечную точку серверных функций, который при десериализации React может вызвать бесконечный цикл, приводящий к зависаю процесса сервера и нагрузке на ЦП. Даже если ваше приложение не реализует никаких конечных точек серверных функций React, оно все равно может быть уязвимо, если поддерживает React Server Components.
Это создает вектор уязвимости, при котором злоумышленник может лишить пользователей возможности доступа к продукту и потенциально повлиять на производительность серверной среды.
Опубликованные сегодня исправления предотвращают этот бесконечный цикл.
Средняя степень серьезности: Утечка исходного кода
CVE: CVE-2025-55183 Базовый балл: 5.3 (Средняя)
Исследователь безопасности обнаружил, что вредоносный HTTP-запрос, отправленный уязвимой серверной функции, может небезопасно вернуть исходный код любой серверной функции. Для эксплуатации требуется наличие серверной функции, которая явно или неявно преобразует аргумент в строку (stringification):
'use server';
export async function serverFunction(name) {
const conn = db.createConnection('SECRET KEY');
const user = await conn.createUser(name); // неявно преобразовано в строку, утечка в бд
return {
id: user.id,
message: `Hello, ${name}!` // явно преобразовано в строку, утечка в ответе
Злоумышленник может получить утечку следующих данных:
0:{"a":"$@1","f":"","b":"Wy43RxUKdxmr5iuBzJ1pN"}
1:{"id":"tva1sfodwq","message":"Hello, async function(a){console.log(\"serverFunction\");let b=i.createConnection(\"SECRET KEY\");return{id:(await b.createUser(a)).id,message:`Hello, ${a}!`}}!"}
Опубликованные сегодня исправления предотвращают преобразование исходного кода серверных функций в строку.
Примечание
Могут быть раскрыты только секреты, содержащиеся в исходном коде.
Секреты, зашитые в исходном коде, могут быть раскрыты, но секреты среды выполнения, такие как process.env.SECRET, не затрагиваются.
Область видимости раскрытого кода ограничивается кодом внутри серверной функции, который может включать другие функции в зависимости от степени инлайнинга (inline), обеспечиваемой вашим сборщиком.
Всегда проверяйте сборки для продакшена (production).
Хронология
- 3 декабря: Утечка сообщена Vercel и Meta Bug Bounty Эндрю МакФерсоном (Andrew MacPherson).
- 4 декабря: Первоначальный DoS сообщен Meta Bug Bounty исследователем RyotaK.
- 6 декабря: Обе проблемы подтверждены командой React, и команда начала расследование.
- 7 декабря: Созданы первые исправления, команда React начала их проверку и планирование нового патча.
- 8 декабря: Затронутые хостинг-провайдеры и проекты с открытым исходным кодом уведомлены.
- 10 декабря: Меры защиты хостинг-провайдеров задействованы, исправления проверены.
- 11 декабря: Дополнительный DoS сообщен Meta Bug Bounty Синсаку Номурой (Shinsaku Nomura).
- 11 декабря: Исправления опубликованы и преданы огласке как CVE-2025-55183 и CVE-2025-55184.
- 11 декабря: Внутренне обнаружен пропущенный случай DoS, исправлен и предано огласке как CVE-2025-67779.
- 26 января: Обнаружены дополнительные случаи DoS, исправлены и преданы огласке как CVE-2026-23864.
Авторство
Спасибо Эндрю МакФерсону (AndrewMohawk) за сообщение об утечке исходного кода, РиотеК (RyotaK) из GMO Flatt Security Inc и Синсаку Номуре (Shinsaku Nomura) из Bitforest Co., Ltd. за сообщение об уязвимостях типа «отказ в обслуживании». Спасибо Муфиду ВХ (Mufeed VH) из Winfunc Research, Иоахиму Вийде (Joachim Viide), РиотеК (RyotaK) из GMO Flatt Security Inc и Сянвэю Чжану (Xiangwei Zhang) из Tencent Security YUNDING LAB за сообщение о дополнительных уязвимостях DoS.
