5 мин

Мгновенная реакция: как мы защитили наши проекты от критической уязвимости 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, но и постоянно держит руку на пульсе:

  • регулярно отслеживает состояние сервисов и релизы зависимостей;
  • понимает устройство фреймворка и цепочки поставки;
  • умеет в случае необходимости быстро принять решение, которое сможет помочь восстановить бесперебойную работу приложения.

Правильная стратегия в данной ситуации — вовремя подключить профессиональную команду разработчиков и девопсов, которая проведёт аудит затронутых компонентов, настроит мониторинг и закрепит практику регулярного управления уязвимостями. Только тогда кризис становится рабочей задачей, которую можно закрыть в контролируемые сроки и с понятным результатом.

Может быть вам интересно

16 декабря 2025 г.
5 мин

Мгновенная реакция: как мы защитили наши проекты от критической уязвимости React

обложка статьи
13 августа 2025 г.
5 мин

Может ли нейросеть сверстать качественный сайт? Ожидание VS реальность

обложка статьи
8 августа 2025 г.
5 мин

7 плагинов для удобной работы в VS code. Советы от RocketDev

обложка статьи
11 апреля 2025 г.
7 мин

Оптимизация производительности сайтов на Next.js: рендеринг, SEO и лучшие практики

обложка статьи
5 мин

Как мы выбирали CMS для наших веб-приложений

обложка статьи

Узнайте, чем мы можем быть полезны для вас.

Заполните бриф или напишите info@rocketdev.pro

Начать проект
Сookie

Наш сайт использует файлы cookie для аналитики и персонализации. Продолжая использовать сайт после ознакомления с этим сообщением и предоставления своего выбора, вы соглашаетесь с нашей Политикой обработки персональных данных.

Настройка cookie

Технические cookie нужны для стабильной работы.

Аналитические и другие cookie помогают нам делать сайт лучше для вас: понимать, что вам интересно, и улучшать навигацию.

Эти данные анонимны. Разрешая их, вы вносите свой вклад в развитие нашего сайта. Подробности в Политике обработки персональных данных.

Технические cookie (всегда активны)
Эти файлы cookie необходимы для правильной работы сайта и его основных функций (например, навигация, сохранение сессии, работа форм). Без них сайт не сможет функционировать должным образом. Они не собирают информацию для маркетинга или отслеживания. Этот тип cookie нельзя отключить.
Аналитические/Рекламные cookie
Эти файлы cookie позволяют нам собирать информацию о том, как посетители используют наш сайт (например, какие страницы посещают чаще, сколько времени проводят на сайте, возникают ли ошибки). Эта информация собирается в агрегированном или обезличенном виде и используется для анализа и улучшения работы сайта. Данные обрабатываются Яндекс.Метрикой согласно ее политике конфиденциальности (см. сайт Яндекса). Эти cookie активны только с вашего согласия.
Функциональные (остальные) cookie
Эти файлы cookie позволяют сайту запоминать сделанный вами выбор и предоставлять расширенные функции для вашего удобства. Они также могут использоваться для обеспечения работы встроенных на сайт сервисов (например, видеоплееров от Vimeo, виджетов социальных сетей VK), которые улучшают ваш опыт взаимодействия с сайтом. Эти сервисы могут устанавливать свои cookie для корректной работы и запоминания предпочтений. Эти cookie активны только с вашего согласия.