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
- Le 23 septembre,
npm auditne signalait pas la 16.3.5, l'avis manquait encore à la GitHub Advisory Database et aucun enregistrement CVE n'était publié. - Satori est embarqué dans le paquet
next: il n'apparaît pas comme dépendance dans le fichier de verrouillage. - Aucune attaque ni exploit public n'était connu à cette date, mais Vercel ne fournit aucun moyen de savoir si une route a été visée. Les versions touchées circulent depuis Next.js 16.2, sorti le 18 mars.
- Vercel ne précise pas si les applications hébergées chez lui sont protégées, alors qu'il l'avait fait pour les deux failles critiques d'août.
Ce qu'il faut faire
# 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.6Si 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.