Skip to content
Rejoignez Censys le 10 septembre 2024 pour notre atelier sur la chasse aux menaces à San Francisco, CA | Inscrivez-vous maintenant
Blogs

Vulnérabilité critique dans OpenSSL !

Liens rapides

**Mises à jour**

2022-11-01


Les détails de deux vulnérabilités de haute sévérité corrigées dans la version 3.0.7 d'OpenSSL sont maintenant disponibles(CVE-2022-3786, CVE-2022-3602). Il s'agit dans les deux cas de débordements de mémoire tampon dans le processus de vérification des certificats X.509, "en particulier dans la vérification des contraintes de nom ".

Le premier, CVE-2022-3786, permet à un acteur de la menace de "créer une adresse électronique malveillante dans un certificat pour déborder un nombre arbitraire d'octets contenant le caractère `.`". La seconde, CVE-2022-3602, est similaire, mais dans ce cas, un acteur de la menace pourrait "fabriquer un courriel malveillant pour faire déborder quatre octets contrôlés par l'attaquant sur la pile". Cela pourrait entraîner un déni de service ou une exécution de code à distance.

Bien que les serveurs et les clients OpenSSL soient vulnérables à cette attaque, il est plus probable qu'un attaquant exploite un client qu'un client n'exploite un serveur. Mais dans les serveurs configurés avec une authentification bidirectionnelle où les deux côtés de la connexion échangent et vérifient les certificats, il est possible qu'un client exploite un serveur en envoyant un certificat malveillant ou malformé.

Et bien que ce type de configuration soit rare, il n'est pas exclu. Mais même si l'attaque réussit, de nombreuses autres variables, telles que les systèmes anti-débordement de mémoire tampon comme les canaris de pile et l'ASLR (Address Space Layout Randomization), entrent en ligne de compte pour contrecarrer l'exploitation.

En raison de cette complexité et des mesures de protection du système, les développeurs d'OpenSSL ont réduit la criticité de la CVE de CRITIQUE à ÉLEVÉE.

Si vous utilisez les versions 3.0.0-3.0.6 d'OpenSSL , nous vous recommandons de passer à la version la plus récente d'OpenSSL (actuellement 3.0.7) afin de vous protéger contre les attaques potentielles.


Introduction

OpenSSL est une bibliothèque logicielle qui permet aux applications de communiquer en toute sécurité avec d'autres applications en réseau à l'aide d'un large éventail de fonctions cryptographiques. Cette bibliothèque est largement déployée sur l'internet et constitue un élément essentiel de l'infrastructure de nombreuses organisations. C'est pourquoi l'équipe d'OpenSSL a averti tous les utilisateurs qu'une vulnérabilité critique avait été identifiée dans la base de code d'OpenSSL mardi dernier. Il s'agit d'une affaire importante, car la dernière fois que nous avons eu un bogue d'une telle criticité, c'était en 2014 avec la désormais célèbre vulnérabilité Heartbleed(CVE-2014-0160), qui nous hante encore aujourd'hui.

Bien que nous ne disposions pas de détails spécifiques sur cette vulnérabilité, plusieurs sources ont affirmé qu'elle n'affectait que la version 3.0.0 d'OpenSSL et les versions supérieures (les logiciels qui utilisent OpenSSL 1.0.2 ou 1.1.1 ne sont pas concernés). L'arbre 3.x est un ajout relativement récent à la gamme OpenSSL, qui a été publié en septembre 2021. Étant donné que cette version n'est disponible que depuis peu de temps, l'adoption généralisée semble avoir été minime. Cependant, une fois que cette vulnérabilité aura été rendue publique et que les nouvelles versions seront disponibles, les administrateurs utilisant la version 3.0.0 ou une version plus récente devront immédiatement passer à la version corrigée 3.0.7.

Identifier les versions vulnérables d'OpenSSL

Il est encore difficile de déterminer si un hôte est vulnérable à ce bogue non publié, car nous ne disposons pas de tous les détails. Cependant, nous pouvons examiner les services sur Internet qui annoncent la version spécifique d'OpenSSL qu'ils utilisent pour avoir une idée générale de ce qui sera vulnérable. Nous ne connaissons actuellement aucune technique autre que la vérification des en-têtes HTTP pour déterminer la version exacte d'OpenSSL utilisée, mais nous continuons à étudier d'autres solutions. Cela signifie que bien que nous puissions voir de nombreux serveurs potentiellement vulnérables, nous ne les connaissons pas tous, et les statistiques présentées dans cet article sont les limites inférieures de ce qui existe.

Heureusement, certains serveurs Internet, comme Apache, fournissent des informations qui nous permettent de savoir quelles versions spécifiques d'OpenSSL sont utilisées. Par exemple, dans la sortie suivante, nous voyons qu'Apache a ajouté tous ses modules chargés dans la sortie de l'en-tête "Server". L'un d'eux est la version d'OpenSSL sur laquelle le module mod_ssl a été compilé :

