CVE-2025-11953

React Native Community CLI

ВЕРОЯТНОСТЬ 3.4%

Дата обнаружения

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 и ни при каких обстоятельствах не попадают в релизные сборки приложения.