ÉlevéeCVE-2026-87018
undici vulnérable à un déni de service via une renegotiation de certificat TLS 1.2 changeante
Conséquences sérieuses, souvent sous quelques conditions : à corriger rapidement.
- Sévérité
- Élevée7.5 / 10
- Publiée le
- 2026 d’octòbre 27
- Mise à jour
- 2026 d’octòbre 27
L'avis
Traduction automatique de l'avis officiel. En cas de doute, l'avis d'origine, plus bas, fait foi.
Impact
undici provoque le crash du processus client lorsqu'un serveur TLS 1.2 négocie à nouveau après que la connexion a été établie et présente un certificat différent, approuvé par une CA, dont le nom d'hôte ne correspond pas à l'hôte demandé. Node.js réexécute la vérification du nom d'hôte sur le handshake renégocié et détruit la socket avec ERR_TLS_CERT_ALTNAME_INVALID. Le gestionnaire d'erreurs de socket établie d'undici affirmait que ce code d'erreur ne pouvait jamais se produire, si bien que l'erreur contrôlée par le pair est devenue une AssertionError non capturée qui termine le processus Node.js. Les chemins HTTP/1.1 et HTTP/2 sont tous deux affectés.
Un endpoint HTTPS malveillant ou compromis, accessible via undici ou l'API globale fetch(), peut provoquer le crash du client avec une seule négociation initiale par le serveur, mettant fin à toutes les requêtes en cours et aux tâches de fond dans le processus. Seul TLS 1.2 est affecté, car TLS 1.3 ne prend pas en charge la renégociation. L'exploitation ne nécessite pas de compromission de CA : l'attquant contrôle l'endpoint et peut présenter deux certificats valides ordinaires, le premier correspondant à l'URL demandée et le second intentionnellement ne correspondant pas.
Patches
Mettez à jour vers undici 6.29.1, 7.30.1 ou 8.12.2.
Workarounds
Restreignez les connexions sortantes à TLS 1.3, par exemple en définissant connect: { minVersion: 'TLSv1.3', maxVersion: 'TLSv1.3' } sur le client ou l'agent, de sorte que la renégociation ne puisse pas avoir lieu, lorsque les endpoints cibles prennent en charge TLS 1.3.
Composants touchés
| Composant | Versions touchées | Corrigé en |
|---|---|---|
| undiciJavaScript (npm) | >= 4.2.1, < 6.29.1 | 6.29.1 |
| undiciJavaScript (npm) | >= 7.0.0, < 7.30.1 | 7.30.1 |
| undiciJavaScript (npm) | >= 8.0.0, < 8.12.2 | 8.12.2 |
Vous utilisez une version touchée ? Passez à la version corrigée, puis redéployez.