Мгновенная реакция: как мы защитили наши проекты от критической уязвимости React
29 ноября в экосистеме React/Next.js был обнаружена уязвимость React Server Components (RSC), которая быстро вышла за рамки «очередного CVE». Один исследователь публично сообщил об этом, и почти сразу стало заметно, как атаки начали масштабироваться: под удар попали сервисы, построенные на связке RSC и Next.js.
Для нас эта история — не мимолетная новость из ленты. Мы разрабатываем и поддерживаем проекты на React и Next.js — во многих из них активно используются уязвимые серверные компоненты. Когда наш внутренний мониторинг начал бить тревогу — стало ясно, что ждать разъяснений и «плановых обновлений» нельзя. Нам предстояло быстро оценить влияние уязвимости, проверить затронутые приложения и внедрить меры защиты.
В этой статье разберём, что именно произошло, какие версии и пакеты оказались уязвимыми, как выглядели реальные сценарии эксплуатации и какие шаги мы предприняли, чтобы закрыть проблему и снизить риски для клиентов.

Точка отсчета
Исследователь Лахлан Дэвидсон публично объявил об уязвимости в серверных компонентах React. Информацию об уязвимости он передал специалистам компании-разработчика через программу Bug Bounty. В зоне риска оказались проекты с механизмом React Server Components в ветке React 19 — речь о релизах 19.0.0, 19.1.0, 19.1.1, 19.2.0. Угроза коснулась пакетов, отвечающие за server-dom‑связку и сборку: react-server-dom-parcel, react-server-dom-turbopack и react-server-dom-webpack. Со стороны Next.js уязвимыми признаны следующие версии фреймворка: 15.0.4, 15.1.8, 15.2.5, 15.3.5, 15.4.7, 15.5.6, 16.0.6.
После этого началась волна автоматизированных атак: боты массово сканировали интернет на предмет уязвимых серверов, эксплуатировали уязвимость и разворачивали на них вредоносные программы, чаще всего майнеры.
Эта проблема зарегистрирована как CVE-2025-55182 и оценена в 10.0 по CVSS — максимальный балл. Уязвимость позволяет удалённо выполнять произвольный код без авторизации: любой пользователь может свободно отправить запрос на уязвимый сервер.
Что это означает на практике?
- Полный захват сервера/контейнера, изменение кода и конфигураций.
- Компрометация секретов и данных: .env, ключи к БД/облаку, токены CI/CD.
- Нарушение доступности: установка майнеров/ботнета, «убийство» конкурирующих процессов.
Часть инцидентов не приводила к падению сайтов сразу — но сервера становились нестабильными. В дальнейшем это могло привести к серьезным последствиям.
Ответные действия React
1 декабря команда React завершила подготовку исправления CVE-2025-55182 и в закрытом порядке согласовала действия с крупнейшими облачными провайдерами и мейнтейнерами связанных open‑source‑проектов. 3 декабря уязвимость была официально раскрыта. Обновлённые сборки React Server Components и Next.js, которые включали в себя исправление уязвимости, были опубликованы в репозитории NPM.
Поскольку речь идёт о JavaScript‑библиотеках, ответственность за устранение проблемы в конкретных продуктах лежит на плечах самих разработчиков. Их задача — обновить зависимости до исправленных версий, пересобрать приложение и развернуть обновление.

Ситуация критическая
Наш мониторинг зафиксировал аномалии на части проектов: нагрузка на CPU возросла до 100%, выросшее число исходящих соединений, нестабильность сборок и деплоев.
На части серверов мы обнаружили криптомайнеры: при низкой нагрузке SPA-приложения работают, но любые ресурсоёмкие операции (сборки/пересборки, миграции) срываются — вредоносный процесс принудительно завершает конкурирующие задачи.
Решение
Мы оперативно обновили уязвимые проекты, провели очистку серверов и ротацию секретов.
Мониторинг и изоляция. По алертам аномальной загрузки CPU/Out egress изолировали подозрительные инстансы, ограничили исходящие соединения.
Обновления и очистка. Внедрили новые патчи Next.js от разработчиков, пересобрали образы, задеплоили исправления. Также удалили вредоносные процессы и их автозапуски (cron/systemd/rc‑скрипты). Заменили токены и секреты (ENV, CI/CD).

Что важно сделать прямо сейчас
Пока злоумышленники не добрались до вашего ресурса, важно обеспечить постоянный мониторинг системы. Он будет моментально выявлять ошибки и присылать вам уведомления о них. Например для себя мы выбрали оптимальный вариант – связка Prometheus + Grafana , а также своё удобное API для взаимодействия. Это позволяет нам 24/7 оставаться в курсе того, что происходит на наших проектах.
Уведомления приходят разработчикам через специальный бот. Даже если сбой случился в нерабочие часы, свободный специалист может подключиться и устранить проблему без ущерба для бизнеса.
Обеспечим полную безопасность вашего web-ресурса с помощью профессиональной техподдержки и регулярного мониторинга. Просто напишите нам – оперативно откликнемся на запрос и разработаем для вас оптимальный инструмент.
Итоги
На данный момент мы обеспечили безопасность всем проектам RocketDev, разработанным на React и Next.js. CVE-2025-55182 — это напоминание о том, что даже в зрелой экосистеме уязвимости неизбежны. Безопасность приложения определяется не «отсутствием багов», а скоростью их обнаружения, корректной оценкой риска и качеством исправлений.
Хорошая новость в том, что подобные проблемы решаемы. Ключевой фактор здесь — команда, которая не только умеет писать на React/Next.js, но и постоянно держит руку на пульсе:
- регулярно отслеживает состояние сервисов и релизы зависимостей;
- понимает устройство фреймворка и цепочки поставки;
- умеет в случае необходимости быстро принять решение, которое сможет помочь восстановить бесперебойную работу приложения.
Правильная стратегия в данной ситуации — вовремя подключить профессиональную команду разработчиков и девопсов, которая проведёт аудит затронутых компонентов, настроит мониторинг и закрепит практику регулярного управления уязвимостями. Только тогда кризис становится рабочей задачей, которую можно закрыть в контролируемые сроки и с понятным результатом.




