Faille Critique React et Next.js (CVE-2025-55182)

Temps de lecture estimé : 8 minutes

Points clés à retenir

  • Une faille critique CVSS 10.0 affecte React 19 et Next.js, permettant l’exécution de code à distance sans authentification
  • 39% des environnements cloud contiennent des instances vulnérables selon les données Wiz
  • La mise à jour immédiate vers les versions patchées est impérative pour tous les projets utilisant React Server Components
  • Les WAF de Cloudflare, AWS et Google Cloud ont déployé des protections automatiques

React2Shell : la vulnérabilité qui ébranle l’écosystème JavaScript

Le 3 décembre 2025, l’équipe React et Meta ont divulgué une faille critique qui pourrait bien être l’une des plus sérieuses de l’histoire récente du développement web. CVE-2025-55182, baptisée React2Shell par la communauté cybersécurité, permet à un attaquant non authentifié d’exécuter du code arbitraire sur les serveurs utilisant React Server Components. Soyons clairs : on parle d’un score CVSS de 10.0, le maximum absolu.

J’ai analysé cette vulnérabilité en détail et les implications sont massives. Selon les données de Wiz, 39% des environnements cloud contiennent des instances vulnérables. Si vous utilisez Next.js 15 ou 16 en production, vous êtes concerné. Dans la pratique, une simple requête HTTP malformée suffit pour compromettre votre application.

Attention : Cette faille affecte les configurations par défaut. Une application Next.js créée avec create-next-app et déployée sans modification est immédiatement vulnérable. Zéro configuration spéciale requise pour l’exploitation.

Comprendre la faille : désérialisation non sécurisée dans le protocole Flight

Le cœur du problème réside dans le protocole Flight des React Server Components. Ce protocole sérialise les arbres de composants, les références de fonctions et les arguments pour les transmettre entre le serveur et le client. Dans les faits, l’implémentation actuelle fait confiance aux payloads entrants sans validation suffisante.

Voici ce qui se passe techniquement :

  1. Le serveur reçoit une requête RSC : Le protocole Flight attend des données structurées représentant des composants React
  2. Désérialisation sans validation : La fonction requireModule utilise une notation bracket sans vérification hasOwnProperty, permettant la traversée de la chaîne de prototypes
  3. Accès aux modules dangereux : Un attaquant peut ainsi accéder aux modules Node.js critiques comme vm, child_process ou fs
  4. Exécution de code : Le payload malveillant s’exécute avec les privilèges du serveur

Les chercheurs de Wiz ont développé un PoC fonctionnel avec un taux de réussite proche de 100%. Ce qui change vraiment la donne, c’est que l’exploitation ne requiert aucune authentification préalable.

Qui est concerné ? Mapping complet des versions vulnérables

React : versions affectées

Les packages suivants sont vulnérables dans React 19.0, 19.1.0, 19.1.1 et 19.2.0 :

  • react-server-dom-webpack
  • react-server-dom-parcel
  • react-server-dom-turbopack

Versions corrigées : 19.0.1, 19.1.2 et 19.2.1

Next.js : versions affectées

La faille affecte Next.js via le CVE-2025-66478, qui hérite du même problème sous-jacent. Résultat concret : toutes les applications utilisant l’App Router dans les versions suivantes sont vulnérables :

  • Next.js 15.x (toutes versions)
  • Next.js 16.x (versions antérieures à 16.0.7)
  • Next.js 14.3.0-canary.77 et versions canary ultérieures

Important : Next.js 13.x, Next.js 14.x stable, le Pages Router et l’Edge Runtime ne sont PAS affectés.

Branche Next.jsVersion corrigée
15.0.x15.0.5
15.1.x15.1.9
15.2.x15.2.6
15.3.x15.3.6
15.4.x15.4.8
15.5.x15.5.7
16.0.x16.0.7

Autres frameworks impactés

Tout framework ou plugin intégrant les packages react-server est potentiellement vulnérable :

  • React Router (mode RSC preview)
  • Waku
  • @vitejs/plugin-rsc
  • @parcel/rsc
  • RedwoodSDK (rwsdk)

Patch immédiat : procédure de mise à jour

Soyons réalistes : il n’y a aucune option de configuration pour désactiver le code vulnérable. La seule solution est la mise à jour immédiate vers une version patchée.

Pour les projets Next.js

Identifiez votre branche actuelle et installez la version corrigée correspondante :

# Pour Next.js 15.0.x
npm install next@15.0.5

# Pour Next.js 15.1.x
npm install next@15.1.9

# Pour Next.js 15.2.x
npm install next@15.2.6

# Pour Next.js 15.3.x
npm install next@15.3.6

# Pour Next.js 15.4.x
npm install next@15.4.8

# Pour Next.js 15.5.x
npm install next@15.5.7

