CVE-2025-11953
React Native Community CLI
2026-02-05
React Native Community CLI contains an OS command injection vulnerability which could allow unauthenticated network attackers to send POST requests to the Metro Development Server and run arbitrary executables via a vulnerable endpoint exposed by the server. On Windows, attackers can also execute arbitrary shell commands with fully controlled arguments.
Технический анализ и план устранения
Суть уязвимости
Уязвимость CVE-2025-11953 представляет собой критический недостаток безопасности типа внедрение команд ОС (OS Command Injection) в React Native Community CLI.
Проблема кроется в сервере разработки Metro (Metro Development Server), который запускается в процессе работы над приложением. Сервер открывает локальный эндпоинт, который обрабатывает POST-запросы без должной аутентификации и строгой валидации входных данных.
В результате неаутентифицированный злоумышленник, имеющий сетевой доступ к порту сервера Metro (например, находящийся в той же локальной сети), может отправить специально сформированный POST-запрос. Это приведет к выполнению произвольных исполняемых файлов на рабочей станции разработчика с правами пользователя, запустившего сервер. На операционных системах Windows уязвимость проявляется еще острее, позволяя злоумышленнику выполнять произвольные команды оболочки (shell) с полностью контролируемыми аргументами.
Как исправить
Единственным надежным способом устранения данной уязвимости является обновление пакета @react-native-community/cli до версии, в которой выпущен патч безопасности.
Для обновления пакета с использованием npm выполните команду:
npm install @react-native-community/cli@latest --save-dev
Для обновления пакета с использованием yarn выполните команду:
yarn add @react-native-community/cli@latest --dev
После обновления зависимостей обязательно очистите кэш сборщика Metro, чтобы избежать использования старых уязвимых модулей:
npx react-native start --reset-cache
Временные меры
Если немедленное обновление пакетов в проекте невозможно из-за проблем с совместимостью, необходимо применить следующие компенсирующие меры для защиты рабочих станций разработчиков:
- Привязка к локальному интерфейсу (Localhost Binding): Убедитесь, что сервер Metro слушает только интерфейс
127.0.0.1. Строго запрещено запускать сервер с флагами, открывающими доступ извне (например, не используйте--host 0.0.0.0). - Настройка брандмауэра (Firewall): Настройте локальный брандмауэр на рабочих станциях разработчиков (Windows Defender Firewall, iptables, ufw) на блокировку любых входящих подключений к порту Metro (по умолчанию
8081) из внешней или локальной сети. - Отказ от работы в недоверенных сетях: Запретите разработчикам запускать сервер разработки при подключении к публичным, гостевым или неконтролируемым сетям Wi-Fi (кафе, аэропорты, коворкинги).
- Использование VPN или изоляции: При необходимости удаленной отладки на реальных устройствах используйте защищенные туннели (например, SSH port forwarding) вместо прямого открытия порта в локальную сеть.
- Аудит production-сборок: Убедитесь, что сервер Metro и связанные с ним CLI-инструменты находятся исключительно в
devDependenciesи ни при каких обстоятельствах не попадают в релизные сборки приложения.