FlawOpen

flawopen.com/Teardowns/cve-2025-55182-react-server-components-rce

● CVE-2025-55182 · CVSS 10.0[1] · Critique
Recherche · FlawOpen

CVE-2025-55182 : React2Shell RSC

CVE-2025-55182 est une exécution de code à distance sans authentification lors du décodage de payloads React Server Components (RSC). React a confirmé le défaut ; Google Threat Intelligence a documenté des campagnes avec téléchargeurs, backdoors et mineurs.[1], [4], [5]

💡 Explication en Langage Simple (ELI5)

Imaginez une réceptionniste qui consulte un répertoire de services autorisés. Une recherche défectueuse traite un nom hérité du modèle comme si le responsable l’avait enregistré. Le correctif de React vérifie que l’export demandé appartient au module lui-même ; l’avis public ne révèle pas la séquence complète de l’exploitation. Mettez à jour les paquets concernés.[1]

Concepts Clés et Termes

React Server Components (RSC)
React Server Components : protocole et paquets React pour le rendu serveur et l’échange de données Flight.[1]

Correspondances de référentiels

Analyse de Cause Racine

React confirme que la RCE venait du décodage défectueux de payloads envoyés aux endpoints React Server Functions ; la prise en charge RSC pouvait suffire à exposer l’application. L’avis initial retenait des détails d’exploitation. Le patch amont ajoute un contrôle de propriété propre dans requireModule() et une gestion d’erreurs multipart. Cet extrait montre un changement concret, sans reproduire tout le décodeur ni prétendre qu’un seul contrôle explique toute la chaîne.[1], [2]

Versions affectées et périmètre de déploiement de React2Shell

Composant ou déploiementÉvaluation du périmètreMesure corrective
react-server-dom-webpack, react-server-dom-parcel ou react-server-dom-turbopack en 19.0, 19.1.0, 19.1.1 ou 19.2.0.La prise en charge RSC côté serveur peut exposer une application même sans endpoint Server Function déclaré ; la frontière serveur doit être accessible.Mettez à niveau la branche du paquet vers 19.0.1, 19.1.2 ou 19.2.1 ou une version ultérieure, selon le cas. Reconstruisez et redéployez l’artefact serveur.
Next.js App Router sur les versions 15.x/16.x affectées ou sur 14.3.0-canary.77 et les canaries suivantes.Les intégrations affectées du framework embarquent les paquets RSC vulnérables. Ne concluez pas à l’absence de risque parce que l’application ne déclare pas son propre endpoint Server Function.Utilisez la version corrigée de la branche correspondante : 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7 ou 16.0.7 ou ultérieure. Ce sont les versions minimales consignées dans l’avis cité ; vérifiez la branche actuelle de l’éditeur avant le déploiement.
Application React côté client uniquement, sans prise en charge RSC côté serveur.Hors du périmètre documenté de la CVE, car elle ne possède pas de frontière de décodage serveur.Cette configuration n’exige pas le correctif serveur React2Shell. Réévaluez le périmètre si RSC ou des composants serveur sont ajoutés.
Déploiement déclaré corrigé.La version du manifeste ne prouve pas que chaque région, service de prévisualisation, worker ou conteneur en cours d’exécution utilise l’artefact corrigé.Vérifiez les digests d’image et les versions résolues en production, en prévisualisation et sur les workers ; examinez toute période d’exposition antérieure.
Versions Next.js recommandées par branche dans la mise à jour React du 2026-01-26Les recommandations ultérieures de React incluent des versions de sécurité plus récentes ; ce ne sont pas les versions minimales qui ont corrigé initialement CVE-2025-66478. Les avis RSC associés et les branches maintenues peuvent modifier la cible de mise à jour.Pour les avis RSC associés CVE-2025-55183, CVE-2025-55184, CVE-2025-67779 et CVE-2026-23864, React a indiqué les versions corrigées 19.0.4, 19.1.5 et 19.2.4. Les recommandations Next.js datées du 2026-01-26 étaient : 14.2.35 pour 13.3.x–14.x stable ; 15.0.8 pour 15.0.x ; 15.1.12 pour 15.1.x ; 15.2.9 pour 15.2.x ; 15.3.9 pour 15.3.x ; 15.4.11 pour 15.4.x ; 15.5.10 pour 15.5.x ; 16.0.11 pour 16.0.x ; et 16.1.5 pour 16.1.x. Il s’agit de recommandations ultérieures pour des problèmes associés, et non des versions minimales de Next.js corrigeant CVE-2025-66478. Avant le déploiement, consultez l’avis fournisseur le plus récent et vérifiez la branche prise en charge.
CVE-2026-23869 — déni de service RSC (2026-04-08).React indique que des requêtes HTTP spécialement conçues vers les points de terminaison Server Function peuvent consommer excessivement le processeur pendant une minute au plus avant de produire une erreur interceptable. Les branches concernées des paquets react-server-dom-* vont jusqu’à 19.0.4, 19.1.5 et 19.2.4.React indique que 19.0.5, 19.1.6 et 19.2.5 corrigent respectivement le problème.
CVE-2026-23870 — déni de service RSC (2026-05-06).React indique que des requêtes HTTP spécialement conçues peuvent provoquer des erreurs de mémoire insuffisante ou une consommation excessive du processeur. Les branches concernées des paquets react-server-dom-* vont jusqu’à 19.0.5, 19.1.6 et 19.2.5.React indique que 19.0.6, 19.1.7 et 19.2.6 corrigent respectivement le problème.
CVE-2026-44907 — déni de service Server Functions (2026-07-21).React indique que des requêtes HTTP spécialement conçues peuvent provoquer des erreurs de mémoire insuffisante ou une consommation excessive du processeur. Les branches concernées des paquets react-server-dom-* vont jusqu’à 19.0.7, 19.1.8 et 19.2.7.React indique que 19.0.8, 19.1.9 et 19.2.8 corrigent respectivement le problème.

