Une nouvelle menace a été dévoilée par des chercheurs, qui concerne une fois de plus SSL et OpenSSL, dont on pensait pourtant qu’ils nous laisseraient un peu tranquilles après les malencontreuses affaires du Heartbleed de 2015 et de POODLE.

Et bien non, cette fois c’est encore pire.

Selon ces chercheurs, les serveurs HTTPS basés sur certaines versions SSLv2, comportent des failles importantes, qui permettraient à un attaquant de « casser » les protections cryptographiques (SSv2 a été abandonné en 2011 par l’IETF).

Cette attaque (possible) porte le nom de DROWN (Decrypting RSA with Obsolete and Weakened eNcryption), attaque potentielle cependant, puisqu’à ce jour, il ne semble pas que la faille ait déjà été exploitée par des malendrins.

Les machines vulnérables sont celles (entre autres) qui utilisent l’API OpenSSL 1.0.2 (ou avant), qui doivent donc impérativement passer en 1.0.2g ou 1.0.1s.

Une autre catégorie de serveurs est concernée, celle qui utilise IIS de Microsoft, de même que celles qui utilisent la version cryptographique NSS (Network Security Services) avant la version 3.13 (qui a aujourd’hui 4 ans).

Outre ces niveaux de librairies, pour qu’une attaque puisse se produire, il faut que le serveur vulnérable partage ses clés.

 

Décryptage de sessions TLS

La faille DROWN permet à un attaquent de « décrypter » les sessions TLS entre des navigateurs à jour et des serveurs, par l’envoi de sondes vers un serveur sur lequel est monté SSLv2 et qui utilise la même clé privée. On va donc chercher une clé sur un serveur vulnérable pour en attaquer un autre.

Pour cela il devrait normalement initialiser un grand nombre d’échanges SSL et analysera les codes d’erreurs retournés par le serveur pour décrypter la ClientKeyExchange du serveur et trouver le « Pre-Master Secret », qui est au cœur des échanges SSL.

Pour y arriver, il lui faudrait lancer 40.000 connexions HTTPS et effecteur 2 50 calculs de manière à décrypter une seule connexion TLS parmi 900. Ce qui évidemment est difficilement concevable.

Les connexions pourraient utiliser n’importe quelle version SSL/TLS à condition qu’elles exploitent la même méthode d’échange de clés RSA.

Dans le cadre de DROWN, le décryptage des sessions TLS pourra se faire de 2 manières différentes.

Soit on joue sur la faiblesse native de SSLv2 sur l’exportation cryptographique de clés (le chiffrement des clés RSA se faisait sur 40 bits), ce qui prendrait de l’ordre de 8 heures et coûterait 440 $ selon les chercheurs. Soit on vise les serveurs qui utilisent une version ancienne de SSLv2, l’attaque prenant moins d’une minute et ne nécessitant qu’un simple PC.

En résumé, pour qu’un serveur soit vulnérable via la faiblesse DROWN, il faudra qu’il remplisse l’une des 2 conditions

  • accepter les sessions SSLv2 (17 % des serveurs)
  • partager le même certificat avec un autre serveur, qui lui supporte SSLv2 (16 %).

Ce qui correspondra bien à un parc potentiel de 12 millions de serveurs.

Il ne reste plus qu’à compter les points…