Как хакеры через одну дыру в Next.js украли ключи от 766 серверов?

Группировка, которую в Cisco Talos отслеживают под идентификатором UAT-10608, развернула масштабную автоматизированную кампанию по сбору учётных данных. Целью стали серверы, на которых работают приложения на базе Next.js. Уязвимость, получившая обозначение CVE-2025-55182 и неформальное прозвище React2Shell, позволяет выполнять произвольный код удалённо через компоненты React Server Components в связке с Next.js App Router. Оценка по шкале CVSS — максимальные 10.0 баллов из 10.
Как хакеры через одну дыру в Next.js украли ключи от 766 серверов?
Изображение носит иллюстративный характер

Исследователи Cisco Talos Ашир Малхотра и Брэндон Уайт установили, что скомпрометированы как минимум 766 хостов. Жертвы разбросаны по разным географическим регионам и облачным провайдерам. Атакующие действовали без разбора: они, судя по всему, использовали Shodan, Censys или собственные сканеры для поиска публично доступных развёртываний Next.js, а затем автоматически применяли эксплойт.
Цепочка атаки выглядит так. Сначала злоумышленники эксплуатируют React2Shell на уязвимом приложении и получают возможность выполнять код. Затем на сервер сбрасывается дроппер, который устанавливает фреймворк для сбора данных под названием NEXUS Listener. После этого запускается многофазный скрипт, который в автоматическом режиме собирает учётные данные и конфигурации. Всё украденное отправляется на командный сервер (C2).
NEXUS Listener, уже дошедший до третьей версии, представляет собой веб-интерфейс с графической панелью управления. Он защищён паролем, хотя исследователи обнаружили один экземпляр вообще без аутентификации. Через этот интерфейс операторы просматривают украденную информацию, ищут по ней, переключаются между скомпрометированными хостами. Аналитическая панель показывает заранее подсчитанную статистику: общее число взломанных хостов, количество извлечённых учётных записей по типам, время работы приложения.
Список того, что собирает скрипт, пугает своей полнотой. Из облачной инфраструктуры вытягиваются секреты Amazon Web Services, временные учётные данные IAM-ролей (через запросы к Instance М⃰data Service для AWS, Google Cloud и Microsoft Azure), токены сервисных аккаунтов Kubernetes. Отдельно обрабатываются конфигурации Docker-контейнеров: запущенные контейнеры, образы, открытые порты, сетевые настройки, точки монтирования, переменные окружения.
На системном уровне скрипт собирает переменные окружения, JSON-данные из среды выполнения JavaScript, историю команд шелла и список запущенных процессов. Всё это — в автоматическом режиме, без какого-либо участия человека на стороне атакующих после первоначального проникновения.
Отдельный блок посвящён аутентификационным данным. Скрипт ищет и забирает приватные SSH-ключи вместе с файлами authorized_keys, учётные данные баз данных, строки подключения и секреты вебхуков. Потеря SSH-ключей особенно опасна: если один и тот же ключ используется на нескольких системах, компрометация одного сервера автоматически открывает дверь к остальным.
Скрипт прицельно охотится за API-ключами и токенами конкретных сторонних сервисов. Среди них платёжный процессор Stripe, репозитории GitHub и GitLab, платформы искусственного интеллекта OpenAI, Anthropic и NVIDIA NIM, почтовые сервисы SendGrid и Brevo, а также токены Telegram-ботов. Разнообразие целей говорит о том, что злоумышленников интересует не какой-то один тип доступа — им нужно всё.
По оценке исследователей из Cisco Talos, ценность украденного выходит далеко за рамки отдельных паролей. Совокупный массив данных позволяет атакующим составить детальную карту инфраструктуры каждой жертвы: какие сервисы работают, как настроены, какие облачные провайдеры задействованы, какие сторонние интеграции подключены. Такая карта — готовый плацдарм для дальнейших, более целенаправленных атак.
Рекомендации для организаций, использующих Next.js, достаточно конкретны. Нужно провести аудит окружений и внедрить принцип минимальных привилегий. Включить сканирование секретов для обнаружения утёкших учётных данных. Не переиспользовать SSH-ключи между системами. На всех инстансах AWS EC2 принудительно включить IMDSv2. Если есть подозрение на компрометацию — немедленно ротировать все учётные данные, не дожидаясь подтверждения.


Новое на сайте

19719Как хакеры через одну дыру в Next.js украли ключи от 766 серверов? 19718Artemis II покинул земную орбиту и летит к луне 19717NASA показало невиданные снимки кометы 3I/ATLAS и запечатлело старт лунной миссии Artemis... 19716Сифилис появился 4000 лет назад — или его находили не там, где искали? 19715Энергетический дисбаланс земли зашкаливает, и учёные не могут это объяснить 19714Cisco закрыла две критические уязвимости с рейтингом 9.8 из 10 в системах IMC и SSM 19713Водород из хлебных крошек: реакция, которая может потеснить ископаемое топливо 19712Китайский спутник с «рукой осьминога» прошёл орбитальный тест дозаправки 19711Кто такие поэты и почему поэзия важна сегодня? 19710Фальшивые установщики и ISO-файлы: как киберпреступники зарабатывают на майнинге и троянах 19709Почему большие языковые модели так и не научились думать 19708WhatsApp предупредил 200 пользователей о поддельном iOS-приложении со шпионским по:... 19707Открытый код под давлением ИИ: уязвимостей стало втрое больше за один квартал 19706Мышей с диабетом первого типа вылечили, создав «смешанный» иммунитет 19705Кости для азартных игр придумали коренные американцы 12 тысяч лет назад?
Ссылка