Déroulement de l'Attaque Étape par Étape

Étape 1

Une frontière RSC exposée reçoit une requête non authentifiée

React indique que la prise en charge de RSC pouvait suffire, même sans endpoint Server Function propre. Les applications uniquement clientes, sans serveur, ne sont pas concernées.[1], [4]

Étape 2

Une requête préparée atteint le décodeur vulnérable

Le fournisseur décrit un décodage défectueux des requêtes Server Function. Les avis retiennent les détails complets ; n’inférez pas de mécanismes non documentés.[1], [2]

Étape 3

Le code s’exécute avec les privilèges du processus web

L’avis précise que le code s’exécute avec les privilèges du processus concerné. L’impact dépend du compte et des secrets et services accessibles.[1], [4]

Étape 4

Google GTIG a observé tunnels, téléchargeurs, backdoors et mineurs

GTIG a observé des campagnes avec tunnels, téléchargeurs, backdoors et mineurs. Cela confirme l’exploitation réelle, pas la compromission de chaque hôte.[5], [6]

Code Source : Vulnérable vs Sécurisé

Cet extrait exact du patch amont ne renvoie qu’une exportation propre du module ; il ne reproduit pas toute la faille du décodeur et ne constitue pas un correctif autonome. Mettez à jour React Server Components ou le framework concerné.[2], [1]

Extrait source: Méthode requireModule() du client Parcel de React

IMPLÉMENTATION VULNÉRABLE
export function requireModule<T>(metadata: ClientReference<T>): T {
  const moduleExports = parcelRequire(metadata[ID /* module id */]);
  return moduleExports[metadata[NAME]];
}
PATCH SÉCURISÉ ET ROBUSTE
export function requireModule<T>(metadata: ClientReference<T>): T {
  const moduleExports = parcelRequire(metadata[ID /* module id */]);
  if (hasOwnProperty.call(moduleExports, metadata[NAME])) {
    return moduleExports[metadata[NAME]];
  }
  return (undefined: any);
}

Liste de Contrôle de Sécurité pour l'Ingénierie

Sources