
Tout comprendre sur "React2Shell" (CVE-2025-55182), la faille qui fait trembler le web
Le monde du développement web est en état d'alerte depuis le 3 décembre. Si vous utilisez Next.js ou React Server Components (RSC) en production, arrêtez tout ce que vous faites et lisez ceci.
Une vulnérabilité critique, baptisée React2Shell (CVE-2025-55182), a été rendue publique. Elle obtient le score maximal de gravité : 10.0/10.
Ce n'est pas une simple fuite de données mineure. C'est une porte ouverte qui permet à n'importe qui d'exécuter du code arbitraire sur vos serveurs, sans même avoir besoin de s'authentifier.
Qu'est-ce que la faille React2Shell ?
Le nom "React2Shell" est malheureusement très littéral. Cette faille permet à un attaquant distant de transformer une requête web standard en une commande système (un "shell") exécutée directement sur votre serveur.
Le coupable technique : Le problème se situe au cœur du protocole "Flight", le mécanisme interne utilisé par React pour gérer les Server Components. Il s'agit d'une faille de désérialisation non sécurisée.
Pour faire simple :
React Server Components permet au serveur d'envoyer des composants pré-rendus au navigateur.
Pour fonctionner, il désérialise (décode) des données entrantes.
Un attaquant peut envoyer un "paquet" de données malformé, spécialement conçu.
Au lieu de lire les données, le serveur React va bêtement exécuter les instructions cachées à l'intérieur.
Qui est touché ?
L'impact est massif car la faille touche les versions les plus récentes et populaires de l'écosystème :
Next.js : Versions 15.x et 16.x (si vous utilisez l'App Router).
React : Versions 19.x (les versions expérimentales et stables supportant RSC).
Tous les frameworks s'appuyant sur les paquets
react-server-dom-webpack,react-server-dom-parcel, etc.
Le plus effrayant ? L'attaque ne nécessite aucune interaction utilisateur. Votre serveur peut être compromis simplement en étant connecté à Internet. Des groupes de hackers (notamment des groupes étatiques identifiés par AWS) scannent déjà le web massivement pour exploiter cette faille.
Comment savoir si on a été piraté ?
Les chercheurs en sécurité ont déjà identifié les signes avant-coureurs. Si vous voyez ceci dans vos logs, c'est mauvais signe :
Des requêtes HTTP POST étranges vers vos endpoints Next.js.
Des tentatives d'exécution de commandes Linux basiques comme
whoami,idoucat /etc/passwd.L'apparition de fichiers suspects dans le dossier
/tmp(souvent nomméspwned.txtou similaires).
Pour les techos : Comment fonctionne l'exploit (Désérialisation & Protocole Flight)
Pour ceux qui veulent soulever le capot, voici la mécanique précise de l'attaque. Tout se joue dans la manière dont React gère le protocole "Flight" (le protocole de transport des Server Components).
Normalement, ce protocole sert à sérialiser l'arbre de composants du serveur vers le client. Mais il permet aussi l'inverse : le client peut renvoyer des données au serveur (pour les Server Actions).
La faille réside dans le moteur de désérialisation du paquet react-server-dom-webpack.
Le leurre : Un attaquant envoie une requête HTTP POST contenant un objet JSON malformé, spécialement conçu pour ressembler à un "Chunk" interne de React (un morceau de données streamé).
L'injection : Dans ce faux objet, l'attaquant définit une propriété
.then.Le piège : Le moteur de désérialisation de React, voyant cette propriété
.then, pense qu'il a affaire à une Promise JavaScript standard. Il tente alors automatiquement de "résoudre" cette promesse.L'exécution (RCE) : Au lieu d'une fonction de résolution inoffensive, l'attaquant a assigné à ce
.thenle constructeurFunctiondu système ou un gadget via le modulevm.Résultat : Le serveur exécute le code contenu dans la promesse comme s'il s'agissait de son propre code interne.
C'est une faille de logique pure : le serveur fait confiance à la structure des données entrantes sans vérifier si les objets instanciés (comme les Promises) sont légitimes ou fabriqués de toutes pièces.
LA Solution : Mettez à jour MAINTENANT
Il n'y a pas de "contournement" fiable. Vous devez patcher.
Les équipes de Vercel (Next.js) et de React (Meta) ont réagi extrêmement vite. Les correctifs sont disponibles :
Mettez à jour React : Passez aux versions 19.0.1, 19.1.2 ou supérieures.
Mettez à jour Next.js : Installez la dernière version patchée immédiatement (vérifiez le changelog officiel de Vercel pour le numéro exact de patch, souvent >= 16.0.x).
Commande d'urgence pour vos projets :
npm update react react-dom next
# ou si vous utilisez Next.js
npx fix-react2shell-next En résumé
L'année 2025 se termine sur une note stressante pour les DevOps et les développeurs Frontend. React2Shell nous rappelle brutalement que plus nos outils deviennent puissants et "magiques" (comme le rendu serveur), plus la surface d'attaque potentielle augmente.
Ne remettez pas ça à demain. Si vous gérez un site Next.js en production, votre priorité numéro 1 aujourd'hui est de lancer npm update.
