Des versions correctives de la bibliothèque cryptographique OpenSSL 3.0.1 et 1.1.1m sont disponibles. La version 3.0.1 a corrigé la vulnérabilité (CVE-2021-4044) et une douzaine de bogues ont été corrigés dans les deux versions.
La vulnérabilité existe dans l'implémentation des clients SSL/TLS et est liée au fait que la bibliothèque libssl gère de manière incorrecte les codes d'erreur négatifs renvoyés par la fonction X509_verify_cert(), appelée pour vérifier le certificat transmis au client par le serveur. Des codes négatifs sont renvoyés lorsque des erreurs internes se produisent, par exemple, si la mémoire ne peut pas être allouée au tampon. Si une telle erreur est renvoyée, les appels ultérieurs aux fonctions d'E/S telles que SSL_connect() et SSL_do_handshake() renverront un échec et un code d'erreur SSL_ERROR_WANT_RETRY_VERIFY, qui ne doit être renvoyé que si l'application a précédemment effectué un appel à SSL_CTX_set_cert_verify_callback().
Étant donné que la plupart des applications n'appellent pas SSL_CTX_set_cert_verify_callback(), l'occurrence d'une erreur SSL_ERROR_WANT_RETRY_VERIFY peut être mal interprétée et entraîner un blocage, une boucle ou une autre réponse incorrecte. Le problème est le plus dangereux en combinaison avec un autre bogue dans OpenSSL 3.0, qui provoque une erreur interne lors du traitement des certificats dans X509_verify_cert() sans l'extension "Subject Alternative Name", mais avec des liaisons de noms dans les restrictions d'utilisation. Dans ce cas, l'attaque peut entraîner des anomalies spécifiques à l'application dans la gestion des certificats et l'établissement de la session TLS.
Source: opennet.ru
