Sécurité et confidentialité

Les valeurs par défaut de MPTCP dans Go 1.24 exposent les serveurs Linux à un risque d'exécution de code à distance (RCE) au niveau du noyau

Une vulnérabilité critique du noyau Linux permet l'exécution de code à distance via MPTCP. Go 1.24 active ce protocole par défaut, nécessitant des mesures immédiates pour les développeurs.

Illustration des symboles Go et Linux indiquant une vulnérabilité de sécurité
Illustration générée pour cet article

Traduit automatiquement depuis l'original anglais.

Une faille de sécurité critique dans le noyau Linux, identifiée sous la référence CVE-2026-98432, représente un risque majeur pour les serveurs exécutant des applications Go. Le problème réside dans un bug d'utilisation après libération (use-after-free) dans la gestion des connexions TCP IPv4, pouvant mener à une exécution de code à distance (RCE). Étant donné que la version 1.24 de Go active Multipath TCP (MPTCP) par défaut sur Linux, de nombreux services Go modernes sont involontairement exposés à cette vecteur d'attaque, sauf si des mesures spécifiques d'atténuation sont appliquées ou si le noyau est corrigé.

Ce qui s'est passé

L'équipe Go a publié un avis urgent suite à la divulgation de la CVE-2026-98432. Cette vulnérabilité se trouve dans le noyau Linux et affecte la manière dont il gère les connexions TCP IPv4. Des chercheurs en sécurité chez Anthropic ont démontré un exploit pratique permettant de compromettre un serveur écoutant des connexions MPTCP, autorisant ainsi un attaquant à exécuter du code arbitraire à distance. Bien que la preuve de concept ait spécifiquement ciblé les systèmes disposant d'écouteurs MPTCP actifs, le bug de corruption mémoire sous-jacent n'est pas strictement limité au trafic MPTCP. Cela signifie que même les systèmes non explicitement configurés pour le réseau multipath pourraient rester vulnérables à des techniques d'exploitation similaires.

La préoccupation principale pour la communauté Go découle d'un changement introduit dans Go 1.24. Dans cette version, l'environnement d'exécution active automatiquement MPTCP pour tous les sockets d'écoute sur les systèmes Linux. Ce comportement par défaut visait à améliorer la résilience et les performances réseau, mais il est devenu une surface d'attaque significative en raison de la faille du noyau. Les mainteneurs de Go soulignent que bien que désactiver MPTCP au niveau de l'application offre une protection temporaire, ce n'est pas une solution complète. La correction fondamentale nécessite la mise à jour du système d'exploitation hôte vers une version du noyau incluant le correctif pour la CVE-2026-98432.

Comment cela fonctionne

Multipath TCP est une extension du protocole TCP standard qui permet à une seule connexion d'utiliser simultanément plusieurs chemins réseau. Cela améliore la fiabilité et le débit en agrégeant la bande passante ou en basculant vers un autre chemin si l'un échoue. Dans Go 1.24, le package net définit automatiquement les options de socket nécessaires pour activer MPTCP lors de la création d'écouteurs sur Linux. Cela se produit de manière transparente, ce qui signifie que les développeurs n'ont pas besoin d'écrire de code supplémentaire pour l'activer.

La vulnérabilité CVE-2026-98432 est une erreur d'utilisation après libération dans la pile TCP du noyau. Lorsque le noyau traite certains paquets TCP, il peut libérer prématurément un objet mémoire tout en continuant à y faire référence. Un attaquant peut concevoir des paquets spécifiques pour déclencher cette condition, potentiellement écrasant des structures mémoire et prenant le contrôle du flux d'exécution. Puisque Go 1.24 ouvre la porte à la négociation MPTCP par défaut, tout service Go écoutant sur une interface publique devient une cible potentielle pour cet exploit au niveau du noyau, indépendamment du fait que la logique de l'application utilise réellement des fonctionnalités multipath.

Détails clés

  • ID de la vulnérabilité : CVE-2026-98432 affecte la gestion TCP IPv4 du noyau Linux.
  • Impact : L'exécution de code à distance (RCE) est possible via des paquets conçus à cet effet.
  • Version de Go : Go 1.24 active MPTCP par défaut pour les sockets d'écoute sur Linux.
  • Correction principale : Mettez immédiatement à jour le noyau Linux vers une version corrigée.
  • Atténuation à l'exécution : Définissez GODEBUG=multipathtcp=0 dans l'environnement pour désactiver MPTCP.
  • Atténuation à la compilation : Ajoutez godebug multipathtcp=0 au fichier go.mod.

Pourquoi c'est important

Pour les ingénieurs logiciels et les responsables techniques, cet incident met en lumière les dépendances cachées entre les environnements d'exécution des applications et les noyaux des systèmes d'exploitation. De nombreuses équipes supposent que la mise à jour de leur environnement d'exécution de langage ou de leur code d'application suffit pour assurer la sécurité. Cependant, comme Go 1.24 modifie une valeur par défaut réseau de bas niveau, il interagit dangereusement avec un noyau non corrigé. Cela crée un scénario où une base de code d'application sécurisée peut toujours être compromise en raison de vulnérabilités au niveau de l'infrastructure. Cela oblige les équipes DevOps et plateformes à coordonner urgemment les correctifs du noyau dans tous les environnements de production.

De plus, l'avis met en garde contre le fait de compter uniquement sur les désactivations au niveau de l'application. La définition de GODEBUG=multipathtcp=0 est décrite comme une « atténuation fragile ». Si une instance de service unique est mal configurée ou si un nouveau service est déployé sans ce flag, l'hôte entier reste à risque. En outre, cette approche suppose que toutes les exploitations nécessitent un écouteur MPTCP actif, ce qui peut ne pas être vrai compte tenu de la nature générale du bug d'utilisation après libération. Cette incertitude signifie que désactiver MPTCP est une mesure provisoire, et non une stratégie de sécurité à long terme.

Ce que vous pouvez faire

  • Donnez la priorité à la correction de vos noyaux Linux vers des versions résolvant la CVE-2026-98432.
  • Si des mises à jour immédiates du noyau sont impossibles, définissez GODEBUG=multipathtcp=0 dans vos variables d'environnement de production.
  • Ajoutez godebug multipathtcp=0 à votre fichier go.mod pour forcer la désactivation à la compilation.
  • Auditez votre infrastructure pour vous assurer qu'aucun service hérité n'expose accidentellement des écouteurs MPTCP.
  • Surveillez les discussions sur le tracker des problèmes de Go concernant les futurs changements de comportements par défaut.
  • Revoyez l'utilisation de net.Dialer.SetMultipathTCP et net.ListenConfig.SetMultipathTCP pour gérer explicitement le comportement des sockets.
  • #go
  • #linux
  • #security
  • #mptcp
  • #kernel

Outils de la Boutique Bytechap

Continuer la lecture

Tous les articles