Critical Node.js Vulnerability Can Cause Server Crashes via async_hooks Stack Overflow
Mis à jour :
Vulnérabilité Critique dans Node.js : Risque de Plantage Serveur par Dépassement de Pile Async_hooks
Une faille de sécurité critique affectant “quasiment toutes les applications Node.js en production” a été corrigée. Cette vulnérabilité permettait, si exploitée, de provoquer un déni de service (DoS) entraînant le crash des serveurs.
Le problème réside dans le comportement de Node.js lorsque la pile d’appels (stack space) est épuisée en code utilisateur alors que le module async_hooks est activé. Au lieu de gérer l’exception de manière robuste, Node.js se termine avec un code d’erreur interne (code 7) sans lancer d’erreur rattrapable. Ceci rend les applications vulnérables si la profondeur de récursion peut être contrôlée par des entrées non validées.
Le module async_hooks est une API bas niveau utilisée pour suivre le cycle de vie des ressources asynchrones. La vulnérabilité impacte plusieurs frameworks et outils de monitoring de performance applicative (APM) tels que React Server Components, Next.js, Datadog, New Relic, Dynatrace, Elastic APM et OpenTelemetry, qui s’appuient sur AsyncLocalStorage, un composant basé sur async_hooks.
Points Clés :
- Nature du problème : Dépassement de la pile d’appels (stack overflow) en présence de
async_hooks. - Conséquence : Plantage du processus Node.js avec le code d’erreur 7 au lieu d’une gestion d’exception normale.
- Vecteur d’attaque : Entrées utilisateur non validées contrôlant la profondeur de récursion du code.
- Impact : Déni de service (DoS), plantage serveur.
- Versions affectées : Toutes les versions de Node.js à partir de la 8.x jusqu’à la 18.x, ainsi que les versions 20.x, 22.x et 24.x avant les correctifs. Les versions antérieures à 20.x et 18.x et antérieures sont en fin de vie et ne sont plus patchées.
- Outils/Frameworks affectés : React Server Components, Next.js, Datadog, New Relic, Dynatrace, Elastic APM, OpenTelemetry.
Vulnérabilité :
- CVE : CVE-2025-59466
- Score CVSS : 7.5
Recommandations :
- Mise à jour immédiate : Les utilisateurs des frameworks et outils affectés, ainsi que les fournisseurs d’hébergement, sont fortement encouragés à mettre à jour leurs environnements Node.js vers les versions corrigées :
- Node.js 20.20.0 (LTS)
- Node.js 22.22.0 (LTS)
- Node.js 24.13.0 (LTS)
- Node.js 25.3.0 (Current)
- Pour les développeurs : Implémenter des défenses plus robustes pour contrer l’épuisement de la pile d’appels et garantir la disponibilité du service.
Bien que considéré comme un correctif pour un comportement non spécifié, la décision d’inclure ce correctif dans une publication de sécurité a été prise en raison de son large impact sur l’écosystème. Le correctif détecte les erreurs de dépassement de pile et les relance au code utilisateur au lieu de les traiter comme fatales.
