OpenSSL, la librairie open source de chiffrement des connexions web SSL ou TLS, est loin d'être épargnée par les failles de sécurité. Depuis Heartbleed en 2014, elle est en effet régulièrement mise à jour pour éviter les compromissions comme cela avait par exemple été le cas en mars dernier. Le groupe en charge de sa maintenance vient ainsi d'alerter sur un bug dans sa fonction BN_mod_sqrt utilisée en particulier lors de l'analyse des certificats contenant des clés publiques à courbe elliptique (ECC). « Étant donné que l'analyse du certificat a lieu avant la vérification de la signature du certificat, tout processus qui analyse un certificat externe peut ainsi faire l'objet d'une attaque par déni de service. Une boucle infinie peut aussi se produire lors de l'analyse des clés privées conçues car elles peuvent contenir des paramètres de courbe elliptique », a prévenu l'OpenSSL Project.
Identifiée en tant que CVE-2022-0778, cette faille est d'un niveau de sévérité élevé et présente un score CVSS de 7.5. Elle a été signalée le 24 février 2022 par Tavis Ormandy, chercheur en sécurité de l'équipe Project Zero de Google. Le correctif a été développé par David Benjamin, ingénieur logiciel chez Google et Tomáš Mráz un des développeurs pour OpenSSL.
Des scénarios d'exploit variés
Plusieurs scénarios d'exploits sont précisés et incluent aussi bien des clients TLS consommant des certificats serveur, des serveurs TLS consommant des certificats clients que des hébergeurs qui récupèrent des certificats ou des clés privées de leurs clients, ou encore des autorités de certification qui analysent des demandes de certification de leurs abonnés. Et plus globalement tout ce qui permet d'analyser les paramètres de courbe elliptique relatifs au format ASN.1 et aussi toutes les autres applications utilisant la fonction BN_mod_sqrt permettant à un attaquant de contrôler des valeurs de paramètres vulnérables.
La CVE-2022-0778 concerne les versions 1.0.2, 1.1.1 et 3.0 d'OpenSSL et ont été corrigées le 15 mars 2022. Les utilisateurs de la v1.0.2 doivent passer à la version 1.0.2zd (clients de support premium uniquement), ceux de la v1.1.1 monter vers la 1.1.1n et ceux de la v3.0 installer la 3.0.2. « Dans la version OpenSSL 1.0.2, la clé publique n'est pas analysée lors du scan du certificat rendant légèrement plus difficile le déclenchement de la boucle infinie », précise par ailleurs OpenSSL Project. « Cependant toute opération nécessitant la clé publique du certificat déclenchera la boucle infinie. En particulier le l'attaquant peut utiliser un certificat auto-signé pour déclencher la boucle pendant la vérification de la signature du certificat »,