Metro4Shell (CVE-2025-11953): удалённое выполнение кода в Metro-сервере React Native и атаки на разработчиков

CyberSecureFox 🦊

Критическая уязвимость CVE-2025-11953, получившая неофициальное название Metro4Shell, активно эксплуатируется злоумышленниками для компрометации систем разработчиков React Native. Атакующие используют дефект в Metro-сервере — стандартном JavaScript-бандлере для проектов на React Native — чтобы разворачивать вредоносные нагрузки для Windows и Linux прямо в средах разработки.

Что такое Metro-сервер и почему он стал целью атак

Metro — это инструмент сборки JavaScript-кода, который по умолчанию используется в React Native. Во время разработки он поднимает локальный HTTP-сервер, способный привязываться не только к интерфейсу localhost, но и к внешним сетевым интерфейсам. На этом сервере доступны специальные HTTP-эндпоинты, изначально рассчитанные на локальное использование разработчиком.

Проблема в том, что как только такой сервер становится доступен из внешней сети (например, из-за неправильной конфигурации IDE, VPN, прокси или облачной среды), разработческая инфраструктура фактически превращается в боевую. Для атакующего это полноценная точка входа в корпоративную среду, сравнимая по значимости с уязвимым веб-приложением в продакшене.

Механизм эксплуатации CVE-2025-11953 (Metro4Shell)

Уязвимость была выявлена специалистами компании JFrog в ноябре 2025 года. Исследователи обнаружили, что эндпоинт /open-url Metro-сервера принимает POST-запросы с произвольными URL и передаёт их в функцию open() без какой-либо валидации или очистки. В результате неаутентифицированный удалённый злоумышленник получает возможность добиться выполнения произвольных команд.

Атаки на Windows: PowerShell и UPX-упакованный Rust-бинарник

По данным компании VulnCheck, первые подтверждённые случаи эксплуатаций CVE-2025-11953 зафиксированы 21 декабря 2025 года, а затем повторялись 4 и 21 января. Во всех эпизодах атакующие отправляли на уязвимый эндпоинт /open-url HTTP POST-запросы с телом, содержащим base64-кодированные PowerShell-скрипты.

После декодирования и запуска скрипт загружал и выполнял Windows-пейлоад — UPX-упакованный бинарный файл на Rust с базовой антианализной логикой (обфускация, проверка окружения, попытки затруднить статический и динамический анализ). Исследователи также обнаружили, что на той же инфраструктуре размещался аналогичный Linux-бинарник, что свидетельствует о целенаправленно кроссплатформенном характере кампании.

Linux и macOS: ограниченное, но реальное выполнение кода

На системах под управлением Linux и macOS эксплуатация Metro4Shell не всегда позволяет выполнить произвольную командную строку с полной свободой параметров, однако даёт возможность запускать исполняемые файлы. При грамотном построении цепочки атаки этого достаточно, чтобы развернуть обходные загрузчики, криптомайнеры, RAT-инструменты или использовать полученный доступ как стартовую точку для горизонтального перемещения по сети.

Диапазон затронутых версий и масштабы проблемы

Уязвимость затрагивает пакет @react-native-community/cli-server-api в версиях с 4.8.0 до 20.0.0-alpha.2. Исправление было выпущено в релизе 20.0.0, где логика работы эндпоинта /open-url была переработана, а обработка пользовательских URL — усилена.

Дополнительную серьёзность ситуации придаёт тот факт, что, по данным поискового сервиса по баннерам ZoomEye, в открытом доступе обнаруживается порядка 3500 Metro-серверов React Native. Часть из них может принадлежать как отдельным разработчикам-фрилансерам, так и крупным организациям, использующим React Native в мобильных продуктах, что расширяет потенциальный периметр атаки.

Разработческая инфраструктура как новая зона риска

Эксперты VulnCheck подчёркивают, что CVE-2025-11953 важна не только самим фактом своего существования, сколько подтверждаемым ею паттерном: как только разработческий сервис становится доступен извне, он фактически превращается в элемент продакшн-инфраструктуры, независимо от изначальных намерений команды. Аналогичные сценарии на практике регулярно наблюдаются с Jenkins, GitLab Runner, системами CI/CD, отладочными панелями админок и временными тестовыми стендами.

Такие сервисы часто конфигурируются по принципу «лишь бы работало» — без жёстких политик аутентификации, сегментации сети и мониторинга. Это делает их привлекательной целью: компрометировав рабочую машину разработчика, атакующий получает доступ к исходному коду, токенам, ключам, VPN-конфигурациям и далее — к более чувствительным сегментам инфраструктуры.

Чтобы снизить риск эксплуатации Metro4Shell и аналогичных уязвимостей, имеет смысл комбинировать несколько практик: незамедлительно обновить @react-native-community/cli-server-api до версии 20.0.0 и выше, жёстко ограничить доступ к Metro-серверам (привязка только к 127.0.0.1, использование туннелей вместо прямой публикации), внедрить сетевую сегментацию и Zero Trust-подход к разработческим средам, а также настроить мониторинг аномальной активности (нетипичные HTTP-запросы к эндпоинтам вроде /open-url, подозрительные PowerShell-вызовы, загрузка неизвестных бинарников).

Metro4Shell наглядно демонстрирует, что граница между «внутренними» инструментами разработчика и «боевыми» сервисами стремительно размывается. Игнорирование безопасности в Dev-инфраструктуре уже не является безобидным компромиссом ради удобства — это прямой риск инцидентов. Регулярный аудит экспонированных сервисов, своевременное обновление зависимостей и тесная интеграция практик DevSecOps в процесс разработки становятся ключевыми условиями устойчивости компании к новым волнам атак на экосистему React Native и не только.

Оставьте комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.