Aller au contenu

Node.js 22.23.3 LTS corrige un bug use-after-free dans HTTP/2

Node.js 22.23.3 LTS, publié le 23 septembre, corrige un bug use-after-free dans HTTP/2, ajoute la prise en charge de SharedArrayBuffer à Node-API et passe à OpenSSL 3.5.8.

Par Tech AI Wire Team

3 min de lecture

XLinkedIn
The Notable Changes list from the Node.js 22.23.3 release notes, including the OpenSSL 3.5.8 update and the two Node-API changes.
Photo: Node.js

Le projet Node.js a publié Node.js 22.23.3 le 23 septembre 2026, un correctif pour sa branche de support à long terme. Le changement le plus important corrige un bug use-after-free dans HTTP/2, une erreur mémoire dans le code qui gère les connexions HTTP/2. Quiconque sert du HTTP/2 depuis Node.js 22 devrait prévoir la mise à jour.

Node.js est l'environnement d'exécution qui permet à JavaScript de tourner sur des serveurs, et pas seulement dans le navigateur. La version 22 est une version à support long terme (LTS). Elle reçoit donc des correctifs pendant des années, et de nombreuses entreprises l'utilisent en production. Son nom de code est « Jod ».

Ce que change le correctif HTTP/2

HTTP/2 est la version plus récente du principal protocole du Web. Il permet à une seule connexion de transporter plusieurs requêtes à la fois, chacune sur son propre « flux ».

Un bug use-after-free se produit quand un programme continue d'utiliser une zone de mémoire après l'avoir rendue. Le programme lit ou écrit alors des données qui appartiennent peut-être à autre chose. Ce type de bug peut faire planter un programme, c'est pourquoi il est corrigé rapidement.

Selon LinuxCompatible, le problème était une condition de concurrence dans nghttp2_session_mem_recv2(). Cette fonction fait partie de nghttp2, la bibliothèque que Node.js utilise pour lire le trafic HTTP/2. Si un flux était fermé pendant que des données entrantes étaient encore en cours de traitement, le code pouvait toucher une mémoire déjà libérée. Le correctif attend la fin de l'étape de réception avant de traiter le message de fermeture du flux, appelé RST_STREAM.

Aucune des deux sources ne donne de numéro CVE ni de niveau de gravité pour ce bug. Les notes de version officielles le présentent comme une correction de bug. Il n'apparaît pas dans les billets de versions de sécurité du projet, dont l'entrée la plus récente date de juillet 2026.

De nouvelles fonctions Node-API pour SharedArrayBuffer

Node-API est l'interface stable qu'utilisent les modules natifs. Les modules natifs sont des modules écrits en C ou en C++ que Node.js charge directement, comme des pilotes de base de données ou des bibliothèques d'images.

Cette version permet à ces modules de travailler avec SharedArrayBuffer, un bloc de mémoire que plusieurs threads JavaScript peuvent lire et écrire en même temps. Les notes de version ajoutent napi_create_external_sharedarraybuffer et étendent napi_create_typedarray pour qu'elle accepte un SharedArrayBuffer.

Autres correctifs et mises à jour de dépendances

Deux correctifs plus modestes sont listés. L'un rétablit la possibilité de patcher le module de système de fichiers fs quand le code est chargé par le chargeur de modules ES. L'autre corrige l'échappement des variables d'environnement sous Windows.

La version met aussi à jour les bibliothèques intégrées :

ComposantNouvelle version
OpenSSL3.5.8
Certificats racinesNSS 3.125
npm10.9.9
corepack0.36.0
Undici6.28.1
ICU78.3
c-ares1.34.8
Données de fuseaux horaires2026c

OpenSSL gère le chiffrement pour HTTPS. Undici est le client HTTP derrière le fetch intégré de Node. Les certificats racines déterminent à quels sites HTTPS Node.js fait confiance par défaut.

Ce que cela signifie pour les développeurs

Vérifiez si vos services Node.js 22 parlent HTTP/2 directement. Cela inclut les serveurs construits sur le module http2, les services gRPC et les applications qui terminent elles-mêmes TLS sans proxy devant elles. Ce sont les services les plus exposés au bug de fermeture de flux, alors passez-les en premier à 22.23.3.

Mettez à jour vos images de base, pas seulement vos ordinateurs portables. Beaucoup d'équipes fixent une version de Node dans un Dockerfile, une configuration de CI ou un fichier .nvmrc. Cherchez 22. dans ces fichiers et relevez chaque version, puis reconstruisez.

Si vous maintenez un module natif, les nouvelles fonctions Node-API vous permettent de partager de la mémoire avec des worker threads sans la copier. Ajoutez une vérification de version, car ces fonctions n'existent que dans les versions récentes et les anciens builds de Node 22 ne les ont pas.

Si votre suite de tests simule le module fs sous les modules ES et a cassé avec une version 22.x antérieure, relancez-la sur 22.23.3. Le retour du patching vous permettra peut-être de supprimer un contournement.

Enfin, surveillez l'apparition d'un CVE. Les notes de version n'en citent aucun, et le projet pourrait publier un avis de sécurité plus tard. D'ici là, considérez ce correctif comme une mise à jour à appliquer maintenant plutôt que d'attendre la prochaine mise à jour prévue.

Sources

  1. Node.js 22.23.3 (LTS) - Node.js
  2. Node.js 22.23.3 LTS Released with HTTP/2 Use-After-Free Fix - LinuxCompatible

Articles liés