C’est fini pour NextJS… 13 NOUVELLES vulnérabilités
원제 · Yeah it’s over for NextJS... 13 NEW vulnerabilities
핵심 요약
La mise à jour immédiate vers les dernières versions de Next.js est impérative pour corriger 13 vulnérabilités majeures, notamment des failles SSRF, DoS et XSS liées à l'architecture des Server Components et au routage.
하이라이트
Treize nouvelles vulnérabilités (CVE) affectent React et Next.js, dont six présentent un niveau de sévérité élevé allant jusqu'à un score de 8.6 sur 10.
Une faille de Server-Side Request Forgery (SSRF) permet d'accéder à des services internes protégés par un pare-feu via une simple requête curl injectant un en-tête de mise à niveau WebSocket.
L'utilisation de Server Components introduit un risque de déni de service (DoS) capable de ralentir les temps de réponse de 0,02 à 6 secondes via un payload de sérialisation malveillant.
Les applications Next.js utilisant i18n dans le Pages Router exposent des données sensibles via l'URL _next/data/ quand le middleware ne protège pas le cas de base par défaut.
L'empoisonnement du cache se produit lorsque Next.js stocke par erreur des données RSC en tant que HTML en raison d'une vérification d'extension de fichier contournée par une chaîne de requête.
L'utilisation de JSON.stringify dans dangerouslySetInnerHTML pour les scripts beforeInteractive permet l'exécution de code arbitraire car les caractères de fermeture de balise ne sont pas échappés.
타임라인
Aperçu des 13 vulnérabilités et impact système
Cette série de failles constitue la troisième alerte majeure concernant les Server Components cette année. Les problèmes identifiés couvrent une large gamme d'attaques, allant du déni de service au contournement de middleware. La recommandation unique pour sécuriser les applications consiste en une mise à jour globale des dépendances vers les versions corrigées.
- Six des treize vulnérabilités découvertes sur React et Next.js sont classées comme critiques.
- Les versions affectées incluent principalement celles utilisant le package react-server-dom.
- TanStack Start échappe à ces vulnérabilités car il n'utilise pas les dépendances spécifiques incriminées.
Contournement de la protection middleware dans le Pages Router
Le défaut de conception réside dans le fait que si i18n est activé, le chemin de base n'est pas systématiquement inclus dans la protection du middleware contrairement aux variantes linguistiques. Une inspection simple du code source de la page permet de trouver l'ID de build nécessaire pour reconstruire l'URL de données JSON. Next.js rappelle que le middleware ne doit pas être l'unique barrière de sécurité pour les données sensibles.
- L'activation de i18n avec plusieurs locales crée des chemins d'accès non protégés par le matcher du middleware.
- L'accès direct aux fichiers JSON via l'ID de build dans _next/data/ expose les propriétés serveur normalement sécurisées.
- La faille permet de récupérer des données sensibles telles que des e-mails ou des jetons d'accès sans authentification.
Exploitation du protocole React Flight pour le déni de service
L'attaquant injecte un grand nombre de pointeurs et de clés dans le payload envoyé au serveur. Avant le correctif, le serveur parcourait l'intégralité de la liste pour chaque référence, bloquant le processeur pendant plusieurs secondes. La nouvelle implémentation utilise une liste de clés indexée où le curseur ne revient jamais en arrière, garantissant un parcours unique de la structure de données.
- Un payload de 200 000 clés aléatoires sature le thread principal lors de la désérialisation des Server Actions.
- Le protocole React Flight effectuait initialement une complexité algorithmique de type k*n pour la comparaison des clés.
- Le correctif réduit le nombre d'opérations de 200 millions à environ 201 000 via un système de curseur à sens unique.
Accès aux services internes par Server-Side Request Forgery
L'attaque exploite le mécanisme de proxy intégré de Next.js pour l'auto-hébergement. En fournissant une URL de service local (localhost) comme cible de requête curl, le serveur Next.js agit comme un pont et renvoie le contenu du service protégé. Le déploiement sur la plateforme Vercel n'est pas concerné par cette vulnérabilité spécifique en raison de configurations réseau différentes.
- L'injection d'un en-tête Upgrade WebSocket détourne la fonction de résolution de route vers une cible externe.
- Cette faille permet d'interroger des bases de données ou des serveurs de fichiers internes inaccessibles depuis l'internet public.
- Le correctif introduit des gardes de statut et un booléen de validation dans la fonction resolveRoutes.
Empoisonnement de cache et Cross-Site Scripting
L'empoisonnement de cache force les utilisateurs légitimes à recevoir du texte brut au lieu d'une page rendue. Pour la faille XSS, l'absence d'échappement des chevrons permet de fermer un script légitime et d'ouvrir une balise malveillante pour voler des cookies de session. Ces vulnérabilités soulignent les risques liés à la complexité croissante des mécanismes de rendu hybride.
- Les paramètres de requête permettent de stocker des données de composants (RSC) dans les emplacements de cache normalement réservés au HTML.
- Les balises script beforeInteractive sont vulnérables aux injections JavaScript via les paramètres de recherche.
- JSON.stringify ne protège pas contre l'injection de balises HTML fermantes dans le contexte de dangerouslySetInnerHTML.
설명
Next.js vient de publier une mise à jour de sécurité corrigeant 13 CVE — dont 6 de sévérité élevée. Dans cette vidéo, nous décortiquons les contournements de middleware, les dénis de service via le protocole React Flight, les falsifications de requêtes côté serveur (SSRF) et le cross-site scripting (XSS). Les Server Components étaient-ils une erreur ? 🔗 Liens utiles Blog de sécurité : [https://vercel.com/changelog/next-js-may-2026-security-release](https://vercel.com/changelog/next-js-may-2026-security-release) ❤️ En savoir plus sur nous Une stack d’observabilité radicalement meilleure : [https://betterstack.com/](https://betterstack.com/) Tutoriels écrits : [https://betterstack.com/community/](https://betterstack.com/community/) Exemples de projets : [https://github.com/BetterStackHQ](https://github.com/BetterStackHQ) 📱 Réseaux sociaux Twitter : [https://twitter.com/betterstackhq](https://twitter.com/betterstackhq) Instagram : [https://www.instagram.com/betterstackhq/](https://www.instagram.com/betterstackhq/) TikTok : [https://www.tiktok.com/@betterstack](https://www.tiktok.com/@betterstack) LinkedIn : [https://www.linkedin.com/company/betterstack](https://www.linkedin.com/company/betterstack) 📌 Chapitres : 00:00 Intro 00:41 Contournement du Middleware 03:50 Déni de service 07:50 Falsification de requête (Sévérité maximale) 10:57 Empoisonnement du cache 12:45 Cross-Site Scripting (XSS) 15:09 Une erreur ?
