React2Shell (CVE-2025-55182) : premières exploitations et impact réel

Retour de terrain sur l'exploitation de React2Shell (CVE-2025-55182), vulnérabilité React Server Components touchant Next.js : impact et mesures à prendre.

Points clés

  • React2Shell (CVE-2025-55182) est une faille d'exécution de code à distance sans authentification dans les React Server Components, notée CVSS 10,0. Toute application qui prend en charge les React Server Components est exposée, même sans Server Functions.
  • Elle a été divulguée le 3 décembre 2025 et exploitée en quelques heures. Dans les sept environnements que nous avons aidé à rétablir, la première requête malveillante est arrivée en médiane 11 heures après la divulgation.
  • Premières versions corrigées : React 19.0.1, 19.1.2 et 19.2.1 ; Next.js 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7 et 16.0.7. Les correctifs suivants corrigent aussi d'autres CVE apparues ensuite : prenez la version la plus récente de votre branche.
  • Si une application était en ligne et non corrigée le 4 décembre 2025, considérez-la comme compromise : appliquez le correctif, puis renouvelez tous les secrets auxquels elle avait accès.

Premières observations d'exploitation et notes de réponse à incident

Après la divulgation publique de la CVE-2025-55182 (couramment appelée React2Shell), FNB Solutions a enquêté sur une exploitation active visant des déploiements React et Next.js exposés sur Internet et utilisant les React Server Components (RSC).

L'exploitation a commencé presque immédiatement après la divulgation, ce qui concorde avec ce qu'AWS a constaté dans sa propre télémétrie. Les attaques étaient automatisées et opportunistes, et ciblaient les applications exposant des endpoints capables de traiter des requêtes RSC Flight. Dans plusieurs incidents sur lesquels nous sommes intervenus, l'exploitation est allée au-delà de la simple preuve de concept et a abouti à la compromission complète de l'environnement d'exécution concerné, et parfois de l'hôte sous-jacent.


Chronologie

DateÉvénement
29 nov. 2025Lachlan Davidson signale la faille à l'équipe React
3 déc. 2025React et Next.js publient leurs bulletins de sécurité et des versions corrigées
3–4 déc. 2025Premières tentatives d'exploitation automatisées dans les environnements que nous avons ensuite analysés
6 déc. 2025Vercel recommande de renouveler les secrets de toute application en ligne et non corrigée le 4 décembre, et publie npx fix-react2shell-next
11 déc. 2025React divulgue des failles liées de déni de service et d'exposition du code source (CVE-2025-55184, CVE-2025-55183)
26 janv. 2026React ajoute CVE-2025-67779 et CVE-2026-23864, de nouvelles variantes de déni de service

Impact réel confirmé

