Contexte et portée des failles

Next.js, framework JavaScript largement utilisé pour le rendu côté serveur et la génération statique, a publié un correctif hors‑cycle pour deux vulnérabilités classées comme critiques. Les deux failles permettent une exécution de code à distance (RCE) lorsqu'un serveur Next.js traite des réponses mises en cache ou des fichiers SVG fournis par un client. Aucun numéro CVE n’a été communiqué dans le communiqué officiel, ce qui limite la capacité des équipes de sécurité à référencer précisément les correctifs dans leurs bases de données.

Les rapports indiquent que les vulnérabilités affectent les versions antérieures à la version 13.5.2, la version où le correctif a été intégré. Les organisations utilisant des versions antérieures doivent appliquer le patch immédiatement, car l’exploitation ne nécessite pas d’authentification préalable et peut être déclenchée via des requêtes HTTP standard.

Mécanismes techniques des vulnérabilités

La première faille réside dans le module de mise en cache interne de Next.js, qui stocke les réponses HTTP dans un système de fichiers ou en mémoire. Un attaquant peut injecter du code JavaScript malveillant dans les en‑têtes de réponse ou dans le corps de la réponse, qui est ensuite réinjecté lors de la relecture du cache. Le processus de désérialisation du cache ne valide pas correctement le contenu, ce qui conduit à l’exécution du code injecté dans le contexte Node.js du serveur.

La seconde faille concerne le traitement des images SVG. Next.js utilise la bibliothèque svgo pour optimiser les SVG avant de les servir. Une configuration inadéquate de svgo permet l’inclusion de balises <script> ou d’entités XML externes (XXE). Lors du rendu côté serveur, ces balises sont évaluées, ouvrant une voie d’exécution de code arbitraire. Le problème est aggravé par le fait que le pipeline de compilation de Next.js intègre automatiquement les SVG dans le bundle JavaScript, augmentant la surface d’attaque.

Patch et recommandations

Le correctif publié par Vercel, l’entreprise derrière Next.js, consiste en une mise à jour du module de cache qui introduit une validation stricte des métadonnées de cache et désactive la désérialisation non contrôlée. Parallèlement, la version corrigée de svgo désactive par défaut les plugins capables de traiter des scripts ou des entités externes, limitant ainsi le traitement des SVG aux éléments graphiques sûrs.

Les équipes de développement doivent mettre à jour leurs projets vers la version 13.5.2 ou supérieure via npm install next@latest. Pour les environnements qui ne peuvent pas être mis à jour immédiatement, il est recommandé de désactiver la mise en cache côté serveur et de filtrer les fichiers SVG en amont, en refusant tout fichier contenant des balises <script> ou des références externes.

Enfin, la divulgation hors‑cycle indique que Vercel a choisi de publier le correctif sans attendre le cycle de version standard, afin de réduire la fenêtre d’exposition. Cette décision souligne l’importance de surveiller les bulletins de sécurité des dépendances critiques et d’intégrer des processus de mise à jour automatisés dans les pipelines CI/CD.