Aller au contenu

CVE-2025-55182 : « react2shell » — RCE pré-authentification par désérialisation dans Meta ReAct Server components

HERMES

HERMES THREAT SCORE & EXPOSITION FRONTEND/CLOUD REACT

Cible : Meta React Server Components 19.0.0 / 19.1.x / 19.2.0 (react-server-dom-*)
Confiance : 99%
99 / 100
CRITIQUE

Mesure la pertinence opérationnelle réelle, la militarisation de l'exploit et la posture de menace active.

Décomposition des dimensions
Exploitabilité 20 / 20
Activité de menace 20 / 20
Militarisation 20 / 20
Exposition 20 / 20
Prévalence 20 / 20
Impact 20 / 20
Maturité de l'exploit 20 / 20
Potentiel d'attaque en chaîne 20 / 20
⚖️ Divergence & Justification opérationnelle

Hermes évalue la CVE-2025-55182 au score critique absolu de 99 (CRITIQUE). Baptisée « React2Shell », cette faille de désérialisation pré-authentification dans le décodeur du protocole React Flight (react-server-dom-webpack / turbopack / parcel) permet à tout attaquant distant d'exécuter des commandes Node.js arbitraires sur le serveur en envoyant une simple requête POST vers une Server Function.

🕸️ Graphe de connaissances connecté & Provenance

CVE-2025-55182:VULNÉRABILITÉ

Nœuds connectés : 3
Relations sortantes actives
→ affectsCOMPOSANTMicrosoft Office & 365 Apps
98% VERY_HIGH

Software platform affected by security vulnerabilities and agentic attack patterns.

🔍 Pourquoi cette relation ? (Preuves & Provenance)

“Confirmed security vulnerability in Microsoft Office & 365 Apps documented in Hermes dossier.”

Preuves vérifiées associées :
→ usesTECHNIQUE D'ATTAQUET1059: Command and Scripting Interpreter
90% VERY_HIGH

Adversaries abuse command and script interpreters (Bash, Python, PowerShell) to execute arbitrary commands.

🔍 Pourquoi cette relation ? (Preuves & Provenance)

“Attack execution telemetry aligns with MITRE ATT&CK technique T1059.”

Preuves vérifiées associées :
→ usesTECHNIQUE D'ATTAQUET1552: Unsecured Credentials
90% VERY_HIGH

Adversaries search compromise victims for unsecured credentials in files, environment variables, or memory.

🔍 Pourquoi cette relation ? (Preuves & Provenance)

“Attack execution telemetry aligns with MITRE ATT&CK technique T1552.”

Preuves vérifiées associées :
ParamètreSpécification techniqueImpact opérationnel
Identifiant CVECVE-2025-55182Référencement officiel NVD / MITRE
Nom d’usageReact2shellRCE universelle sur React Server Components
CWE associéeCWE-502 : Deserialization of Untrusted DataDésérialisation non sécurisée dans le décodeur React Flight
Score CVSS v3.110.0 CRITIQUECVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
Score CVSS v4.09.9 CRITIQUECVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
CPE applicablescpe:2.3:a:meta:react:19.0.0:*:*:*:*:*:*:*
cpe:2.3:a:meta:react-server-dom-webpack:*:*:*:*:*:*:*:*
Frameworks et applications utilisant React 19 Server Actions
Versions affectées19.0.0, 19.1.0, 19.1.1, 19.2.0 (react-server-dom-webpack, turbopack, parcel)Tout serveur Node.js / Next.js / Remix exposant des Server Functions
Versions corrigées19.0.1, 19.1.2, 19.2.1 (Décembre 2025)Mises à jour d’urgence publiées par l’équipe React / Meta

  • CISA KEV : ajoutée le 5 décembre 2025 ; délai impératif d’action fixé au 12 décembre 2025 (ransomware = Known).
  • Score EPSS : 0.99802 (Percentile : 99.957% — arme zero-day ultra-critique).
  • Statut opérationnel : exploitation massive confirmée en production, documentée par AWS Security, Datadog et Vercel Labs.
  • PoC & weaponization : poCs publics armés transmettant des requêtes HTTP POST avec des charges utiles Flight JSON contenant des références circulaires et des propriétés empoisonnées instanciant des gadgets child_process.exec.
  • Conditions d’accès : pré-authentification totale ; accès réseau public HTTPS (port 443 ou 3000) ; complexité d’attaque triviale.

  • Acteurs de menace : groupes de cyberespionnage liés à la Chine (Linen Typhoon, Volt Typhoon) et affiliés rançongiciels cloud.
  • Campagnes observées : balayages massifs des applications modernes Next.js et React pour voler les métadonnées AWS IAM (IMDSv1/v2) et déployer des conteneurs malveillants.
  • Malwares associés : implants Node.js en mémoire, chargeurs de mineurs de cryptomonnaie et shells inversés chiffrés en WebSockets.
  • Chronologie d’exploitation : alerte de sécurité publiée le 3 décembre 2025 par Meta ; exploitation active détectée quelques heures plus tard sur les clouds publics.

  • Requêtes flight malformées : requêtes POST avec l’en-tête Next-Action ou rsc contenant des chaînes de prototype pollution (__proto__, constructor, $1:I[...]).
  • Processus fils de Node.js : processus node engendrant soudainement /bin/sh, /bin/bash, cmd.exe ou des exécutables de diagnostic réseau.
