Metro4Shell (CVE-2025-11953): критична уразливість Metro-сервера React Native та атаки на розробницькі середовища

CyberSecureFox 🦊

Локальні інструменти розробника дедалі частіше стають повноцінними точками входу для зловмисників. Новий приклад — критична уразливість CVE-2025-11953, більш відома як Metro4Shell, яка дозволяє віддалене виконання коду через Metro-сервер у проєктах React Native та вже активно експлуатується в реальних атаках на Windows і Linux-системи.

Що таке Metro-сервер React Native і чому він став ціллю атак

Metro — стандартний JavaScript-бандлер, що використовується за замовчуванням у React Native. У режимі розробки він піднімає локальний HTTP-сервер, який може прив’язуватися не лише до localhost, а й до зовнішніх мережевих інтерфейсів. На цьому сервері доступні спеціальні HTTP-ендпоїнти, спроєктовані для локальної роботи розробника.

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

Технічні деталі CVE-2025-11953 (Metro4Shell) та механізм експлуатації

Уразливість CVE-2025-11953 була виявлена фахівцями компанії JFrog у листопаді 2025 року. Дослідники встановили, що ендпоїнт /open-url Metro-сервера приймає POST-запити з довільними URL і передає їх у функцію open() без будь-якої валідації та фільтрації. Це відкриває можливість для неавтентифікованого віддаленого виконання команд (RCE) на машині розробника.

Сценарій атак на Windows: PowerShell та UPX-упакований Rust-бінарник

За даними компанії VulnCheck, перші підтверджені експлуатації Metro4Shell зафіксовані 21 грудня 2025 року, а потім повторювалися 4 та 21 січня. В усіх випадках атакувальники надсилали на уразливий /open-url HTTP POST-запити з тілом, яке містило base64-кодовані PowerShell-скрипти.

Після декодування та запуску PowerShell-скрипт завантажував і виконував шкідливий Windows-пейлоад — UPX-упакований бінарний файл на Rust. У ньому реалізовано базові техніки протидії аналізу: обфускація, перевірка середовища виконання, ускладнення статичного й динамічного аналізу. Дослідники виявили на тій самій інфраструктурі схожий Linux-бінарник, що свідчить про кросплатформенний характер кампанії та її фокус на різних середовищах розробки.

Linux і macOS: обмежене, але реальне віддалене виконання коду

На системах під керуванням Linux та macOS експлуатація Metro4Shell не завжди дозволяє повністю контролювати командний рядок і параметри, однак дає змогу запускати довірені системою виконувані файли. За грамотно побудованого ланцюжка атаки цього достатньо для розгортання завантажувачів, криптомайнерів, RAT-інструментів або для отримання опорної точки з подальшим горизонтальним переміщенням мережею (lateral movement).

Які версії Metro-сервера React Native вразливі та наскільки велика проблема

Уразливість зачіпає пакет @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 виходить за рамки конкретної реалізації в Metro-сервері. Вона демонструє стійкий патерн: як тільки сервіс, розрахований на внутрішнє використання розробниками, стає доступним іззовні, він перетворюється на елемент продакшн-інфраструктури. Аналогічні сценарії регулярно фіксуються для Jenkins, GitLab Runner, систем CI/CD, дебаг-панелей адмінок і тимчасових тестових стендів.

Такі сервіси часто налаштовують за принципом «аби працювало»: без жорстких політик автентифікації, сегментації мережі та належного моніторингу. У результаті компрометація робочої станції розробника або Dev-сервера відкриває доступ до вихідного коду, токенів доступу, ключів, VPN-конфігурацій і, як наслідок, до більш чутливих сегментів інфраструктури.

Як захиститися від Metro4Shell та посилити безпеку Dev‑інфраструктури

Перший крок — негайно оновити пакет @react-native-community/cli-server-api до версії 20.0.0 або новішої у всіх проєктах React Native та провести інвентаризацію залежностей. Важливо також жорстко обмежити доступ до Metro-серверів: прив’язати їх тільки до 127.0.0.1, закрити зовнішні порти фаєрволом і використовувати захищені тунелі (наприклад, SSH або VPN з автентифікацією), а не пряму публікацію в Інтернет.

Другий критичний напрям — мережева сегментація та підхід Zero Trust для розробницьких середовищ. Робочі станції розробників та Dev-сервіси не повинні мати надмірних прав у корпоративній мережі; доступ до секретів необхідно здійснювати через керовані сховища (secret management), а не зберігати токени й ключі у відкритому вигляді в репозиторіях чи змінних оточення.

Третій елемент захисту — моніторинг і виявлення аномалій. Варто налаштувати логування та сповіщення щодо нетипових HTTP-запитів до ендпоїнтів на кшталт /open-url, масових POST-запитів, підозрілих викликів PowerShell, завантаження невідомих бінарників, а також інтегрувати EDR-рішення, здатні виявляти ланцюжки атак із віддаленим виконанням коду.

Metro4Shell наочно демонструє, наскільки розмита межа між «внутрішніми» інструментами розробника та «бойовими» сервісами. Ігнорування безпеки Dev-інфраструктури вже не є прийнятним компромісом заради зручності — це прямий шлях до інцидентів. Командам, що працюють із React Native та іншими сучасними фреймворками, варто переглянути свою експозицію розробницьких сервісів, своєчасно оновлювати залежності та системно впроваджувати DevSecOps-підхід, щоб знизити ризик подальших хвиль атак, подібних до Metro4Shell.

Залишити коментар

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються дані ваших коментарів.