Une faille dans React Native CLI ouvre les serveurs de développement aux attaques

Lucas Morel

Le bogue expose le serveur de développement Metro à des attaques à distance, permettant l’exécution arbitraire de commandes du système d’exploitation sur les systèmes de développement avant un correctif dans la version 20.0.0.

Une faille critique d’exécution de code à distance (RCE) dans le @react-native-community/cli largement utilisé (et son API de serveur) permet aux attaquants d’exécuter des commandes arbitraires du système d’exploitation via le serveur de développement Metro, le bundle JavaScript par défaut pour React Native.

Essentiellement, lancer le serveur de développement via des commandes standard (par exemple, npm start ou npxreact-native start) pourrait exposer la machine à des attaquants externes, car le serveur se lie à toutes les interfaces réseau par défaut (0.0.0.0), plutôt que de se limiter à « localhost » comme il est indiqué dans le message de la console.

Selon les chercheurs de JFrog, le bug constitue un problème grave qui menace les développeurs d’applications React Native. Bien que l’exploitation sous Windows soit bien démontrée (exécution complète de commandes du système d’exploitation via un appel open() non sécurisé), les chemins macOS/Linux sont actuellement moins simples, même si le risque reste réel et fait l’objet de recherches plus approfondies.

Cette combinaison de liaison par défaut non sécurisée et d’appel open() défectueux crée les conditions d’exécution de code à distance, ce qui est rare et dangereux dans un outil de développement uniquement.

« Cette vulnérabilité montre que même des failles simples d’exécution de code à distance, telles que la transmission des entrées de l’utilisateur au shell du système, se retrouvent toujours dans les logiciels du monde réel, en particulier dans les cas où la dangereuse fonction de récepteur réside en fait dans du code tiers, qui était la fonction « ouverte » importée dans ce cas », ont déclaré les chercheurs.

Le bug, suivi comme CVE-2025-11953, se voit attribuer un score CVSS de 9,8 sur 10 et affecte les versions 4.8.0 à 20.0.0-alpha.2.

Que doivent faire les développeurs maintenant ?

Les développeurs utilisant @react-native-community/cli (ou le cli-server-api fourni) dans leurs projets React Native doivent vérifier la version du package vulnérable sur la liste npm. La vulnérabilité est corrigée dans la version 20.0.0 de cli-server-api, une mise à jour immédiate est donc recommandée.

Les enjeux incluent qu’un attaquant exécute des commandes à distance sur la machine de développement de la victime, ce qui pourrait conduire à un accès réseau plus large, à une corruption de code ou à l’injection de charges utiles malveillantes dans une version d’application. Si la mise à jour n’est pas réalisable immédiatement, JFrog a conseillé de limiter le serveur de développement à localhost en passant explicitement l’indicateur « –host 127.0.0.1 » pour réduire l’exposition.

« Cela nous rappelle que des pratiques de codage sécurisées et une analyse de sécurité automatisée sont essentielles pour prévenir ces failles facilement exploitables avant qu’elles n’atteignent la production », ont déclaré les chercheurs, recommandant JFrog SAST pour identifier les problèmes dès le début du processus de développement.

La faille React Native CLI reflète une tendance plus large d’attaquants à se glisser dans les écosystèmes de développeurs, depuis les packages npm avec des charges utiles cachées jusqu’aux extensions IDE « vérifiées » malveillantes, transformant les outils de construction fiables en points d’entrée furtifs.