Il y a huit corrections de bogues numérotées CVE en tout, et vous ne serez probablement pas surpris d’apprendre que sept d’entre elles ont été causées par une mauvaise gestion de la mémoire.
Comme OpenSSH, dont nous avons parlé à la fin de la semaine dernière, OpenSSL est écrit en C, et la gestion de l’allocation et de la désallocation de la mémoire dans les programmes en C implique généralement beaucoup de « Do it yourself ».
Étant donné que la fausse adresse mémoire n’existe pas réellement, ce type de bogue ne corrompt généralement rien – c’est comme essayer d’escroquer quelqu’un en envoyant une fausse assignation ou une fausse facture à une propriété qui n’existe pas.
Comme dans le cas d’un « use-after-free », il peut arriver que deux parties du programme fassent confiance au même bloc de mémoire, chaque partie ignorant que les données qu’elle s’attend à voir présentes ont pu être malicieusement remplacées par l’autre partie.
Comme l’admet l’équipe OpenSSL, en ce qui concerne le bogue de confusion de type « High severity » ci-dessus, « lorsque la vérification de la liste de révocation des certificats est activée, cette vulnérabilité peut permettre à un attaquant de passer des pointeurs arbitraires à un appel memcmp(), ce qui lui permet de lire le contenu de la mémoire ».
En cryptographie, il faut veiller à ce que toutes les tâches connexes, telles que la recherche de données en mémoire, la comparaison de chaînes de texte, l’exécution d’opérations arithmétiques, etc., prennent le même temps, même si cela signifie qu’il faut ralentir les cas « faciles » au lieu d’essayer de gagner du temps en faisant tout aussi rapidement que possible.