Vulnérabilité critique dans la bibliothèque populaire Go (Golang) net/http
La communauté des développeurs Go (Golang) est préoccupée par la découverte d'une vulnérabilité critique dans la bibliothèque standard net/http. Cette bibliothèque est la base pour la construction de serveurs web, de clients HTTP et de microservices en Go, ce qui signifie que le problème affecte des millions d'applications dans le monde entier.
La vulnérabilité, identifiée sous le nom CVE-2024-XXXX, a été découverte par des chercheurs en sécurité et classée comme critique avec un score de 9,8 sur 10 selon l'échelle CVSS. Le problème est lié à un traitement incorrect des flux HTTP/2, ce qui peut entraîner une fuite de mémoire (memory leak) et, finalement, un déni de service (DoS).
Comment fonctionne la vulnérabilité ?
L'essence du problème réside dans le fait que, lors du traitement de certains types de requêtes HTTP/2, la bibliothèque net/http ne libère pas la mémoire allouée pour les tampons internes. Un attaquant peut envoyer une série de requêtes spécialement conçues, provoquant une croissance incontrôlée de la consommation de mémoire sur le serveur. Lorsque la mémoire est épuisée, le serveur plante ou devient inaccessible pour les utilisateurs légitimes.
Il est important de noter qu'aucune authentification n'est requise pour exploiter la vulnérabilité — l'attaque peut être menée à distance.
Quelles versions sont menacées ?
Le problème affecte toutes les versions de Go, de 1.20 à 1.22.2 (inclus).
- Go 1.20.x — toutes les sous-versions sont vulnérables.
- Go 1.21.x — toutes les sous-versions sont vulnérables.
- Go 1.22.0 — 1.22.2 — vulnérables.
- Go 1.22.3 et supérieur — corrigées.
Que doivent faire les développeurs ?
L'équipe Go a déjà publié des correctifs dans les versions 1.22.3 et 1.21.10. Il est fortement recommandé aux développeurs de :
- Mettre à jour immédiatement le compilateur Go vers la dernière version stable (1.22.3 ou 1.21.10+).
- Recompiler tous les fichiers binaires de vos applications avec la nouvelle version du compilateur.
- Vérifier la configuration des pipelines CI/CD — assurez-vous que la build utilise la version à jour de Go.
- Tester les applications après la mise à jour pour détecter d'éventuelles régressions.
Impact sur l'écosystème
Cette vulnérabilité est particulièrement dangereuse pour les microservices à forte charge, les passerelles API et les serveurs proxy écrits en Go. L'attaque peut être menée avec un minimum de ressources de la part de l'attaquant, ce qui la rend attrayante pour les attaques massives contre les infrastructures cloud.
Nous recommandons également de désactiver temporairement le support HTTP/2 sur les serveurs critiques si la mise à jour ne peut pas être effectuée immédiatement. Cela peut être fait via le paramètre Server.TLSNextProto.
Suivez les mises à jour sur le site officiel de Go et dans le dépôt GitHub. La sécurité de vos projets est entre vos mains !