| Разработчики: | Facebook Ireland |
| Отрасли: | Интернет-сервисы |
| Технологии: | CMS - Системы управления контентом, Средства разработки приложений |
Содержание |
React (иногда React.js или ReactJS) — JavaScript-библиотека с открытым исходным кодом для разработки пользовательских интерфейсов, то есть фронтенд-части веб-сайтов и приложений. Разработана компанией Facebook в 2013 году. Фактически является одним из элементов стека для построения динамических веб-приложений
Первоначальная цель ее разработки — упростить создание сложных интерфейсов, обеспечить высокую производительность и предсказуемое поведение. React — библиотека, а не полноценный фреймворк, отвечает в первую очередь за динамическое отображение информации. Для маршрутизации, работы с серверной логикой, управления состоянием приложения на уровне проекта необходимы дополнительные библиотеки по выбору разработчика.
История
2025: В популярной JavaScript-библиотеке для разработки пользовательских интерфейсов обнаружена опасная «дыра»
ФСТЭК в начале декабря разослала предупреждение об обнаружении критической уязвимости BDU:2025-15156[1] в JavaScript-библиотеке с открытым исходным кодом для разработки пользовательских интерфейсов React. Уязвимость имеет наивысший уровень опасности по CVSS версии 3 – 10. Связана она с серверным JavaScript-элементом платформы Next.js. Для ошибки уже опубликован эксплойт в открытом виде, что может привести к массовой эксплуатации уязвимости. Владельцам веб-приложений, на сайтах которых используются интерфейсы на базе React и Next.js, рекомендуется максимально быстро перейти на их новую версию.
React позволяет создавать динамические и отзывчивые веб-приложения. в нем используется декларативный подход в программировании: разработчик при создании кода указывает, как должен себя повести интерфейс при получении определённых данных или наступлении событий, а библиотека самостоятельно обновляет элементы, ориентируясь на эти указания. Задача программиста — грамотно описать их. Уязвимым является серверный компонент платформы React Server Components (RSC). Он позволяет клиентскому приложению отправлять специальные сериализованные данные на сервер для вызова Server Functions с помощью модуля Next.js.
Next.js — фреймворк для разработки веб-приложений на базе React. Компоненты React используются для построения пользовательских интерфейсов, а Next.js — для реализации на сервере поддержки дополнительных функций и оптимизации. Однако при возможности неавторизованной десерилизации получаемых пакетов этот компонент дает нападающим возможность быстрого захвата платформы Next.js и выполнения на ней любого постороннего кода.
| | React широко применяется в российских компаниях, но уязвимость затрагивает узкий сегмент – проекты с RSC, используемые в современных фреймворках вроде Next.js (App Router), – пояснила TAdviser ситуацию Екатерина Едемская, инженер-аналитик компании «Газинформсервис». – Большинство организаций задействуют React только на клиенте или применяют устаревшие архитектуры (Pages Router), оставаясь в безопасности. Риск концентрируется в крупных ИТ-проектах, финтехе и стартапах, активно внедряющих RSC. | |
Как пишут[2] исследователи компании «СайберОК», уязвимость позволяет злоумышленнику удалённо выполнить код до аутентификации. Проблема в том как React обрабатывает входящие запросы к серверным функциям (Server Function). Оказалось, что Next.js десериализует данные без достаточной валидации, что позволяет атакующему выполнить произвольный JavaScript на сервере. Такая уязвимость относится к классу восстановления в памяти недостоверных данных (CWE-502). Она присутствует в функции requireModule() пакетов react-server-dom-webpack, react-server-dom-parcel и react-server-dom-turbopack – их использование и нужно проверить, чтобы исключить эксплуатацию данного дефекта.
| | Уязвимость позволяет неавторизованному злоумышленнику, знакомому с API серверной части React-приложения, сформировать специальный запрос с вредоносной нагрузкой, – пояснил для читателей TAdviser Константин Горбунов, веб-разработчик компании «Код Безопасности». – В результате существует возможность выполнения произвольного кода на целевом сервере удалённо. Данная уязвимость потенциально может быть использована для массового заражения. | |
По данным системы СКИПА, в Рунете и соседних регионах наблюдается более 40 тыс. подключенных к интернет серверов со стеком React RSC / Next.js. Причем, исследование Wiz Research показывает[3], что уязвимые версии React/Next.js обнаружены примерно в 39% облачных окружений. Уязвимость даже получила собственное наименование – React4Shell. Разработчики выпустили обновления для своего программного обеспечения – ошибка исправлена в версии 19.0.1.
| | Несмотря на то что серверные сборки используются реже, чем классические клиентские библиотеки, они постепенно набирают популярность в крупных продуктовых командах и интеграционных проектах, – заметил для TAdviser Михаил Тимаев, руководитель отдела технического пресейла IT Task. – Поэтому вероятность того, что уязвимые пакеты присутствуют в боевой инфраструктуре, достаточно высока. | |
Александр Колесов, руководитель направления развития и исследований «Бастион», отметил, что нельзя просто так взять и проэксплуатировать уязвимость. Она будет выполняться, только если приложение ожидает параметры и десериализует получаемые от них данные. Если такой обработки нет, то использовать уязвимость невозможно. Таким образом, если приложение содержит серверную логику, то выполнение кода доступно, а если же используется только клиентская часть платформы React, то – нет.
| | С момента выпуска обновления до публикации информации об уязвимости прошло около двух месяцев, что является критически малым сроком, – считает Александр Колесов. – Можно полагать, что большое количество владельцев не успели установить обновление и остаются уязвимыми. В целом эксплойт к данной уязвимости написали достаточно быстро, причем сразу для полной эксплуатации. Это позволяет злоумышленникам сделать выборку уязвимых узлов в различных системах, например, с помощью поисковика shodan, и проводить массовые эксплуатации. | |
Для защиты от печальных последствий пользователям серверной части платформы React специалисты ФСТЭК рекомендуют оперативно установить безопасные версии серверных компонент. Однако в некоторых случаях подобное решение может быть недоступно, тогда придется использовать другие методы защиты от эксплуатации данной уязвимости.
| | На уровне периметра важно использовать WAF для фильтрации аномального трафика и сигнатур атак, а также ограничивать доступ к чувствительным сервисам по «белым спискам», – рекомендует читателям TAdviser Кирилл Лёвкин, проджект-менеджер MD Audit. – Внутри инфраструктуры необходимы SIEM и системы обнаружения вторжений для оперативного выявления попыток эксплуатации. Дополнительно стоит минимизировать права сервисных учетных записей, изолировать серверные компоненты в контейнерах и сегментировать сеть – это снижает ущерб даже при успешной атаке. | |