FNB Solutions a accompagné des équipes exploitant sept environnements touchés entre le 4 et le 19 décembre 2025. Sur les sept, cinq faisaient tourner un mineur de cryptomonnaie à notre arrivée, et deux avaient servi de point d'appui pour atteindre l'hôte. Parmi les conséquences observées :

  • Exécution de code à distance sans authentification dans les processus applicatifs Node.js
  • Compromission des conteneurs applicatifs
  • Élévation de privilèges rendue possible par des configurations de conteneurs non sécurisées (conteneurs aux privilèges excessifs, montages de l'hôte accessibles en écriture, sockets Docker exposés)
  • Déploiement de malwares de minage de cryptomonnaie après l'accès initial
  • Surconsommation prolongée du CPU et de la mémoire, entraînant dégradation et instabilité du service

Dans plusieurs incidents, les attaquants ont utilisé la primitive d'exécution initiale de React2Shell pour récupérer et exécuter des charges secondaires, s'installer durablement dans les conteneurs et, lorsque les contrôles d'isolation étaient faibles, rebondir vers l'hôte sous-jacent. Les environnements touchés ont été repérés par des scans massifs d'Internet, et non par des intrusions ciblées.


Résumé technique

CVE-2025-55182 est une vulnérabilité d'exécution de code à distance causée par une désérialisation non sécurisée dans l'implémentation du protocole Flight des React Server Components (RSC). Elle touche les paquets react-server-dom-webpack, react-server-dom-parcel et react-server-dom-turbopack dans les versions 19.0, 19.1.0, 19.1.1 et 19.2.0, ainsi que tous les frameworks qui les embarquent, dont Next.js (suivi en aval sous la référence CVE-2025-66478), React Router, Waku et les plugins RSC de Vite et Parcel. Les fiches officielles sont CVE-2025-55182 sur cve.org et l'entrée de la NVD.

Le protocole RSC Flight impose aux serveurs de désérialiser des données structurées fournies par l'attaquant. Faute d'une validation suffisante lors de la désérialisation, une entrée spécialement forgée peut provoquer l'instanciation d'objets JavaScript arbitraires, y compris de fonctions exécutables, pendant le processus de désérialisation.

Ce comportement permet à un attaquant distant non authentifié d'exécuter du code JavaScript arbitraire dans le runtime Node.js du serveur, avec les privilèges du processus applicatif.

Caractéristiques principales :

  • Aucune authentification requise
  • Aucune interaction utilisateur requise
  • Exploitation en une seule requête
  • Exécution de JavaScript arbitraire côté serveur

La vulnérabilité se situe au niveau du protocole et de la couche de désérialisation : elle ne dépend ni de la logique métier de l'application ni des server actions définies par le développeur.


Comportement d'exploitation observé

Dans les incidents analysés par FNB Solutions, les attaquants ont suivi un enchaînement d'exploitation constant :

  1. Scan de l'ensemble d'Internet pour repérer les applications React et Next.js
  2. Identification des endpoints capables de traiter des charges RSC Flight
  3. Envoi de charges sérialisées forgées pour déclencher la désérialisation non sécurisée
  4. Exécution immédiate de code JavaScript arbitraire dans le processus serveur
  5. Récupération et exécution de charges secondaires
  6. Persistance par modification du système de fichiers du conteneur ou via des hooks de démarrage

Les systèmes compromis présentaient systématiquement des indicateurs de compromission (IOC) nets : utilisation anormale du CPU, connexions réseau sortantes inattendues et processus enfants Node.js inconnus.


Activité post-exploitation observée

Une fois l'exploitation réussie, les attaquants ont déployé des outils supplémentaires pour monétiser l'accès, assurer leur persistance et étendre leur emprise sur les environnements compromis.

L'activité post-exploitation observée comprenait :

  • Des scripts shell servant à récupérer et exécuter des logiciels de minage de cryptomonnaie depuis des dépôts publics
  • Des backdoors Linux assurant une persistance durable via des services système et le camouflage de processus
  • Des outils de reverse proxy sortant permettant d'établir des chemins d'accès contrôlés par l'attaquant qui contournent le filtrage entrant du pare-feu
  • Des binaires ELF Linux sur mesure permettant l'exécution interactive de commandes, la manipulation de fichiers et le pivot réseau
  • Des scripts dropper chargés de déployer des outils de commande et contrôle (C2)
  • Des scripts loader capables de se mettre à jour eux-mêmes, de remplacer et de relancer les charges déployées
  • Des malwares capables de mener des attaques DDoS, dotés de fonctions d'administration à distance, de persistance et d'évasion

Les identifiants détaillés des charges et les noms des outils observés lors de ces incidents ne sont pas publiés ici. Ils sont disponibles sur demande pour les équipes de réponse à incident et de sécurité ayant un besoin opérationnel légitime.


Vulnérabilités RSC associées

D'autres vulnérabilités divulguées dans les semaines suivantes touchent des aspects voisins du traitement des React Server Components : CVE-2025-55184 (déni de service, CVSS 7,5), CVE-2025-55183 (exposition du code source, CVSS 5,3), CVE-2025-67779 (un déni de service complémentaire) et CVE-2026-23864 (déni de service, ajoutée en janvier 2026). Le billet de suivi de l'équipe React indique les versions corrigées pour chacune. Bien que techniquement distinctes, ces failles reposent sur des hypothèses similaires concernant le traitement des données côté serveur et sur une validation insuffisante.

Du point de vue de la défense, ces vulnérabilités doivent être traitées comme une même surface d'attaque : tout endpoint serveur qui désérialise et traite des entrées liées aux RSC.


Recommandations défensives

Pour les équipes qui exploitent des applications React utilisant les React Server Components :

  • Appliquez immédiatement les correctifs ou mettez à jour toutes les versions concernées de React et des frameworks. Les premières versions corrigées étaient :
PaquetCorrigé dans
react-server-dom-* 19.0.x / 19.1.x / 19.2.x19.0.1 / 19.1.2 / 19.2.1
Next.js 15.0 à 15.515.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7
Next.js 16.016.0.7
Versions canary de Next.js 14.3Revenir à la dernière version stable 14.x

Les versions ultérieures corrigent aussi les CVE apparues ensuite : passez au correctif le plus récent de votre branche plutôt qu'à la première version corrigée. Il n'existe pas de contournement : une règle de WAF réduit le bruit, mais ne supprime pas la faille.

  • Renouvelez les secrets : si l'application était accessible et non corrigée, considérez comme exposés toutes les variables d'environnement, clés d'API et identifiants de base de données auxquels elle avait accès.

  • Réexaminez vos hypothèses de sécurité sur les conteneurs :

    • Évitez les conteneurs privilégiés
    • Limitez au strict nécessaire les montages de l'hôte accessibles en écriture et les capabilities Linux
  • Surveillez les indicateurs de post-exploitation :

    • Consommation inattendue de CPU ou de mémoire
    • Processus inconnus ou runtimes Node.js enfants
    • Trafic réseau sortant suspect
    • Modifications des images de conteneurs, des scripts de démarrage ou des tâches planifiées

Si vous détectez une activité de minage de cryptomonnaie, traitez-la comme la preuve d'une exécution de code arbitraire et d'un possible mouvement latéral, et non comme un simple nettoyage isolé.


Conclusion

L'exploitation de la CVE-2025-55182 ne nécessite ni authentification, ni interaction utilisateur, ni enchaînement d'exploits au-delà du traitement RSC Flight exposé. Les environnements qui combinent des endpoints RSC exposés sur Internet et une isolation des conteneurs insuffisante courent un risque élevé de compromission totale.

Corriger vite suppose de savoir ce que vous faites tourner et de pouvoir déployer sans risque dans des délais courts. C'est une bonne partie de ce que vérifie un audit technique, et précisément l'objet d'un contrat de maintenance dans la durée. Pour un autre nettoyage en conditions réelles, consultez nos notes sur le malware de spam SEO WordPress.

Si vous pensez qu'une de vos applications React ou Next.js a été exposée, notre équipe de réponse aux incidents de sécurité peut vous aider à le confirmer, à contenir l'incident et à renforcer l'environnement. Contactez-nous.

Sources