React2Shell: уязвимость CVE-2025-55182 активно используется хакерами для кражи данных и майнинга в облачных средах

information security

Критическая уязвимость удаленного выполнения кода (RCE) в React, получившая название React2Shell, активно эксплуатируется в реальных атаках. Злоумышленники используют уязвимость CVE-2025-55182 не только для разового запуска команд, но и для получения постоянного доступа к облачным рабочим нагрузкам, кражи учетных данных и развертывания вредоносного программного обеспечения. Эксперты компании Wiz зафиксировали широкий спектр атак, начиная от простого криптомайнинга и заканчивая установкой сложных бэкдоров.

Описание

Уязвимость, связанная с неправильной десериализацией входных данных в React Server Components (RSC), позволяет злоумышленникам обходить границы безопасности и выполнять произвольный код на сервере. Изначально основное внимание уделялось фреймворку Next.js из-за его массовой популярности. Однако проблема носит более фундаментальный характер и затрагивает другие платформы, использующие RSC, включая Waku и Vite.

Активная эксплуатация в облачных средах началась практически сразу после раскрытия информации об уязвимости. Исследователи наблюдают волну атак, нацеленных на интернет-ориентированные приложения Next.js и другие контейнеризованные рабочие нагрузки, работающие в Kubernetes и управляемых облачных сервисах. Злоумышленники быстро перешли от простой разведки к активным действиям.

Первым шагом во многих случаях стало получение интерактивной оболочки внутри контейнеров приложений. Далее злоумышленники выполняют обнаружение окружения и идентификационных данных. Команды whoami, hostname, дампы переменных среды и перечисление файла /etc/passwd часто объединяются в однострочные скрипты и отправляются на контролируемую хакерами инфраструктуру. Также активно используется DNS-маякование для подтверждения выполнения кода и исходящего сетевого трафика из облачных сред.

Особую тревогу вызывает целенаправленная кража учетных данных для облачных платформ и инструментов разработки. В одной из кампаний злоумышленники использовали обратную оболочку для системного сбора данных npm, AWS, Docker, Git, SSH и информации из package.json сервера Next.js. Все данные кодировались в base64 для последующей эксфильтрации.

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

Кроме того, исследователи зафиксировали несколько отдельных кампаний по развертыванию криптомайнеров в контейнерах. Одна из них использовала упакованный вариант XMRig и пользовательскую инфраструктуру для распространения скриптов, которые убивают конкурирующие процессы майнеров и пытаются повысить привилегии локально. Майнеры маскируются под легитимные системные процессы, чтобы слиться со списком процессов контейнера. Другие кампании просто загружали стандартный XMRig из GitHub и настраивали его для работы с пулами майнинга под контролем злоумышленников.

Наиболее серьезные инциденты связаны с развертыванием полнофункциональных бэкдоров. В одной из кампаний злоумышленники загружали скрипты, которые, в свою очередь, получали и выполняли вредоносные полезные нагрузки (пейлоады) Sliver в виде 64-битных ELF-бинарников. Эти импланты связывались с внешней инфраструктурой командования и управления (C2), что указывает на целенаправленные действия, а не на оппортунистическое использование готового вредоносного ПО.

Важно понимать, что проблема выходит за рамки Next.js. Уязвимость затрагивает фундаментальный механизм обработки RSC-полезных нагрузок. В Next.js функция уязвима по умолчанию из-за заголовка next-action, что делает фреймворк основной мишенью. Однако другие платформы, такие как Waku и Vite с плагинами RSC, также уязвимы. Исследователям Wiz удалось выполнить код на этих платформах с помощью слегка модифицированного доказательства концепции (PoC).

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

Техническая суть уязвимости заключается в неправильной десериализации данных формы React Server Component. Злоумышленник создает вредоносную полезную нагрузку со сложной структурой, содержащей несколько самоссылок. Эта структура заменяет легитимные объекты контролируемыми "гаджетами" во время десериализации, поскольку уязвимый код не проверяет типы в критических точках. Основным "гаджетом" для выполнения кода становится нативный конструктор Function(), который ведет себя аналогично eval(). В итоге вложенные ссылки в полезной нагрузке приводят к вызову этого конструктора со строкой JavaScript, предоставленной злоумышленником, что и приводит к выполнению произвольного кода.

