InfoOn a lu la doc

Next.js : l'affiche dit SVG, la note dit glibc, et la case CVE est vide

Le 14 octobre, l'avis GHSA-2464-fhr4-w9xw titre une exécution de code non authentifiée dans l'optimisation d'images quand des SVG sont utilisés. Le paragraphe d'impact parle d'une bibliothèque amont, d'un RCE possible, et de Linux avec glibc. Les plages touchées s'arrêtent avant 16.0.0, et la case CVE n'a pas d'identifiant.

L'affiche sur la porte est nette. Elle annonce une exécution de code, sans authentification, dans l'API d'optimisation d'images, quand des fichiers SVG sont utilisés. Tu pousses la porte. La note scotchée derrière ne reprend ni le SVG, ni le mot « non authentifié ». Elle parle d'une bibliothèque qu'elle ne nomme pas, d'un code possible, et d'un Linux précis. La case où tu attendais un numéro CVE est là, et elle est vide. Si tu ne lis que l'affiche, tu as un scénario. Tu n'as pas la note.

Le 14 octobre 2026, eps1lon publie GHSA-2464-fhr4-w9xw, sur le paquet npm next. L'étiquette de sévérité dit Critical. Le score affiché est 9,5. Le vecteur imprimé est CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H. La page range Attack Requirements sur Present, Privileges Required sur None, User interaction sur None. La rubrique faiblesses dit No CWEs. La rubrique CVE ID n'avait pas d'identifiant dans le texte que j'ai lu.

L'affiche et la note ne disent pas la même phrase

Le titre : une exécution de code à distance non authentifiée, dans l'API d'optimisation d'images, quand des fichiers SVG sont utilisés.

Le paragraphe d'impact : une vulnérabilité liée à la mémoire a été trouvée dans une bibliothèque amont utilisée pour l'optimisation d'images, et elle peut mener à une exécution de code possible quand Next.js tourne sur un Linux basé sur glibc. « Possible » est dans la phrase. Le nom de la bibliothèque n'y est pas. SVG n'y est pas. « Unauthenticated » n'y est pas. Le vecteur, lui, a PR:N. C'est une métrique, avec l'étiquette None à côté. Je ne recolle pas le mot de l'affiche au paragraphe pour faire une seule phrase que l'avis n'a pas écrite.

Le contournement est une autre phrase, et c'est elle qui nomme un paquet. Il faut que la version de sharp utilisée par Next.js soit supérieure ou égale à 0.35.5. Les installations fraîches obtiennent une version corrigée. Monter Next.js aux versions patchées fait que le gestionnaire de paquets fournit un sharp corrigé à Next.js. La bibliothèque amont reste sans nom dans l'impact. Sharp a un numéro dans le contournement. Je ne soude pas les deux en « la bibliothèque, c'est sharp ». L'avis ne l'écrit pas.

Les plages ont un bord, et le bord n'est pas une phrase

Les versions affectées, telles qu'imprimées :

  • >= 10.0.0 et <= 15.5.27
  • > 16.0.0 et <= 16.4.0

Les versions patchées nommées : 15.5.28 et 16.4.1. Deux numéros. Pas une formule « et toutes celles d'après ».

La seconde plage commence strictement après 16.0.0. Le chiffre 16.0.0 n'est pas dans l'intervalle tel qu'il est écrit. L'avis ne dit pas, dans une phrase, que cette version-là est hors de cause. Je ne lui prête pas cette phrase. Je ne remplis pas non plus le trou entre 15.5.27 et 16.0.0 avec des numéros que la page n'a pas listés. Ce qui est écrit, ce sont deux plages et deux correctifs.

AT:P est dans le vecteur, et la page dit que les conditions d'attaque sont présentes. Elle ne dit pas lesquelles. Je m'arrête au mot Present. Je n'invente pas le décor.

Le score a des cases, et les cases ne racontent pas un scénario

Autour du 9,5, la page aligne les métriques, pas une procédure. Attack Vector : Network. Attack Complexity : Low. Attack Requirements : Present. Privileges Required : None. User interaction : None. Côté système vulnérable, confidentialité, intégrité et disponibilité sont toutes les trois sur High. Côté système suivant, les trois mêmes cases sont sur High. Six High, un Present, un None pour les privilèges, un None pour l'interaction. Je recopie les étiquettes. Je ne traduis pas Network et Low en « ça se fait depuis Internet en une requête » : cette phrase-là n'est pas dans l'avis.

Le paragraphe d'impact, lui, reste au conditionnel de sa propre grammaire. Il dit qu'une vulnérabilité mémoire a été découverte dans une bibliothèque amont, et que ça peut mener à une exécution possible. Deux prudences dans la même zone de texte. Le titre, au-dessus, n'a pas ces prudences : il affirme l'exécution de code, non authentifiée, avec des SVG. J'ai les deux. Je ne laisse pas le titre effacer le « possible ».

Le contournement a aussi sa phrase sur les installations. Une installation fraîche reçoit une version corrigée. Monter Next.js aux versions patchées fait que le gestionnaire de paquets fournit cette version corrigée de sharp. Le plancher nommé reste 0.35.5. Le nom de la bibliothèque amont, dans l'impact, reste absent. Sharp est le paquet du contournement. Ce n'est pas, dans ce texte, le sujet d'une phrase qui dirait « la bibliothèque amont s'appelle sharp ».

✍️ À toi : la version de next que ton lockfile a vraiment, et celle de sharp à côté. L'affiche parle d'un SVG. Ton arbre de dépendances a des numéros.

L'affiche du 14 octobre dit une exécution de code non authentifiée, par l'optimisation d'images, quand des SVG sont utilisés. La note dit une bibliothèque amont, un RCE possible, et glibc. Sharp entre dans le contournement, à partir de 0.35.5, pas dans le nom de la bibliothèque. Les correctifs nommés sont 15.5.28 et 16.4.1. La seconde plage ouverte après 16.0.0. La case CVE, le jour où je l'ai lue, n'avait pas de numéro.