Tous les articles

Analyse des vulnérabilités DoS dans les composants du serveur React et Next.js (2026)

technologyJanuary 29, 2026·#Technology

Une série de graves vulnérabilités DoS viennent d'être découvertes dans React et Next.js, menaçant la stabilité de millions d'applications web. Cet article analyse le mécanisme technique et les solutions approfondies.

Analyse des vulnérabilités DoS dans les composants du serveur React et Next.js (2026)

La transition du secteur du développement Web vers des modèles hybrides de traitement serveur et client a atteint son apogée avec l'introduction de React Server Components (RSC). Cependant, cette révolution entraîne également des défis de sécurité sans précédent. Entre décembre 2025 et janvier 2026, une série de vulnérabilités graves ont été découvertes, ébranlant les fondements des applications utilisant React 19 et Next.js 15/16. En commençant par la vulnérabilité d'exécution de code à distance (RCE) « React2Shell » (CVE-2025-55182), des recherches approfondies ultérieures ont continué à révéler une série de faiblesses de déni de service (DoS) profondément ancrées dans le protocole de transfert de données et les fonctionnalités d'optimisation du système. Ce rapport fournit un examen approfondi des vulnérabilités DoS les plus récentes, notamment GHSA-83fc-fqcc-2hmg, CVE-2025-59471 et CVE-2025-59472.

1. Evolution des menaces de sécurité à l'ère RSC

Pour comprendre l'urgence, il est nécessaire de considérer le contexte historique de l'événement « React2Shell » (CVE-2025-55182). Fin 2025, la communauté de la sécurité a identifié un bug de désérialisation dangereux dans le protocole « Flight » de React, autorisant RCE avec un score CVSS de 10,0. Bien que des correctifs aient été déployés, les efforts de correction RCE ont involontairement exposé d'autres logiques de traitement défectueuses, conduisant à des scénarios dans lesquels un attaquant pourrait faire planter le serveur ou drainer des ressources sans exécuter de code malveillant.

Les récentes vulnérabilités DoS sont le résultat d'une interaction complexe entre la logique de traitement des données de React et l'environnement Node.js. Lorsqu'une application accepte des structures de données complexes des utilisateurs pour le rendu côté serveur, elle est confrontée à des risques de gestion des ressources.

Liste des principales vulnérabilités DoS (mise à jour le 26 janvier 2026) :

  • GHSA-83fc-fqcc-2hmg : Affecte les packages react-server-dom-*. Un attaquant envoie une requête HTTP spécialement conçue au point de terminaison de la fonction serveur, provoquant un crash du serveur ou un débordement de mémoire.

  • CVE-2025-59471 : Vulnérabilité dans Next.js Image Optimizer. Se produit lorsque remotePatterns est activé, permettant aux images distantes trop volumineuses de faire planter le serveur en raison d'un MOO (manque de mémoire).

  • CVE-2025-59472 : Vulnérabilité dans Next.js PPR (mode minimal). Impacte le point de terminaison de reprise, permettant des attaques Zipbomb ou une mise en mémoire tampon illimitée.

  • CVE-2025-55184 : La boucle d'événements plante en raison de la rotation de la référence Promise dans RSC.

2. Mécanisme technique de la vulnérabilité GHSA-83fc-fqcc-2hmg

Les mises à jour du 26 janvier 2026 se concentrent sur GHSA-83fc-fqcc-2hmg. Les chercheurs ont découvert que les correctifs DoS précédents (comme CVE-2025-55184) étaient défectueux. Le problème réside dans les packages react-server-dom-webpack, react-server-dom-parcel et react-server-dom-turbopack.

Désérialisation et boucles infinies

Le protocole Flight de React divise les données en morceaux. Chaque bloc peut faire référence à un autre bloc. La vulnérabilité survient lorsque le mécanisme de décodage rencontre des références cycliques. Un attaquant pourrait créer une requête HTTP contenant des références Promise imbriquées. Lorsque le serveur tente de résoudre ces promesses, il tombe dans une boucle infinie, faisant planter le seul flux d'événements de Node.js, conduisant à un déni de service complet.

Cette vulnérabilité a un score CVSS de 7,5, permettant une exploitation à distance sans authentification. Même si le développeur ne définit pas de fonction serveur, le framework (comme Next.js App Router) peut toujours être affecté en raison de la prise en charge RSC par défaut.

