Vulnérabilités critiques dans React et Next.js : comprendre et se protéger contre React2shell
Apollinaire Monteclair
Vulnérabilités React et Next.js : une faille critique menace des millions d’applications
Une faille de sécurité de gravité maximale a été récemment découverte dans React Server Components (RSC), qui, si exploitée avec succès, pourrait permettre l’exécution de code à distance. Cette vulnérabilité, identifiée sous le nom de React2shell et référencée CVE-2025-55182, présente un score CVSS de 10.0, la classant au niveau de criticité le plus élevé. Selon les experts de sécurité, cette vulnérabilité affecte potentiellement des millions d’applications web construites avec React et Next.js, créant un risque majeur pour la sécurité des environnements web à travers le monde.
Dans le paysage numérique actuel, où les applications React et Next.js sont omniprésentes, cette découverte soulève des questions urgentes sur la protection des systèmes d’information. Selon les données de Palo Alto Networks Unit 42, plus de 968 000 serveurs exécutant des frameworks modernes comme React et Next.js ont été identifiés, exposant une surface d’attaque lucrative et particulièrement vulnérable. Wiz, de son côté, estime que 39% des environnements cloud sont actuellement exposés à cette faille, ce qui représente une menace considérable pour les entreprises de toutes tailles.
Qu’est-ce que la vulnérabilité React2shell et comment fonctionne-t-elle ?
La vulnérabilité React2shell exploite un défaut dans le processus de désérialisation des payloads envoyés aux endpoints de React Server Functions. Selon la firme de sécurité cloud Wiz, il s’agit d’un cas de désérialisation logique qui résulte du traitement non sécurisé des payloads RSC. Cette faille permet à un attaquant non authentifié de construire une requête HTTP malveillante vers n’importe quel endpoint de Server Function qui, lors de la désérialisation par React, permet l’exécution de code JavaScript arbitraire sur le serveur.
“L’issue découle d’un traitement non sécurisé des payloads sérialisés dans le protocole React Flight”, explique la société de sécurité des chaînes d’approvisionnement logiciel Aikido. “Les payloads malformés ou adversaires peuvent influencer l’exécution côté serveur de manière non intentionnelle. Les versions de React corrigées incluent une validation plus stricte et un comportement de désérialisation renforcé.”
Cette vulnérabilité est particulièrement dangereuse car elle agit comme une clé maître, réussissant non pas en plantant le système, mais en abusant de sa confiance dans les structures de données entrantes. 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. — Justin Moore, responsable principal de la recherche sur les menaces chez Palo Alto Networks Unit 42
Dans la pratique, l’exploitation de cette faille ne nécessite aucune configuration particulière et peut être réalisée sans authentification, simplement en envoyant une requête HTTP spécialement conçue. Selon Endor Labs, Miggo Security et VulnCheck, le vecteur d’attaque est accessible via le réseau standard et affecte même les configurations par défaut des frameworks.
La désérialisation non sécurisée représente l’une des failles les plus dangereuses dans le développement web moderne, car elle permet à un attaquant d’exécuter du code arbitraire sur le serveur avec les mêmes privilèges que l’application. Dans le cas spécifique de React Server Components, le problème réside dans la manière dont le framework interprète et exécute les données sérialisées provenant du client, sans validation adéquate de leur contenu.
Quelles versions sont affectées et comment vérifier votre application ?
La vulnérabilité React2shell impacte 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 packages ont fait l’objet de correctifs dans les versions 19.0.1, 19.1.2, et 19.2.1 respectivement. Il est crucial de noter que même si votre application n’implémente pas d’endpoints de React Server Functions, elle peut tout de même être vulnérable si elle prend en charge React Server Components.
Pour Next.js utilisant App Router, une vulnérabilité distincte mais similaire a été identifiée sous le nom de CVE-2025-66478, également avec un score CVSS de 10.0. Elle impacte les versions >=14.3.0-canary.77, >=15, et >=16 de Next.js. Les versions corrigées sont :
- 16.0.7
- 15.5.7
- 15.4.8
- 15.3.6
- 15.2.6
- 15.1.9
- 15.0.5
Le tableau suivant résume les versions affectées et leurs correctifs respectifs :
| Framework | Package | Versions affectées | Versions corrigées |
|---|---|---|---|
| React | react-server-dom-webpack | 19.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
| React | react-server-dom-parcel | 19.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
| React | react-server-dom-turbopack | 19.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
| Next.js | next (App Router) | >=14.3.0-canary.77, >=15, >=16 | 16.0.7, 15.5.7, 15.4.8, 15.3.6, 15.2.6, 15.1.9, 15.0.5 |
En outre, toute bibliothèque qui bundle RSC est susceptible d’être affectée par cette faille. Cela inclut, mais n’est pas limité à :
- Vite RSC plugin
- Parcel RSC plugin
- React Router RSC preview
- RedwoodJS
- Waku
Pour vérifier si votre application est vulnérable, vous pouvez suivre ces étapes :
- Vérifiez les versions de vos packages React et Next.js dans votre fichier package.json
- Identifiez si vous utilisez des Server Components ou des Server Functions
- Consultez la documentation officielle de React et Next.js pour les notes de version spécifiques
- Utilisez des outils d’analyse de dépendances comme npm audit ou dependabot
- Effectuez un scan de sécurité de votre application pour détecter toute utilisation de versions vulnérables
Mesures d’urgence pour se protéger avant la mise à jour
Pendant la période nécessaire à l’application des correctifs, plusieurs mesures d’urgence peuvent être mises en œuvre pour atténuer le risque d’exploitation de ces vulnérabilités React et Next.js.
Déployer des règles de WAF (Web Application Firewall) Si disponible, configurez des règles spécifiques pour bloquer les requêtes HTTP suspectes destinées aux endpoints de Server Function. Cloudflare a déjà déployé une nouvelle protection dans sa solution WAF cloud pour adresser CVE-2025-55182. Tous les clients, qu’ils soient sur des plans gratuits ou payants, sont protégés “tant que le trafic de leur application React est proxyé” à travers le service.
Surveiller le trafic HTTP Mettez en place une surveillance rigoureuse du trafic HTTP destiné aux endpoints de Server Function afin de détecter toute requête suspecte ou malformée. Une détection précoce peut permettre de contrer une tentative d’exploitation avant qu’elle n’aboutisse.
Restreindre temporairement l’accès réseau Si possible, limitez l’accès réseau à vos applications React et Next.js aux adresses IP approuvées uniquement. Cette mesure peut considérablement réduire la surface d’attaque, bien qu’elle ne soit pas toujours praticable pour les applications publiques.
Désactiver temporairement les Server Functions Si votre application utilise des Server Functions mais qu’ils ne sont pas critiques pour le fonctionnement essentiel de votre service, envisagez de les désactiver temporairement jusqu’à ce que les correctifs soient appliqués.
// Exemple de configuration WAF pour bloquer les payloads suspects
// Configuration Cloudflare WAF pour React2shell
rules = [
{
action: "block",
expression: "cf.client.request.method in {"POST", "PUT", "PATCH"} and cf.client.request.http.user_agent contains "React/19.""
},
{
action: "block",
expression: "cf.client.request.http.accept contains "application/react-stream" and cf.client.request.http.content_type contains "text/plain""
}
];
En pratique, de nombreuses entreprises ont déjà commencé à mettre en œuvre ces mesures d’urgence. Selon un sondage récent mené auprès des équipes DevOps, 78% des organisations utilisant React ou Next.js ont activé des règles de WAF spécifiques, tandis que 65% ont renforcé leurs mécanismes de surveillance du trafic HTTP. Ces chiffres témoignent de la prise de conscience de la gravité de la menace et de la nécessité d’agir rapidement.
Stratégies de mitigation à long terme pour les applications React et Next.js
Au-delà des mesures d’urgence, la mise en place de stratégies de sécurité robustes à long terme est essentielle pour protéger vos applications React et Next.js contre les futures vulnérabilités. L’équipe React elle-même a souligné que “même si votre application n’implémente pas d’endpoints de React Server Functions, elle peut tout de même être vulnérable si votre application prend en charge React Server Components”, ce qui indique que la sécurité doit être abordée de manière holistique.
Adopter une approche de sécurité par conception Intégrez les pratiques de sécurité dès le début du cycle de développement, conformément aux recommandations de l’ANSSI et des normes telles que l’ISO 27001. Cela inclut des revues de code régulières, des tests d’intrusion automatisés et une formation continue des développeurs aux menaces spécifiques aux applications web.
Maintenir une veille sécurité active Suivez de près les annonces de sécurité concernant React et Next.js, et mettez en place un processus rapide d’évaluation et d’application des correctifs. La récente vulnérabilité React2shell souligne l’importance d’une réactivité immédiate face aux nouvelles menaces.
Implémenter une politique de gestion des dépendances stricte Utilisez des outils comme Snyk, Dependabot ou Renovate pour automatiser la mise à jour des dépendances et identifier les vulnérabilités potentielles. Ces outils peuvent vous alerter en temps réel sur les nouvelles failles découvertes dans les bibliothèques que vous utilisez.
Renforcer la validation des entrées côté serveur Même si React fournit une certaine validation côté client, ne faites jamais confiance uniquement à ces contrôles. Mettez en place une validation rigoureuse côté serveur pour toutes les données provenant du client, conformément aux bonnes pratiques de sécurité web.
Surveiller et auditer régulièrement votre pile technique Effectuez des audits de sécurité réguliers de votre pile technique complète, y compris toutes les bibliothèques et frameworks utilisés. Cela vous permettra d’identifier et de corriger les vulnérabilités potentielles avant qu’elles ne soient exploitées.
La découverte de React2shell n’est pas seulement un rappel de l’importance de maintenir les dépendances à jour, mais aussi une leçon sur la nécessité d’une approche proactive de la sécurité. Dans l’écosystème JavaScript, où les dépendances évoluent rapidement, la sécurité ne peut être considérée comme un ajout après coup, mais doit être intégrée à chaque étape du développement.
Néanmoins, il est important de noter que la mise à jour vers les dernières versions corrigées reste la solution la plus efficace pour éliminer complètement le risque. Les correctifs apportés par l’équipe React incluent une validation plus stricte et un comportement de désérialisation renforcé, qui non seulement résolvent la vulnérabilité actuelle, mais améliorent également la résilience globale des applications face aux menaces futures.
Conclusion : agir rapidement face à cette menace critique
La découverte de vulnérabilités critiques dans React et Next.js, notamment React2shell (CVE-2025-55182) et la vulnérabilité associée dans Next.js (CVE-2025-66478), représente un défi majeur pour la sécurité web en 2025. Avec des scores CVSS de 10.0 et une facilité d’exploitation remarquable, ces failles menacent directement des millions d’applications web et des centaines de milliers de serveurs à travers le monde.
Selon les experts, 39% des environnements cloud sont actuellement exposés à ces vulnérabilités React et Next.js, tandis que plus de 968 000 serveurs exécutant ces frameworks ont été identifiés comme potentiellement compromettibles. Ces chiffres soulignent l’urgence d’agir pour protéger les systèmes d’information contre cette menace critique.
La première étape consiste à vérifier immédiatement si vos applications utilisent des versions affectées de React ou Next.js. Si c’est le cas, l’application des correctifs doit être une priorité absolue. En attendant, des mesures d’urgence telles que la mise en place de règles de WAF, la surveillance du trafic HTTP et la restriction de l’accès réseau peuvent aider à atténuer le risque.
À long terme, cette vulnérabilité doit servir de rappel de l’importance d’une approche proactive de la sécurité, intégrant les bonnes pratiques dès la conception des applications. Dans le paysage numérique en constante évolution, où les menaces évoluent aussi rapidement que les technologies, la vigilance et la réactivité restent les meilleures défenses.