CVE-2024-45337
Abus de connection.serverAuthenticate pouvant entraîner un contournement de l'autorisation dans golang.org/x/crypto
- Publié
- 11 déc. 2024
- Mise à jour
- 18 févr. 2025
- Attribution de CNA
- Go
- Preuve observée
- 8 août 2026
CVSS primaire
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:NFaible · 30 prochains jours
- Percentile
- 87,5 %
- Date du modèle
- 21 sept. 2026
EPSS est une estimation statistique, et non une certitude ou une mesure d'impact. Combinez-le avec CVSS, le statut KEV, l'exposition et votre environnement.
Résumé
Applications et bibliothèques qui utilisent mal `connection.serverAuthenticate` (via le champ de rappel `ServerConfig.PublicKeyCallback`) peuvent être vulnérables à un contournement d'autorisation. La documentation de `ServerConfig.PublicKeyCallback` indique qu'« un appel à cette fonction ne garantit pas que la clé proposée est effectivement utilisée pour l'authentification ». Plus précisément, le protocole SSH permet aux clients de demander si une clé publique est acceptable avant de prouver qu'ils contrôlent la clé privée correspondante. `PublicKeyCallback` peut être appelé avec plusieurs clés, et l'ordre dans lequel les clés ont été fournies ne peut pas être utilisé pour déduire quelle clé le client a utilisée avec succès pour s'authentifier, le cas échéant. Certaines applications, qui stockent la ou les clés transmises à `PublicKeyCallback` (ou des informations dérivées) et prennent des décisions liées à la sécurité sur cette base une fois la connexion établie, peuvent faire des hypothèses incorrectes. Par exemple, un attaquant peut envoyer les clés publiques A et B, puis s'authentifier avec A. `PublicKeyCallback` ne serait appelé que deux fois, d'abord avec A puis avec B. Une application vulnérable pourrait alors prendre des décisions d'autorisation basées sur la clé B pour laquelle l'attaquant ne contrôle pas réellement la clé privée. Étant donné que cette API est largement mal utilisée, en tant qu'atténuation partielle, golang.org/x/[email protected] impose la propriété selon laquelle, lors d'une authentification réussie par clé publique, la dernière clé transmise à `ServerConfig.PublicKeyCallback` sera la clé utilisée pour authentifier la connexion. `PublicKeyCallback` sera désormais appelé plusieurs fois avec la même clé, si nécessaire. Notez que le client peut toujours ne pas contrôler la dernière clé transmise à `PublicKeyCallback` si la connexion est ensuite authentifiée avec une méthode différente, telle que `PasswordCallback`, `KeyboardInteractiveCallback` ou `NoClientAuth`. Les utilisateurs devraient utiliser le champ `Extensions` de la valeur de retour `Permissions` des différents rappels d'authentification pour enregistrer les données associées à la tentative d'authentification au lieu de référencer un état externe. Une fois la connexion établie, l'état correspondant à la tentative d'authentification réussie peut être récupéré via le champ `ServerConn.Permissions`. Notez que certaines bibliothèques tierces utilisent mal le type `Permissions` en le partageant entre les tentatives d'authentification ; les utilisateurs de bibliothèques tierces devraient se référer aux projets concernés pour obtenir des conseils.
Utilisation responsable
Utilisez les informations de vulnérabilité uniquement sur les systèmes que vous possédez ou que vous êtes autorisé à tester. Kitploit renvoie aux métadonnées de la recherche publique et ne stocke pas de code d'exploitation ni de charges utiles malveillantes.