Vulnérabilité critique dans React Server Components : faille React2shell exposant à l'exécution de code à distance
Célestine Rochefour
Vulnérabilité critique dans React Server Components : faille React2shell exposant à l’exécution de code à distance
Une faille de sécurité de gravité maximale a été révélée dans les React Server Components (RSC) qui, si exploitée avec succès, pourrait conduire à une exécution de code à distance. Cette vulnérabilité, suivie sous l’identifiant CVE-2025-55182, possède un score CVSS de 10.0, sa classification la plus élevée. Surnommée React2shell, elle permet une “exécution de code à distance non authentifiée en exploitant une faille dans la manière dont React décode les payloads envoyés aux endpoints de React Server Function”.
La découverte de cette vulnérabilité intervient dans un contexte où les attaques contre les infrastructures web modernes se multiplient, avec des conséquences potentiellement désastreuses pour les entreprises. Selon les experts, même les applications qui n’implémentent pas d’endpoints React Server Function peuvent être vulnérables si elles prennent en charge les React Server Components.
Impact de la vulnérabilité sur les applications React et Next.js
Versions concernées et gravité de l’attaque
La vulnérabilité affecte spécifiquement les versions 19.0, 19.1.0, 19.1.1, et 19.2.0 des packages npm suivants :
- react-server-dom-webpack
- react-server-dom-parcel
- react-server-dom-turbopack
Ces vulnérabilités ont été corrigées dans les versions 19.0.1, 19.1.2, et 19.2.1 respectivement. Pour Next.js, une autre CVE (CVE-2025-66478) avec un score CVSS de 10.0 a été attribuée, impactant les versions >=14.3.0-canary.77, >=15, et >=16. Les versions corrigées pour Next.js incluent 16.0.7, 15.5.7, 15.4.8, 15.3.6, 15.2.6, 15.1.9, et 15.0.5.
Selon l’analyse de Wiz, 39% des environnements cloud comptent des instances vulnérables à CVE-2025-55182 et/ou CVE-2025-66478. Chiffre inquiétant qui souligne l’ampleur potentielle de l’exposition des systèmes.
Attaques possibles et scénarios réalistes
Dans la pratique, un attaquant non authentifié peut envoyer une requête HTTP malveillante vers n’importe quel endpoint de Server Function. Lorsque React désérialise cette requête, cela permet l’exécution de code JavaScript arbitraire sur le serveur. Le scénario le plus critique est celui où l’attaquant obtient ainsi un contrôle total sur le serveur, lui permettant de voler des données, d’installer des backdoors ou de détruire des systèmes.
Justin Moore, responsable senior de la recherche sur les menaces chez Palo Alto Networks Unit 42, a identifié plus de 968 000 serveurs exécutant des frameworks modernes comme React et Next.js qui sont exposés à cette attaque. “Cette nouvelle faille découverte est une menace critique car elle fonctionne comme une clé maîtresse, réussissant non pas en plantant le système, mais en abusant de sa confiance dans les structures de données entrantes”, explique Moore. “Le système exécute le payload malveillant avec la même fiabilité que le code légitime car il fonctionne exactement comme prévu, mais sur une entrée malveillante.”
Analyse technique de la faille : déserialisation non sécurisée
Mécanisme de la vulnérabilité
Selon la firme de sécurité cloud Wiz, le problème est un cas de déserialisation logique résultant du traitement non sécurisé des payloads RSC. Le React Team a précisé que la faille provient d’un “traitement non sécurisé des payloads sérialisés dans le protocole React Flight”.
Lorsqu’une application React Server Components reçoit des données, elle utilise un processus de sérialisation et désérialisation pour les traiter. Dans ce cas spécifique, le mécanisme de désérialisation ne valide pas correctement les entrantes, permettant à un attaquant d’injecter du code malveillant qui sera ensuite interprété et exécuté par le serveur.
Aikido, une entreprise spécialisée dans la sécurité de la chaîne d’approvisionnement logicielle, a confirmé cette analyse : “Le problème provient du traitement non sécurisé des payloads sérialisés dans le protocole React Flight. Les payloads malformés ou adversariaux peuvent influencer l’exécution côté serveur de manière non intentionnelle.”
Comment les attaques sont orchestrées
L’attaque ne nécessite aucune configuration spéciale ni connexion préalable. Un attaquant ayant simplement un accès au réseau peut envoyer une requête HTTP spécialement conçue vers n’importe quel endpoint de Server Function. Cette requête contient un payload malveillant qui, une fois désérialisé par React, exécute du code arbitraire sur le serveur.
Endor Labs, Miggo Security et VulnCheck ont tous souligné que l’exploitation de cette faille ne nécessite aucune condition particulière. “Un attaquant n’a besoin que d’un accès réseau pour envoyer une requête HTTP spécialement conçue vers n’importe quel endpoint de Server Function”, a déclaré Endor Labs. “La vulnérabilité affecte les configurations par défaut du framework, ce qui signifie que les déploiements standards sont immédiatement exploitables sans conditions spéciales.”
Bibliothèques et frameworks impactés
Liste complète des packages affectés
Outre les packages React mentionnés précédemment, toute bibliothèque qui embarque des RSC est susceptible d’être affectée par cette faille. Cela inclut, sans s’y limiter :
- Vite RSC plugin
- Parcel RSC plugin
- React Router RSC preview
- RedwoodJS
- Waku
Cette liste n’est pas exhaustive, et les développeurs doivent vérifier si leurs dépendances indirectes pourraient introduire cette vulnérabilité. La nature même de l’écosystème JavaScript, avec ses nombreuses dépendances imbriquées, rend le suivi de ces vulnérabilités particulièrement complexe.
Solutions de contournement temporaires
Pendant que les correctifs sont appliqués, plusieurs mesures temporaires peuvent être envisagées :
- Déployer des règles de pare-feu applicatif web (WAF) si disponible
- Surveiller le trafic HTTP vers les endpoints de Server Function pour détecter les requêtes suspectes ou malformées
- Envisager de restreindre temporairement l’accès réseau aux applications affectées
Cloudflare, un fournisseur d’infrastructure web, a ind avoir déployé une nouvelle protection dans sa solution WAF cloud pour adresser CVE-2025-55182. L’entreprise précise que tous ses clients, tant sur les plans gratuits que payants, sont protégés “tant que le trafic de leur application React est proxysé” à travers son service.
Recommandations de sécurité et correctifs
Mises à jour nécessaires à appliquer
La solution la plus efficace et recommandée reste l’application des mises à jour dès que possible. Les développeurs doivent :
- Mettre à jour React aux versions 19.0.1, 19.1.2, ou 19.2.1
- Pour les utilisateurs de Next.js, mettre à jour vers les versions corrigées (16.0.7, 15.5.7, etc.)
- Vérifier et mettre à jour toutes les dépendances indirectes qui pourraient utiliser des RSC
Les correctifs incluent une validation plus stricte et un comportement de désérialisation renforcé, comme l’a confirmé Aikido : “Les versions de React corrigées incluent une validation plus stricte et un comportement de désérialisation durci.”
Mesures de protection immédiates
En attendant l’application des correctifs, les équipes de sécurité doivent mettre en place des mesures de défense en profondeur :
- Configurer des règles WAF pour bloquer les payloads suspects
- Mettre en place une surveillance avancée des requêtes entrantes
- Isoler temporairement les applications affectées dans un environnement restreint
- Éduquer les équipes de développement sur les risques associés aux RSC
Il est également crucial de maintenir une veille sur les éventuelles variantes de cette vulnérabilité ou d’autres failles connexes qui pourraient être découvertes par des chercheurs en sécurité.
Conclusion et prochaines étapes pour les développeurs
La découverte de la vulnérabilité React2shell représente une menace critique pour l’écosystème React et Next.js, avec un potentiel d’exploitation immédiat et sans condition préalable. La nature de cette faille, qui permet une exécution de code à distance non authentifiée, en fait l’une des vulnérabilités les plus dangereuses découvertes récemment dans le paysage du développement web.
Les organisations utilisant React Server Components ou Next.js doivent traiter cette faille avec la plus haute priorité. La première étape consiste à vérifier immédiatement si leurs applications sont affectées en consultant les versions des packages utilisés. Ensuite, un plan de mise à jour doit être élaboré et exécuté dans les plus brefs délais, en tenant compte des dépendances indirectes qui pourraient également être impactées.
En parallèle, des mesures temporaires de protection doivent être déployées pour réduire la fenêtre d’exposition. La surveillance du trafic et le déploiement de règles WAF représentent des défenses essentielles dans l’attente des correctifs.
Cette vulnérabilité souligne également l’importance cruciale de la sécurité dans le développement moderne des applications web. Alors que les frameworks comme React continuent d’évoluer pour offrir des fonctionnalités plus puissantes, ils introduisent également des surfaces d’attaque potentielles complexes. Les équipes de développement doivent adopter une approche proactive de la sécurité, en intégrant dès le départ des pratiques de codage sécurisé et des mécanismes de validation robustes pour tous les entrants de données.
Face à cette menace imminente, la communauté React et Next.js a démontré une capacité de réponse rapide avec la publication des correctifs. Cependant, la sécurité ne s’arrête pas là. Les développeurs doivent rester vigilants, maintenir leurs dépendances à jour et suivre les recommandations de sécurité officielles pour protéger leurs applications contre les menaces émergentes.