$ curl -vvv https://127.0.0.1/ 
* Essai sur 127.0.0.1:443...
* Connecté à 127.0.0.1 (127.0.0.1) port 443 (#0)
> GET / HTTP/1.1
> Hôte : 127.0.0.1
> User-Agent : curl/7.81.0
> Accept : */*
>
< HTTP/1.1 200 OK
< Date : Mon, 31 Oct 2022 21:27:29 GMT
< Server : Apache/2.4.53 (Win64) OpenSSL/1.1.1n PHP/8.0.18
< Content-Length : 1436
< Content-Type : text/html;charset=UTF-8

Le nombre d'hôtes utilisant la version 3.0 d'OpenSSL a augmenté lentement au cours des derniers mois. Le graphique ci-dessous montre qu'au début du mois d'août, seuls quelque 3 000 hôtes utilisaient cette nouvelle version, mais qu'au 30 octobre 2022, ce nombre avait plus que doublé pour atteindre plus de 7 000 hôtes.

Au 30 octobre 2022, 1 793 111 hôtes uniques ont un ou plusieurs services diffusant qu'ils utilisent OpenSSL. Parmi ceux-ci, seuls 7 062 (0,4 %) hôtes utilisent une version supérieure ou égale à la version 3.0.0. La version d'OpenSSL la plus déployée dans la plage de vulnérabilité est la 3.0.1, avec 3 567 hôtes IP uniques, et la version 3.0.5, avec 2 759 hôtes.

Avant d'aller plus loin, il convient de noter que quelques serveurs sur l'internet font la publicité de versions d'OpenSSL qui n'existent pas dans le monde réel.

 

Deux hôtes affirment que la version d'OpenSSL qu'ils utilisent est 3.2.0-dev, une version qui n'existe pas.
Trois hôtes affichent une bannière indiquant que la version 3.1.0-dev d'OpenSSL est en cours d'exécution, alors qu'elle n'existe pas non plus.

Cette pratique est souvent utilisée pour masquer la version réelle du logiciel en cours d'exécution pour des raisons de confidentialité et de sécurité. Mais en plus de ces numéros de version invalides, un hébergeur a attiré notre attention, utilisant la version 3.0.5 pendant plusieurs semaines, puis commençant soudainement à annoncer la version 3.0.7-dev le 18 octobre. Ce qui est intéressant à propos de la version 3.0.7, c'est que ce numéro de version est le premier à inclure le correctif pour cette vulnérabilité à venir.

Nous ne savons pas si cet hôte dit la vérité sur sa version d'OpenSSL, mais le calendrier général semble correspondre au moment où cette vulnérabilité a pu être corrigée et déployée sur un serveur public. S'agit-il d'un serveur de développement OpenSSL ? Appartient-il à une organisation qui a eu accès à la version corrigée d'OpenSSL avant le grand public ? Ou s'agit-il simplement d'un serveur qui prétend être ce qu'il n'est pas ?

Le tableau ci-dessous reprend toutes les versions d'OpenSSL que nous avons pu identifier et qui sont supérieures ou égales à la version 3.0.0, ainsi que les vingt premiers pays où ces versions sont installées.

Répartition des versions Top 20 des pays avec Openssl >=3.0.0
Version d'OpenSSL Nombre d'hôtes
3.0.1 3,567
3.0.5 2,759
3.0.2 413
3.0.3 167
3.0.0 73
3.0.6 24
3.0.4 24
3.0.0-alpha9-dev 13
3.0.0-dev 11
3.1.0-dev 3
3.2.0-dev 2
3.0.0-alpha7-dev 2
3.0.0-alpha3-dev 2
3.0.0-alpha6 1
3.0.0-alpha17-dev 1
3.0.7-dev 1
Pays Nombre d'hôtes
États-Unis 2,321
Allemagne 693
Japon 552
Chine 424
Tchécoslovaquie 353
Royaume-Uni 287
France 204
Russie 188
Canada 177
Pays-Bas 167
Italie 114
Pologne 111
Australie 105
Singapour 104
Inde 80
Finlande 79
Hong Kong 78
Brésil 62
Taïwan 57

L'identification des hôtes OpenSSL 3.x à l'aide de Censys peut se faire en utilisant l'identifiant CPE : "services.software.uniform_resource_identifier='cpe:2.3:a:*:openssl:3.*'". Censys Les clients ASM peuvent utiliser le terme de recherche d'inventaire : "host.services.software.uniform_resource_identifier="cpe:2.3:a:*:openssl:3.*"".

En outre, nous avons créé un tableau de bord interactif pour signaler les serveurs identifiés comme utilisant une version d'OpenSSL supérieure ou égale à 3.0.0. Au fur et à mesure que de nouvelles informations seront disponibles sur la vulnérabilité en question, nous mettrons à jour cet article et ajouterons de nouvelles fonctionnalités au tableau de bord.

Solutions de gestion de la surface d'attaque
En savoir plus