Sécurité et confidentialité

Next.js corrige des failles critiques RCE dans la mise en cache et le traitement SVG

Les versions Next.js 16.4.1 et 15.5.28 corrigent deux vulnérabilités critiques d'exécution de code à distance (RCE) et une faille de déni de service affectant les composants serveur et le traitement des images.

Illustration d'un serveur protégé par un bouclier fissuré contre des attaques numériques
Illustration générée pour cet article

Traduit automatiquement depuis l'original anglais.

Vercel a publié une mise à jour de sécurité urgente hors cycle pour Next.js le 14 octobre, corrigeant deux vulnérabilités critiques d'exécution de code à distance (RCE) et une faille de déni de service (DoS) de gravité élevée. Les correctifs sont disponibles dans les versions Next.js 16.4.1 et 15.5.28, ciblant les applications utilisant les React Server Components, le traitement d'images SVG ou les Server Actions. Bien qu'aucune exploitation active n'ait été signalée pour l'instant, la gravité de ces problèmes exige une attention immédiate des équipes de développement.

Ce qui s'est passé

La mise à jour résout trois problèmes de sécurité distincts qui exposent les applications Next.js à des attaques non authentifiées. Vercel a attribué un score CVSS de 9,5 aux deux failles RCE, indiquant qu'elles sont critiques et facilement exploitables sous certaines conditions. La première vulnérabilité existe au sein des React Server Components, affectant spécifiquement les applications utilisant la fonctionnalité use cache. La seconde implique un bug de corruption mémoire dans librsvg, une bibliothèque open source utilisée par le package sharp pour le rendu SVG. Le troisième problème est une vulnérabilité DoS liée aux Server Actions, permettant aux attaquants d'épuiser les ressources CPU du serveur avec des requêtes élaborées.

Ces failles affectent un large éventail de versions de Next.js. La RCE via use cache impacte Next.js 16.0.0 à 16.4.0. La RCE liée au SVG affecte les versions 10.0.0 à 15.5.27 et 16.0.0 à 16.4.0. La faille DoS couvre les versions 13.0.0 à 15.5.27 et 16.0.0 à 16.4.0. Vercel recommande à tous les utilisateurs de mettre à niveau vers les dernières versions patchées, même s'ils pensent que leur configuration spécifique n'est pas vulnérable, afin d'assurer une protection complète.

L'exposition varie selon l'environnement d'hébergement et la configuration de l'application. Par exemple, Netlify a déclaré que sa plateforme n'exécute pas le chemin de code de l'optimiseur d'images, limitant ainsi l'impact de la faille SVG sur son infrastructure. Cependant, ils conseillent tout de même la mise à niveau. Les applications fonctionnant sur des systèmes Linux basés sur glibc sont particulièrement à risque pour la vulnérabilité SVG, car le bug mémoire sous-jacent dans librsvg peut être déclenché à distance lors du traitement de fichiers fournis par un attaquant.

Comment cela fonctionne

Le défaut des React Server Components se déclenche dans des cas rares où une fonction use cache renvoie plus d'un tableau typé contenant une valeur contrôlée par l'attaquant. Ce problème réside dans les packages react-server-dom-webpack, react-server-dom-parcel et react-server-dom-turbopack. Lorsque ces conditions sont remplies, le serveur peut exécuter du code arbitraire fourni par l'attaquant. Bien que Vercel décrive ce scénario comme extrêmement rare, l'impact potentiel est suffisamment grave pour justifier une recommandation universelle de mise à niveau pour les utilisateurs de Next.js 16.

La vulnérabilité SVG provient d'un bug mémoire dans librsvg, référencé sous CVE-2026-96889. Next.js accède à cette bibliothèque via le package de traitement d'images sharp. Par défaut, Next.js n'optimise pas les SVG, mais activer le paramètre dangerouslyAllowSVG ou utiliser la fonctionnalité next/og pour les images d'aperçu social expose l'application à ce risque. Lorsqu'un SVG malveillant est traité sur un système Linux basé sur glibc, la corruption mémoire peut conduire à une exécution de code à distance. Il s'agit de la troisième RCE liée au traitement d'images dans Next.js depuis août, soulignant les risques inhérents aux dépendances natives complexes.