Наблюдаемая активность демонстрирует четкую закономерность. Злоумышленники рассматривают скомпрометированные контейнеры как точки сбора учетных данных для облачных панелей управления и смежных инструментов разработки. Уязвимость React2Shell стала для них эффективным инструментом первоначального доступа в облачные среды, что подчеркивает важность своевременного применения патчей и комплексного мониторинга безопасности.

Индикаторы компрометации

IPv4

  • 104.238.61.32
  • 154.26.190.6
  • 154.89.152.240
  • 172.245.79.16
  • 185.229.32.220
  • 193.34.213.150
  • 212.237.120.249
  • 216.158.232.43
  • 37.27.217.205
  • 45.32.158.54
  • 47.84.82.8
  • 5.161.227.224
  • 8.222.213.56

Domains

  • anywherehost.site
  • aws.orgserv.dnsnet.cloud.anondns.net
  • ax29g9q123.anondns.net
  • inerna1.site
  • ip.inovanet.pt
  • keep.camdvr.org
  • mail.wrufff.de
  • t.cnzzs.co
  • tr.earn.top

URLs

  • http://104.238.61.32:8080/zold
  • http://154.89.152.240/check.sh
  • http://185.229.32.220:21642/2lt4de8wgl54wtjgo8/winds
  • http://193.34.213.150/nuts/bolts
  • http://193.34.213.150/nuts/x86
  • http://216.158.232.43:12000/sex.sh
  • http://45.32.158.54/5e51aff54626ef7f/x86_64
  • http://47.84.82.8/index
  • http://47.84.82.8/upload
  • http://8.222.213.56/index
  • http://anywherehost.site/xb/runner.zip
  • http://anywherehost.site/xb/systemd-devd.$(uname
  • http://anywherehost.site/xms/k1.sh?grep
  • http://anywherehost.site/xms/kill2.sh
  • http://anywherehost.site/xms/su
  • http://anywherehost.site/xms/t1.ps1
  • http://ax29g9q123.anondns.net
  • http://inerna1.site/xb/runner.zip
  • http://inerna1.site/xb/systemd-devd.x86_64
  • http://inerna1.site/xms/k1.sh
  • http://inerna1.site/xms/t1.ps1
  • http://ip.inovanet.pt/systemprofile.zip
  • http://keep.camdvr.org:8000/BREAKABLE_PARABLE10
  • http://keep.camdvr.org:8000/BREAKABLE_PARABLE5
  • http://keep.camdvr.org:8000/d5.sh
  • http://superminecraft.net.br:3000/sex.sh
  • https://tr.earn.top/Log.php?id=

SHA1

  • 0972859984decfaf9487f9a2c2c7f5d2b03560a0
  • 1ce4b6a89d2daa0cab820711d8424a7676ef5ff2
  • 20e1465fd07f0d4e19c299fb0d9af8e5ec1b21d2
  • 264e1a820b8b3bbd13325955f06aff2678c69935
  • 2937c58115c131ae84a1b2a7226c666f6a27ef88
  • 34551bca762be99d732c0ced6ad8b0a2f7b11ad7
  • 470ce679589e1c3518c3ed2b818516f27ccad089
  • 5d368356bd49c4b8e3c423c10ba777ff52a4f32a
  • 6e43e26fa62dfa89fe8b016dc831a9ec44507af9
  • 732226c0966fe29116b147e893c35ce7df1c8f1a
  • 7c8010d9ab6dfdc7a99aba7075a793260acbf2b8
  • 7fe3826fc7b90e20c9fe76a7891eff350d73b6b3
  • 91152e6ffe0474b06bb52f41ab3f3545ac360e64
  • be86823d73a01266b096dab1628cfa2e4ca77265
  • c67e8aa881317cb32d7c36b2e3c0c5cfa21bf5e3
  • d6e97c9783f0907f1ee9415736816e272a9df060

Monero Wallet

  • 44VvVLU2Vmja6gTMbhNHAzc7heYTiT7V mQEXkjdaYo6K41WqH8qWw1CL8wKAAgz5 xLYT3XL3pb9KCUZS7PPZbzUGCCpZ9Ee
  • 42NTfUjbU3Gj536zubU7vpjfC7X9DPEC ciwbCXrrjBk5KqkJS1Xq4saVgQLP1yqU YHKzn7apt1p3W6mDWm87n3nwDEmWeSh
Комментарии: 0