# Pour Next.js 16.0.x
npm install next@16.0.7

Cas particulier : Si vous êtes sur Next.js 14.3.0-canary.77 ou une version canary ultérieure, rétrogradez vers la dernière version stable 14.x :

npm install next@14

Pour les projets React standalone

Mettez à jour vers une version corrigée de React :

# React 19.0.x
npm install react@19.0.1 react-dom@19.0.1

# React 19.1.x
npm install react@19.1.2 react-dom@19.1.2

# React 19.2.x
npm install react@19.2.1 react-dom@19.2.1

Best Practice : Après installation, rebuildez intégralement votre application et redéployez immédiatement. Pour les architectures monorepo ou microservices, vérifiez que TOUS les services utilisant RSC sont mis à jour.

Protections temporaires : WAF et mitigations

Si la mise à jour immédiate n’est pas possible, plusieurs fournisseurs ont déployé des protections WAF automatiques :

Cloudflare

Déploiement automatique de la règle « React – RCE – CVE-2025-55182 » le 2 décembre à 17h GMT. Tous les clients (plans gratuits et payants) sont protégés si leur trafic React transite par le WAF Cloudflare.

Vercel

Protection automatique déployée sur l’ensemble de la plateforme. Aucune action requise pour les clients hébergés sur Vercel, mais la mise à jour reste fortement recommandée.

Google Cloud Armor

Règle WAF préconfigurée disponible via cve-canary. Configuration requise dans votre politique de sécurité backend :

gcloud compute security-policies rules create 1000 \
    --security-policy=my-policy \
    --expression="evaluatePreconfiguredWaf('cve-canary', \
                 {'sensitivity': 1, 'opt_in_rule_ids': ['owasp-crs-v030301-id944240-rce']})" \
    --action=deny-403

AWS WAF

Nouvelles règles managées déployées pour bloquer les tentatives d’exploitation. Les clients utilisant les services managés AWS ne sont pas impactés.

Akamai

Règle Adaptive Security Engine Rapid déployée le 3 décembre : « 3000976 — React Remote Code Execution Attack Detected (CVE-2025-55182) ». Protection complète pour les clients App & API Protector.

À retenir : Les protections WAF sont des mesures temporaires. Elles réduisent significativement l’exposition mais ne remplacent pas un patch complet au niveau applicatif.

Questions Fréquentes

Mon application est-elle vulnérable si je n’utilise pas de Server Functions ?

Potentiellement oui. Selon l’équipe React, même sans Server Functions explicites, votre application reste exploitable si elle supporte React Server Components. La simple présence de RSC dans votre stack suffit.

Existe-t-il des exploitations dans la nature ?

Au 4 décembre 2025, aucune exploitation confirmée en production n’a été documentée. Toutefois, plusieurs chercheurs ont publié des PoC fonctionnels sur GitHub. Dans la pratique, l’exploitation est imminente selon tous les experts en sécurité.

Le Pages Router de Next.js est-il concerné ?

Non. Le Pages Router n’utilise pas React Server Components et n’est donc pas affecté par cette vulnérabilité. Seul l’App Router est concerné.

Quelle est la sévérité réelle de cette faille ?

Maximale. Score CVSS 10.0, exploitation sans authentification, configurations par défaut vulnérables, taux de réussite proche de 100% en laboratoire. Selon l’enquête State of JavaScript 2024, React est utilisé par 82% des développeurs. Ce qui marche vraiment pour comprendre l’ampleur : Wiz estime que 39% des environnements cloud contiennent des instances vulnérables.

Puis-je désactiver temporairement RSC ?

Il n’existe aucune option de configuration pour désactiver le code vulnérable sans casser complètement l’App Router. La seule option viable est la mise à jour immédiate ou le retour temporaire au Pages Router pour Next.js 14.x.

Conclusion : une leçon de sécurité pour tout l’écosystème

React2Shell représente un wake-up call majeur pour l’écosystème JavaScript. Cette vulnérabilité expose une faiblesse fondamentale dans la gestion de la confiance des données entrantes, même pour des frameworks aussi matures que React.

Ce qui change vraiment la donne, c’est la rapidité de la réponse. Meta, Vercel et l’ensemble des fournisseurs cloud ont coordonné patches et protections WAF en moins de 96 heures entre la divulgation responsable et le déploiement public. Un exemple de collaboration industrielle efficace.

Pour vous développeurs et responsables tech : patcher immédiatement n’est pas négociable. Dans la pratique, les exploitations massives sont une question de jours, pas de semaines. Si vous avez des applications Next.js 15 ou 16 en production, votre priorité numéro un doit être cette mise à jour.

Zéro bullshit : testez vos dépendances, déployez les patches, vérifiez vos WAF. La sécurité applicative n’est jamais acquise, même avec les frameworks les plus populaires du marché.