L'une des vulnérabilités les plus connues du milieu des années 2010 s'appelait « Heartbleed ». Heartbleed était particulièrement grave car il affectait le logiciel « OpenSSL », la principale bibliothèque cryptographique pour les connexions HTTPS, qui sont très largement utilisées. Pour aggraver les choses, la vulnérabilité était présente dans OpenSSL depuis plus de deux ans avant d'être découverte, publiée et corrigée, ce qui signifiait que de nombreuses personnes utilisaient une version vulnérable.
Heartbleed était une vulnérabilité de fuite de données dans l'extension Heartbeat qui, lorsqu'elle était exploitée, faisait fuir les données de la RAM du serveur vers le client. L'extension heartbeat est utilisée pour maintenir une connexion entre le serveur Web et le client sans effectuer une demande de page normale.
Dans le cas d'OpenSSL, le client envoie un message au serveur et informe le serveur de la durée du message, jusqu'à 64 Ko. Le serveur est alors censé renvoyer le même message. Mais surtout, le serveur n'a pas vérifié que le message était aussi long que le client le prétendait. Cela signifiait qu'un client pouvait envoyer un message de 10 Ko, prétendre qu'il était de 64 Ko et obtenir une réponse de 64 Ko, les 54 Ko supplémentaires étant constitués des 54 Ko de RAM suivants, quelles que soient les données qui y étaient stockées. Ce processus est bien visualisé par la bande dessinée XKCD #1354 .
![Qu'est-ce que la vulnérabilité Heartbleed ? Qu'est-ce que la vulnérabilité Heartbleed ?](https://cloudo3.com/resources/images/image-cloudo3db-0725100019016.jpg)
Image reproduite avec l'aimable autorisation de xkcd.com .
En faisant beaucoup de petites requêtes de pulsation et en prétendant qu'elles étaient volumineuses, un attaquant pouvait se faire une idée de la plupart de la RAM du serveur en rassemblant les réponses. Les données stockées dans la RAM qui pourraient être divulguées comprennent les clés de chiffrement, les certificats HTTPS, ainsi que les données POST non chiffrées telles que les noms d'utilisateur et les mots de passe.
Remarque : c'est moins connu mais le protocole heartbeat et l'exploit ont également fonctionné dans l'autre sens. Un serveur malveillant pourrait avoir été configuré pour lire jusqu'à 64 Ko de mémoire utilisateur par requête de pulsation.
Le problème a été découvert par plusieurs chercheurs en sécurité de manière indépendante le 1er avril 2014 et a été divulgué en privé à OpenSSL afin qu'un correctif puisse être créé. Le bogue a été rendu public lorsque le correctif a été publié le 7 avril 2014. La meilleure solution pour résoudre le problème était d'appliquer le correctif, mais il était également possible de résoudre le problème en désactivant l'extension de pulsation si le correctif immédiat n'était pas option.
Malheureusement, bien que l'exploit soit public et généralement bien connu, de nombreux sites Web n'ont toujours pas été mis à jour immédiatement, la vulnérabilité étant encore parfois découverte même des années plus tard. Cela a conduit à l'utilisation d'un certain nombre d'instances de l'exploit pour accéder à des comptes ou divulguer des données.