La vulnérabilité DoS affecte les applications App Router qui définissent au moins une Server Action. Les attaquants peuvent envoyer des requêtes spécialement conçues qui forcent un seul processus serveur à consommer 100 % de sa capacité CPU, l'empêchant de traiter d'autres requêtes légitimes. Cela met effectivement l'application hors ligne pour les utilisateurs dépendant de ce processus spécifique. Les applications Pages Router et celles sans Server Actions ne sont pas affectées par cette faille particulière.

Détails clés

  • Versions corrigées : Next.js 16.4.1 et 15.5.28 résolvent les trois problèmes.
  • Dépendance Sharp : La version 16.4.1 nécessite automatiquement sharp 0.35.5, qui contient le librsvg corrigé. La version 15.5.28 peut encore autoriser des versions sharp plus anciennes et vulnérables, nécessitant une vérification manuelle.
  • Spécificité Linux : La RCE SVG est principalement exploitable sur les systèmes Linux basés sur glibc où Next.js traite les SVG via sharp.
  • Pas de CVE pour certaines failles : Au 15 octobre, les avis concernant use cache et les Server Actions n'avaient pas de CVE attribuées et n'étaient pas visibles dans les flux standards de npm audit.
  • Contournements : Il n'y a pas de contournement pour les failles use cache et Server Actions. Pour le problème SVG, les utilisateurs peuvent bloquer le rendu SVG dans sharp s'ils ne peuvent pas effectuer la mise à niveau immédiatement.
  • Incidents précédents : Cela fait suite à des failles RCE similaires en août (libheif) et en septembre (next/og), indiquant un schéma de vulnérabilités dans les dépendances de traitement d'images.

Pourquoi c'est important

Pour les équipes d'ingénierie, cette mise à jour souligne la fragilité de la sécurité de la chaîne d'approvisionnement dans les frameworks web modernes. La récurrence des failles RCE dans les bibliothèques de traitement d'images comme sharp et ses dépendances suggère que l'intégration de code natif reste un domaine à haut risque. Les développeurs supposent souvent que les abstractions de haut niveau du framework les protègent des erreurs mémoire de bas niveau, mais cet incident prouve que les dépendances profondes peuvent introduire des vulnérabilités critiques difficiles à détecter sans outils de scan spécialisés.

L'absence de CVE pour deux des trois failles met également en évidence un écart dans la surveillance automatisée de la sécurité. De nombreuses équipes comptent sur npm audit ou des outils similaires pour signaler les dépendances vulnérables. Comme ces avis spécifiques n'étaient pas immédiatement intégrés dans les flux standards, les organisations dépendant uniquement des scanners automatisés auraient pu manquer l'urgence des correctifs pour use cache et les Server Actions. Cela nécessite une approche plus proactive de la surveillance des canaux officiels du framework et des bulletins de sécurité plutôt que de compter exclusivement sur les outils automatisés.

Ce que vous pouvez faire

  • Mettez à niveau immédiatement vers Next.js 16.4.1 ou 15.5.28 et reconstruisez votre application.
  • Si vous utilisez Next.js 15, vérifiez manuellement que sharp est mis à jour vers la version 0.35.5 ou ultérieure en utilisant npm ls sharp.
  • Vérifiez si votre application utilise dangerouslyAllowSVG ou next/og et envisagez de désactiver ces fonctionnalités si elles ne sont pas essentielles.
  • Surveillez l'utilisation du CPU du serveur pour détecter des pics inhabituels qui pourraient indiquer une exploitation de la faille DoS des Server Actions.
  • Revoyez votre pipeline de scan de dépendances pour vous assurer qu'il capture les avis qui n'ont peut-être pas encore de CVE attribuées.
  • Si une mise à niveau immédiate n'est pas possible, bloquez les opérations SVG dans sharp en utilisant sharp.block({ operation: ["VipsForeignLoadSvg"] }) comme mesure temporaire pour la faille image.

Outils de la Boutique Bytechap

Continuer la lecture

Tous les articles