Une version corrective d'OpenSSH 9.9p2 est disponible, qui corrige deux vulnérabilités découvertes par Qualys. Un exemple d'utilisation de ces vulnérabilités pour réaliser une attaque MITM a été démontré, permettant de rediriger le trafic vers un serveur fictif lors de la tentative de connexion d'un client à un serveur SSH, contournant la vérification des clés hôtes et créant l'illusion pour le client d'être connecté au serveur souhaité (le client SSH acceptera la clé hôte du serveur fictif au lieu de la clé du serveur légitime).
La première vulnérabilité (CVE-2025-26465) résulte d'une erreur logique dans l'outil ssh, permettant de contourner la vérification de l'identité du serveur et de réaliser une attaque MITM. Le problème se manifeste à partir de la version OpenSSH 6.8p1 (décembre 2014) dans les configurations où l'option VerifyHostKeyDNS est activée. Dans la version par défaut d'OpenSSH, cette option est désactivée, mais elle a été activée dans les réglages de ssh sur FreeBSD jusqu'en mars 2023.
Le problème réside dans le code de la fonction verify_host_key_callback(), où, lors de l'appel de la fonction verify_host_key(), seuls le code d'erreur «-1» est vérifiés, tandis que d'autres codes, comme «-2», sont ignorés. En conséquence, la fonction verify_host_key_callback() peut renvoyer un code réussi «0» malgré le retour d'erreur «-2» par la fonction verify_host_key(). Le code d'erreur «-2» est retourné par la fonction verify_host_key() lorsqu'il y a un manque de mémoire. Si l'on crée des conditions rendant impossible l'allocation de mémoire dans la fonction verify_host_key(), SSH considérera que la clé hôte a été vérifiée avec succès. Pour créer de telles conditions, le serveur SSH de l'attaquant, vers lequel le client est redirigé, retourne une clé hôte de taille maximale (256 Ko), tout en exploitant une fuite de mémoire côté client ssh.
Les conditions pour créer une fuite de mémoire sont atteintes grâce à la deuxième vulnérabilité (CVE-2025-26466), affectant à la fois le client ssh et serveur sshd, et exploité sans authentification. La vulnérabilité permet d'épuiser la mémoire disponible du processus et de créer une forte charge sur le CPU en envoyant un grand nombre de paquets SSH2_MSG_PING. Dans le gestionnaire de paquets SSH2_MSG_PING, il y a une fuite de mémoire, apparue à partir de la version OpenSSH 9.5p1 (août 2023). La fuite se produit parce qu'un tampon de 256 octets est alloué pour chaque paquet PING de 16 octets reçu, mais ce tampon n'est libéré qu'après l'achèvement de l'accord sur les clés. Comme solution de contournement pour la protection, il est suggéré de configurer des limites à l'aide des directives LoginGraceTime, MaxStartups et PerSourcePenalties.
Source : opennet.ru