3. Vulnérabilité de l'optimiseur d'image Next.js (CVE-2025-59471)

Cette vulnérabilité affecte les applications Next.js auto-hébergées qui utilisent l'optimisation d'image externe via remotePatterns.

  • Mécanisme : Le point de terminaison /_next/image charge les images à partir d'une mémoire source distante sans vérifier la taille maximale du fichier. limite.

  • Exploit : Un attaquant demande d'optimiser une image extrêmement volumineuse provenant d'un domaine autorisé. Lorsque Node.js charge ces énormes données, elles dépassent rapidement la limite du tas JavaScript, provoquant le blocage du processus.

Versions concernées : Next.js >=10 à <15.5.10 et >=16 à <16.1.5. Les applications sur Vercel ne sont pas affectées en raison de leur mécanisme de protection de l'infrastructure.

4. Next.js PPR et vulnérabilité en mode minimal (CVE-2025-59472)

CVE-2025-59472 concerne le pré-rendu partiel expérimental (PPR) et le "mode minimal" (NEXT_PRIVATE_MINIMAL_MODE=1).

  • Tampon illimité : Le serveur utilise Buffer.concat() pour inclure le corps de la requête en mémoire sans vérifier sa taille.

  • Zipbomb attaque : Les données compressées sont décompressées à l'aide de inflateSync() sans limiter la sortie. Une petite charge utile compressée peut s'étendre jusqu'à des gigaoctets en mémoire, dépassant les limites de vérification au niveau de la couche proxy.

Le résultat est l'erreur ERREUR FATALE : Échec de l'allocation de limite de tas atteinte - Tas JavaScript saturé de mémoire, qui met immédiatement fin au processus Node.js.

5. Impact des Async Hooks et de l'APM

Un détail technique noté par Tan Phat Digital est le rôle des async_hooks dans Node.js. React et Next.js utilisent AsyncLocalStorage pour suivre le contexte de la demande. Lorsque vous utilisez des outils de surveillance (APM) tels que Datadog ou OpenTelemetry, async_hooks est toujours activé. Dans cet environnement, les erreurs de débordement de pile dues à RSC entraîneront la fermeture complète de Node.js avec le code d'erreur 7 au lieu de simplement renvoyer le code d'erreur 500, ce qui rendra l'attaque DoS plus grave.

6. Stratégie d'atténuation et de mise à niveau

La résolution complète nécessite des mises à jour logicielles et des modifications de la configuration de l'infrastructure.

Mises à jour des versions (priorité absolue)

Les organisations doivent examiner les fichiers de verrouillage et mettre à niveau vers les versions sécurisées publiées le 26 janvier 2026 :

  • React 19.0.x : Mise à jour à partir des versions 19.0.0 à 19.0.3. vers la version 19.0.4.

  • React 19.1.x : Mise à jour des versions 19.1.0 - 19.1.4 vers la version 19.1.5.

  • React 19.2.x : Mise à jour des versions 19.2.0 - 19.2.3 vers la version 19.2.4.

  • Next.js 15.x : Mise à niveau des versions antérieures à 15.5.10 vers la version 15.5.10.

  • Next.js 16.x : Mise à niveau des versions antérieures à 16.1.5 vers la version 16.1.5.

Mesures de protection temporaires

  1. Infrastructure : Configurez client_max_body_size sur le proxy (Nginx/Apache) pour empêcher la mise en mémoire tampon illimitée.

  2. Configuration : Restreindre ou supprimer les domaines non approuvés dans remotePatterns d'Image Optimizer.

  3. Désactiver : Désactivez la fonctionnalité PPR (experimental.ppr : false) ou le mode minimal si cela n'est pas absolument nécessaire.

  4. WAF : Mettez à jour les règles de pare-feu (telles que vWAF) pour détecter et bloquer les charges utiles RSC anormales ou les requêtes POST avec En-tête Next-Resume : 1.

L'apparition continue de ces vulnérabilités indique la maturité difficile de RSC. Tan Phat Digital recommande aux entreprises de revoir et de mettre à niveau immédiatement leurs systèmes pour garantir la disponibilité des services contre des scénarios d'attaque DoS de plus en plus sophistiqués.

Partager

Commentaires

0.0 / 5(0 évaluations)

Veuillez vous connecter pour laisser un commentaire.

Aucun commentaire. Soyez le premier à partager vos pensées.