Vulnérabilité dans OpenSSL

Date de publication :

CVE-2020-1971[Score CVSS v3 : 5.9] : Une vulnérabilité a été découverte dans OpenSSL. Elle est due à une mauvaise gestion des certificats contenant une entrée dans le type de nom EDIPartyName.

Plus précisément, les versions d’OpenSSL vulnérables ne peuvent pas analyser ou construire des codages corrects du type de nom EDIPartyName. Il est toutefois possible de construire un EDIPartyName malformé que l'analyseur d'OpenSSL acceptera tout de même. Un tel certificat, lorsqu’il est accepté, provoque des comportements erratiques dans le logiciel, notamment un déni de service.

Les certificats pouvant être des vecteurs d'exploitation de la vulnérabilité sont les certificats de type x509. 

Le champ x509 GeneralName est un type générique permettant de représenter différents types de noms. L'un d'entre eux est connu sous le nom de EDIPartyName. OpenSSL fournit une fonction GENERAL_NAME_cmp qui compare différentes instances d'un GeneralName pour voir si elles sont égales ou non. Cette fonction présente un comportement erratique lorsque les deux GeneralNames contiennent un EDIPartyName. Une déréférence de pointeur NULL et un plantage peuvent se produire, entraînant ainsi une possible attaque par déni de service.

OpenSSL lui-même utilise la fonction GENERAL_NAME_cmp pour deux raisons :

1) Comparer les noms des points de distribution de listes de certificats révoqués entre une liste de certificats révoqués disponible et le point de distribution de listes de certificats révoqués intégré dans un certificat X509.

2) Lors de la vérification de la concordance entre le signataire d'un jeton de réponse et l'horodatage du nom de l'autorité (exposé via les fonctions API TS_RESP_verify_response et TS_RESP_verify_token).

L'exploitation de cette vulnérabilité consiste en la falsification des deux éléments comparés en faisant vérifier (à un client ou à un serveur) un certificat malveillant par rapport à une liste de certificats révoqués malveillante. Un attaquant distant et non-authentifié peut utiliser ce mécanisme afin de créer un déni de service.

Il est avisé de noter que certaines applications téléchargent automatiquement les listes de certificats révoquées en fonction d'une URL intégrée dans les certificats. Cette vérification a lieu avant que les signatures sur le certificat et la liste de certificats révoquées ne soient vérifiées. Les outils s_server, s_client et verify d'OpenSSL prennent en charge l'option "-crl_download" qui implémente le téléchargement automatique des listes de certificats révoquées. Il a été démontré que cette attaque fonctionne contre ces outils.

Informations

La faille est activement exploitée :

Un correctif existe :

Une mesure de contournement existe :

Risques

Risques

  • Déni de service

Criticité

  • Score CVSS v3 : 5.9

Existence d’un code d’exploitation

  • Il n’existe pas de code d'exploitation connu publiquement à l’heure actuelle. Néanmoins l’exploitation de cette vulnérabilité ne présente pas une grande difficulté technique.

Composants vulnérables

  • OpenSSL versions 1.1.1, 1.0.2 et antérieures

CVE

Solutions ou recommandations

Mise en place de correctifs de sécurité

  • Mettre à jour OpenSSL vers la version 1.1.1i

  • Les versions 1.1.0 et 1.0.2 ne sont plus supportées par OpenSSL, il est vivement conseillé de télécharger et d’installer la version 1.1.1i.

Solution de contournement

  • Il n’existe pas de solutions de contournement à l’heure actuelle.