OpenSSL Heartbleed vulnerability (CVE-2014-0160)

OpenSSL Heartbleed vulnerability (CVE-2014-0160)

Attardons nous quelques instants sur la vulnérabilité majeure découverte dans OpenSSL et qui occupe massivement le devant de la scène de la sécurité informatique depuis le début de la semaine. OpenSSL est une bibliothèque logicielle sur laquelle sont basés nombre de composants serveurs utilisant des communications sécurisées, c’est pourquoi toute faiblesse ou vulnérabilité trouvée sur celle-ci est lourd de conséquences…

Découverte par Neel Mehta de Google Security et datée du 07 Apr 2014, cette vulnérabilité est estampillée CVE-2014-0160 et porte le nom de Heartbleed bug vulnerability.

heartbleed

Le protocole SSL/TLS a toujours été assimilé dans l’esprit de tout un chacun à une forteresse imprenable. Dernier bastion de défense contre les méchants pirates qui tentent par tous les moyens de déchiffrer les communications des gentils et dociles web-consommateurs que nous sommes… Cette vulnérabilité nous rappelle que nul n’est totalement à l’abri et que tout méchanisme de sécurité possède des trous inhérents à son implémentation qui, avec le temps, seront découverts à condition que l’acharnement de l’attaquant et les moyens mis en oeuvre soient suffisants.

La vulnérabilité affecte les versions d’OpenSSL 1.0.1 à 1.0.1f et 1.0.2-beta à 1.0.2-beta1 d’OpenSSL et permet de récupérer 64KB de la mémoire distante du processus du serveur utilisant OpenSSL. Cette mémoire peut contenir diverses choses intéressantes comme, la clé privé du serveur, les clés des sessions SSL/TLS ou encore les requêtes/réponses des requêtes HTTPS avec éventuellement les identifiants de connexion à l’application sous-jacentes ou les cookies de sessions.

Lorsque l’on est dans un jour de chance, on peut même récupérer l’ensemble de ces informations dans un seul morceau de 64KB…

dump

 

L’extension heartbeat d’OpenSSL est décrite dans la RFC 6520. En résumé, c’est une fonctionnalité de type keepalive, qui de manière analogue aux HTTP keepalive et TCP keepalive, permet de maintenir une communication ouverte entre deux hôtes malgré l’arrêt des échanges d’informations.

 

Un patch d’OpenSSL vers la version 1.0.1g corrigeant le problème a été écrit par Adam Langley et Bodo Moeller.

Il est conseillé de passer dans cette version 1.0.1g. Pour ceux qui n’ont pas la possibilité d’upgrader immédiatement, il faut recompiler OpenSSL avec l’option OPENSSL_NO_HEARTBEATS.

Ce patch rajoute le bound check  manquant qui est à l’origine du buffer-overflow ayant permis d’exploiter cette faille.

Heartbeat patch

diff

Une nouvelle fois, c’est le récurrent problème de débordement de tampon qui est à l’origine du problème. Le langage C, dans lequel est développé OpenSSL, ne possède en effet pas de méchanisme de vérification de la mémoire. Contrairement à Java dont les aficionados ne vont sûrement pas manquer de surfer sur la vague du Heartbleed.