3 декабря разработчики JavaScript-библиотеки для создания веб-приложений React об обнаружении критической уязвимости в компоненте React Server Components. Уязвимость с наивысшим, десятибалльным рейтингом опасности по шкале CVSS v3 получила идентификатор . Еще один идентификатор CVE-2025-66478 является дублирующим — он относится к интеграции React Server Components во фреймворке . Уязвимые веб-приложения в худшем случае позволяют злоумышленнику без какой-либо аутентификации получить контроль над сервером, отправив специально подготовленный запрос. Отсюда название уязвимости, точнее два варианта — React4Shell и React2Shell.

Быстрое развитие ситуации вокруг уязвимости можно оценить как «идеальный шторм», максимально сложную ситуацию для администраторов уязвимых систем, происходящую все же достаточно редко. Уже в день публикации бюллетеня React началась эксплуатация уязвимости, предположительно, организованными группировками из Китая. На следующий день, 4 декабря, примеры кода для эксплуатации уязвимости были доступны публично. Потенциально уязвимы сотни тысяч сайтов и веб-приложений, использующих либо React, либо Next.js, хотя реально подвержены атаке не все из них.
Источники информации:
и уязвимости компании Phoenix Security
Отчеты поставщиков облачных решений: , ,
и с примерами PoC от первооткрывателя уязвимости
Уязвимость была обнаружена 29 ноября исследователем Лахланом Дэвидсоном, информация о ней была передана через программу Meta Bug Bounty. Уже 1 декабря разработчики React подготовили патч и начали приватную работу с крупнейшими поставщиками облачных сервисов, а также с разработчиками связанных опенсорсных проектов. 3 декабря последовало публичное раскрытие информации, пропатченные версии React Server Components и Next.js были опубликованы в репозитории NPM. Поскольку речь идет о JavaScript-библиотеках, ответственность за закрытие уязвимости в конкретных проектах полностью лежит на их владельцах.
React Server Components позволяет отправлять запросы от клиента (=кода, выполняемого на стороне пользователя) к серверу, в терминах React эта функциональность называется . Если в проекте такие Server Functions реализованы — он уязвим. Более того, даже если Server Functions не реализованы, но приложение на базе React или Next.js в принципе поддерживает React Server Components — атака все еще возможна. Формальное определение уязвимых модулей следующее: это , и версий 19.0, 19.1.0, 19.1.1 и 19.2.0. Для каждой ветки опубликованы отдельные обновления до версии 19.x.1. Уязвимы версии next.js 14 (начиная с 14.3.0-canary.77), 15 и 16 (все), а патчи доступны в версиях 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7, 15.6.0-canary.58, 16.1.0-canary.12+. В список других бандлов и модулей, включающих React Server Components, входят waku, parcel/rsc, vitejs/plugin-rsc и rwsdk.
Для коммуникации между клиентом и сервером Server Functions использует протокол Flight. Передаваемые с его помощью пакеты данных проходят на сервере рутинную процедуру десериализации. Ошибка в этом процессе и делает возможным перехват управления сервером. Подробности ни в одном отчете не раскрываются. Первооткрыватель проблемы обещает опубликовать подробную статью позднее, но учитывая, что React — это проект с открытым исходным кодом, определить суть проблемы и вычислить последовательность действий, необходимую для проведения атаки, несложно. Что и было сделано многочисленными авторами публичных PoC. Наиболее подробно ошибка в коде React описана .
По данным сервис-провайдеров, способных массово отслеживать запросы к клиентским приложениям и определять вредоносные запросы, целью злоумышленников в первой волне атак была чувствительная информация — ключи и токены доступа. Проводились также попытки развить атаку со взломанного сервера на другие элементы корпоративной инфраструктуры. Позднее добавились и более массовые методы извлечения выгоды, такие как майнинг криптовалюты. По данным компании Wiz, до 39% облачных систем по состоянию на 3 декабря были уязвимы. Другая, более конкретная оценка от 6 декабря о 77 тысячах уязвимых IP-адресов.
Существует метод защиты уязвимых систем помимо обновления, который позволил «спасти» множество инсталляций еще до того, как проснулись админы был определен сам факт их уязвимости. Это блокировка вредоносных запросов на уровне брандмауэра, точнее — так называемого Web Application Firewall. Соответствующие фильтры в WAF добавили все крупные сервис-провайдеры — вот от Cloudflare. При этом 5 декабря обновление правил WAF у этого провайдера к кратковременному падению инфраструктуры. Фильтрацию при необходимости можно реализовать самостоятельно, для чего во множестве источников (включая «Лаборатории Касперского») приводится список из «опасных» запросов, однозначно указывающих на злонамеренные действия клиента.
По уровню опасности и масштабу последствий, а также по определенным схожим чертам данную уязвимость часто сравнивают с атакой на решение Log4j, входящее в состав Apache Logging Framework. В 2021 году эта уязвимость также поставила под угрозу большое количество сетевых приложений и сервисов, от Amazon Web Services до серверов Minecraft.
Что еще произошло
В рамках отчета по эволюции киберугроз за третий квартал 2025 года специалисты «Лаборатории Касперского» опубликовали по эксплойтам и уязвимостям.
Microsoft уязвимость при обработке .lnk-файлов, обнаруженную еще в марте этого года. Распространяемые атакующими подготовленные файлы содержали скрытые команды, которые не были видны пользователю, но выполнялись при двойном клике на файл. Уязвимость была закрыта без какого-либо анонса, а ранее производитель утверждал, что оснований для срочного решения проблемы нет.
Вторая атака Shai-Hulud, направленная на заражение NPM-пакетов, к утечке 400 тысяч строк конфиденциальных данных, таких как ключи доступа. О первой атаке мы подробно в сентябре. Тогда было атаковано около 190 пакетов в репозитории NPM (500+, включая разные версии одного и того же ПО), а в новой волне заражений было скомпрометировано более 800.
В декабрьском наборе патчей для ОС Android две уязвимости нулевого дня.
популярное приложение SmartTube для просмотра YouTube на смарт-ТВ. После компрометации ключей разработчика клиентам было разослано вредоносное обновление.