title: Execution de Commandes depuis Processus Node.js React Server (CVE-2025-55182)
id: c3b2a198-5518-4a12-b012-3456789abcde
status: test
description: Detecte des sous-processus de shell ou d'utilitaires suspects engendres par un serveur Node.js hebergeant React Server Components
references:
- https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components
- https://aws.amazon.com/blogs/security/china-nexus-cyber-threat-groups-rapidly-exploit-react2shell-vulnerability-cve-2025-55182/
author: Hermes Codex Research
date: 2026-09-10
logsource:
category: process_creation
product: linux
detection:
selection:
ParentProcessName|endswith:
- '/node'
- '/next-server'
Image|endswith:
- '/sh'
- '/bash'
- '/curl'
- '/wget'
- '/python'
condition: selection
falsepositives:
- Scripts de build locaux executes lors de deploiements CI/CD (hors serveurs de production en ecoute)
level: critical
rule Exploit_React2Shell_Flight_Payload_CVE_2025_55182 {
meta:
description = "Detecte les payloads d exploitation React Flight du vecteur React2Shell"
author = "Hermes Codex Research"
date = "2026-09-10"
reference = "CVE-2025-55182"
strings:
$header_action = "Next-Action:" ascii nocase
$flight_hdr = "text/x-component" ascii
$payload_gadget = /\{\s*"?[0-9a-zA-Z_]+"?\s*:\s*"\$I[0-9a-zA-Z_]+"/ ascii
$proto_pollute = "__proto__" ascii
condition:
($header_action or $flight_hdr) and ($payload_gadget or $proto_pollute)
}
alert http $EXTERNAL_NET any -> $WEB_SERVERS any (msg:"HERMES - Meta React Server Components React2Shell Deserialization Exploit (CVE-2025-55182)"; flow:to_server,established; content:"POST"; http_method; content:"Next-Action"; http_header; pcre:"/(__proto__|constructor|\$I[a-zA-Z0-9_]+)/P"; classtype:web-application-attack; sid:202555182; rev:1;)
  • Journaux d’accès HTTP / CDN : surveiller les requêtes POST vers les endpoints de Server Actions avec un taux élevé de réponses 500 ou des durées de réponse prolongées.
  • Audit des variables d’environnement : vérifier si des clés AWS (AWS_SECRET_ACCESS_KEY), tokens Vercel ou chaînes de connexion de bases de données ont été exfiltrées.
  • MITRE ATT&CK : T1190 (Exploit Public-Facing Application), T1059.007 (JavaScript), T1078.004 (Cloud Accounts), T1552.005 (Cloud Instance Metadata API).

  1. Mise à niveau immédiate des paquets npm : mettre à jour react, react-dom, et les paquets react-server-dom-* vers 19.0.1, 19.1.2 ou 19.2.1.
  2. Mise à jour des frameworks dépendants : appliquer les correctifs pour Next.js, Remix, ou utiliser l’utilitaire d’urgence fix-react2shell-next.
  3. Rebuild et redémarrage complet des conteneurs : recompiler l’application et redéployer l’ensemble des conteneurs ou pods Kubernetes.
  4. Rotation immédiate des identifiants cloud : révoquer et renouveler immédiatement l’ensemble des clés secrètes d’environnement (clés API, credentials de bases de données, clés Stripe, tokens cloud).
  5. Blocage de l’API de métadonnées (IMDSv1) : imposer impérativement IMDSv2 sur les instances EC2 avec un nombre de sauts (Hop Limit) égal à 1 pour empêcher l’extraction de rôles IAM depuis un conteneur compromis.

« What happens if this vulnerability is exploited in an enterprise? »

Section intitulée « « What happens if this vulnerability is exploited in an enterprise? » »
  1. Accès initial direct au frontend cloud : l’attaquant identifie une application web publique d’entreprise développée avec React 19 et Next.js hébergée sur AWS ou Vercel.
  2. Transmission du payload React2Shell : l’assaillant soumet une simple requête POST contenant un payload Flight malveillant vers un point de terminaison de Server Function.
  3. Exécution de code dans le conteneur Node.js : la fonction de désérialisation instancie un objet malveillant qui appelle directement child_process.exec(), octroyant à l’attaquant un shell distant dans le conteneur.
  4. Pillage des métadonnées cloud et des secrets : depuis le conteneur, l’attaquant interroge le service de métadonnées de l’instance AWS et extrait les identifiants temporaires du rôle IAM de la machine hôte, ainsi que les clés de production définies dans les variables d’environnement.
  5. Prise de contrôle du compte cloud et rançonnage : fort des privilèges IAM exfiltrés, l’attaquant accède aux compartiments S3 contenant les données clients, supprime les snapshots de bases de données RDS et déploie des conteneurs de minage ou un rançongiciel sur l’ensemble du cluster Kubernetes de l’entreprise.