Как хакеры через одну дыру в 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. Если есть подозрение на компрометацию — немедленно ротировать все учётные данные, не дожидаясь подтверждения.


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

20327Кости прерий: как истребление бизонов породило целую индустрию — и сама себя же уничтожила 20326Кто и зачем взламывает серверы Ollama и ComfyUI ради ключей от AWS? 20325Как злоумышленники спрятали командный сервер внутри блокчейна и почему его невозможно... 20324Брюссель заставляет Android делиться секретами с чужими ИИ-помощниками 20323WordPress: как два бага слились в одну критическую дыру, которую назвали wp2shell 20322Как китайские хакеры обманули DigiCert и украли сертификаты для подписи кода? 20321Что скрывается за уязвимостью, которую агентство США внесло в список активно используемых... 20320Автономные системы наступают быстрее, чем инфраструктура для управления ими: кто выиграет... 20319Почему в OpenSSL нашли дыру, съедающую память серверов, но не дали ей даже номер CVE? 20317SonicWall SMA 1000: как два бага превратили VPN-шлюз в бэкдор для атакующих 20316Может ли уязвимость в клиенте Zoom для Windows открыть доступ к чужому аккаунту без... 20315TELEPUZ: новый вредонос на C, который научился прятаться в Telegram, Steam и блокчейне... 20314Дома из дёрна: как исландцы триста лет прятались от холода под слоем земли и травы 20313Как один токен от чужого сервиса мог впустить злоумышленника в чужой аккаунт n8n?
Ссылка