veilletech.fr
24 sept. Feed du jour
#01 SÉCURITÉ Faille

Next.js : un SVG dans ImageResponse exécute du code

Une image de partage, c'est aussi une entrée utilisateur.

Next.js 16.3.6 corrige CVE-2026-94545, une faille critique (CVSS 9,5) dans ImageResponse : sur le runtime Node, une valeur contrôlée par l'attaquant glissée dans l'image pouvait mener à l'exécution de code sur le serveur. Les versions 16.2.0 à 16.3.5 sont touchées, aucune branche 16.2 corrigée n'existe, et npm audit ne signalait rien le 23 septembre.

3 min de lectureintermédiairevidéo 1:20
Partager
Sommaire5 sections
  1. Ce qui se passe
  2. Le mécanisme
  3. Pourquoi vos outils ne le verront pas
  4. Ce qu'il faut faire
  5. À retenir

Ce qui se passe

Vercel a publié le 22 septembre 2026 Next.js 16.3.6, qui corrige CVE-2026-94545 dans ImageResponse, la fonction de next/og qui fabrique les images Open Graph et autres aperçus de partage. L'avis GHSA-vcvr-r3jv-pc5j la classe critique, avec un score CVSS de 9,5.

Une application est exposée si elle place dans l'image une valeur que l'attaquant contrôle, par exemple un titre lu dans les paramètres de l'URL.

Élément Valeur
Versions touchées 16.2.0 à 16.3.5, sur le runtime Node.js (celui par défaut)
Version corrigée 16.3.6, et elle seule
Épargnés ImageResponse sur Edge, Next.js 15
Satori utilisé seul corrigé en 0.33.5 (GHSA-wx4j-mvgx-mqwp, CVSS 5,3)

Le mécanisme

ImageResponse s'appuie sur Satori, une bibliothèque de Vercel qui traduit la mise en page de l'image en SVG avant de produire le PNG. Certaines valeurs atteignaient ce SVG sans échappement : une chaîne préparée pouvait être interprétée comme du balisage plutôt que comme du texte. Dans Next.js, ce balisage pouvait ensuite atteindre des failles d'autres dépendances et déboucher sur l'exécution de code côté serveur. Vercel ne nomme pas ces dépendances, ce qui explique l'écart de notation : modéré pour Satori seul, critique une fois intégré à Next.js.

L'exemple de l'avis place une valeur tirée de l'URL dans un élément title du SVG. Il ne dit pas si un texte ordinaire, un titre dans une div, suffit aussi. Faute de réponse, traitez toute valeur issue de la requête comme suspecte.

Pourquoi vos outils ne le verront pas

Ce qu'il faut faire

Terminal
# La version réellement installée
npm ls next

# Où la fonction sert : route handlers et fichiers opengraph-image
grep -rnE "from ['\"]next/og['\"]" --exclude-dir=node_modules --exclude-dir=.next .

# Le correctif, y compris depuis la branche 16.2, qui n'en a pas
npm install next@16.3.6

Si la mise à jour doit attendre, l'avis recommande de tenir toute valeur contrôlée par l'attaquant à l'écart du contenu, des attributs et des styles du SVG. Basculer sur Edge n'est pas proposé : la documentation marque ce runtime comme déprécié. Sur la branche 15.5, 15.5.26 durcit next/og.

Source : Critical Next.js ImageResponse Flaw Can Lead to Server Code Execution via Crafted SVG Input, The Hacker News, 23 septembre 2026. Annonce officielle : Next.js Security Update, 22 septembre 2026.