Una vulnerabilidad crítica en React Native CLI exponen a millones a ciberataques

Se ha descubierto una vulnerabilidad crítica (CVE-2025-11953) en el paquete npm @react-native-community/cli(Community CLI para React Native) con una puntuación CVSS de 9.8/10. La falla permite que un atacante no autenticado ejecute comandos del sistema operativo en máquinas de desarrollo que utilizan este CLI.


RCE en Entornos de Desarrollo por Descuido de Metro Server

La vulnerabilidad reside en la exposición por defecto del servidor de desarrollo de React Native a interfaces externas, lo que permite la inyección de comandos a través de una API no validada.


Mecanismo de Explotación
  • Exposición Insegura: El servidor de desarrollo Metro, que se inicia con el CLI de React Native, atiende a interfaces externas por defecto (no solo a localhost), ampliando compresión su exposición.
  • API vulnerable: el exploit apunta a un endpoint específico: /open-url.
  • Inyección de Comandos: Este endpoint acepta peticiones POSTcon un parámetro que se pasa a la función open()del paquete npm “open” sin sanitización suficiente. Esto permite la inyección de comandos del sistema operativo (RCE).
  • Alcance: Los investigadores demostraron la ejecución de shell con argumentos controlados por el atacante en Windows, y la ejecución es posible (aunque más limitada) en Linux y macOS.

Riesgo Crítico en la Cadena de Suministro
  • No Requiere Autenticación: La vulnerabilidad no requiere ninguna autenticación y es de fácil explotación, convirtiéndola en un vector de alto riesgo.
  • Movimiento Lateral: La exposición de una máquina de desarrollo a RCE permite a un atacante saltar del entorno de desarrollo a sistemas conectados o internos de la organización.
  • CI/CD Afectado: El malware puede afectar no solo las estaciones de trabajo locales, sino también los servidores de compilación o de Integración Continua (CI/CD) que ejecutan el CLI vulnerable, escalando el compromiso de la cadena de suministro de software.
  • Mala configuración por defecto: La exposición por defecto del servidor Metro a interfaces externas aumenta significativamente el riesgo.

Recomendaciones
  1. Parcheo y Aislamiento
  • Actualizar inmediatamente: Actualizar la versión del paquete@react-native-community/cli (y @react-native-community/cli-server-api) a la versión 20.0.0 o superior.
  • Aislamiento Temporal: Mientras se completa la actualización, forzar que el servidor Metro se enlace solo alocalhost (por ejemplo, usando npx react-native start –host 127.0.0.1).
  • Restricción de Red: Asegurarse de que las máquinas de desarrollo no estén expuestas a redes públicas o no confiables y evitar abrir puertos innecesarios.
  1. Controles de Seguridad y DevSecOps
  • Caza de Anomalías: Auditar que no existe escucha del servidor Metro en interfaces externas. Verificar registros de red para conexiones entrantes inesperadas al puerto de Metro (por defecto 8081).
  • Alertas de RCE: Establecer alertas o bloqueos en el endpoint para peticiones anómalas POSThacia /open-url o comportamiento de creación de procesos no habituales (shell o cmd.exe) originados desde los procesos de Node.js/CLI.
  • Auditoría de CI/CD: Revisar los pipelines de CI/CD para detectar si se está ejecutando el CLI vulnerable en servidores compartidos; actualizar o aislar dichos entornos.
  • Concientización: Educar a los equipos de desarrollo sobre los riesgos de herramientas de desarrollo expuestas y el peligro de la ejecución de comandos sin validación.

Related Post