Une nouvelle technique pour tester la sécurité des protocoles cryptographiques tels que TLS
15 mars 2023
Dans l’objectif d’améliorer la sécurité des systèmes informatiques, des chercheurs de l’équipe PESTO ont élaboré une technique « innovante et efficace » pour chercher des vulnérabilités dans les implémentations de TLS, un protocole essentiel pour la sécurisation de nos données. Leur méthode a fait ses preuves avec la découverte de quatre nouvelles failles dont une critique.
Il est la raison d’être du « s » qui suit le « http » dans la barre d’adresse de nos navigateurs ainsi que du petit cadenas qui s’affiche à proximité. Le protocole TLS est l’un des protocoles les plus répandus au monde pour chiffrer les échanges sur les réseaux informatiques, y compris pour l’Internet des objets (IoT). Utilisé depuis les années 1990 par les serveurs web, TLS permet d’établir une connexion sécurisée entre deux points afin d’assurer la confidentialité et l’intégrité des données qui transitent : identifiants, mots de passe, numéros de cartes bancaires et de téléphones, e-mails, etc. Ce protocole n’est pour autant pas invulnérable et fait l’objet de multiples attaques. Des failles de sécurité plus ou moins critiques sont parfois détectées comme ce fut le cas avec la faille Heartbleed médiatisée en 2014.
Un 1er pont entre deux mondes : la vérification formelle et le fuzzing
Dans l’objectif « d’augmenter significativement les capacités et la portée de détection des algorithmes de test », Lucca Hirschi et Steve Kremer, chercheurs Inria de l’équipe PESTO, commune à Inria et au Loria, ont mis au point une « technique innovante et efficace » pour identifier des failles dans le protocole TLS. Menés en collaboration avec Max Ammann, ancien étudiant en master au Loria devenu ingénieur sécurité, ces travaux s’inscrivent dans le cadre du projet ProtoFuzz(Soutenu dans le cadre de l’appel à projets générique 2022 de l’ANR en tant que projet Jeunes Chercheuses et Jeunes Chercheurs (JCJC)). Ils sont le fruit d’une combinaison de deux approches : « Nous sommes parmi les premiers à créer un pont entre la vérification formelle de protocoles cryptographiques – sujet au cœur des recherches de PESTO – et le fuzzing, une technique efficace qui permet de tester l’implémentation, par exemple d’un protocole tel que TLS, détaille Lucca Hirschi. Cette dernière consiste à générer des entrées aléatoires qui sont ensuite exécutées sur le programme cible dont le comportement est observé et alimente une boucle de rétroaction qui permet de prioriser les tests intéressants » complète-t-il. Les chercheurs se sont par ailleurs appuyés sur un modèle formel d’attaquant baptisé « DY », ou « Dolev-Yao », du nom de ses créateurs. D’où l’appellation de leur nouvelle technique : « DY model-guided fuzzing ».
Des failles de différentes sévérités dans wolfSSL
Le protocole TLS a plusieurs implémentations, c’est-à-dire que différents programmes implémentant ce protocole ont été écrits en langage informatique. Les chercheurs se sont intéressés à deux d’entre elles : « OpenSSL, très utilisée, et wolfSSL, une version conçue principalement pour les appareils embarqués, à faible capacité de calcul. » Résultats de leurs tests ? Aucune nouvelle vulnérabilité identifiée dans OpenSSL mais quatre dans wolfSSL, notamment une jugée critique avec un score de sévérité de 9,1 sur 10 selon le système de notation Common Vulnerability Scoring System (CVSS). « Cette faille pouvait permettre de rendre des serveurs inopérants et de potentiellement faire fuiter des informations sensibles ailleurs sur le serveur, confie Lucca Hirschi. Une autre vulnérabilité permettait des attaques de type “buffer overflow”. Ce bug dans l’implémentation côté serveur présentait un potentiel de Remote code execution (RCE) : elle aurait éventuellement pu permettre à un attaquant de réécrire l’espace mémoire pour exécuter du code à distance. »
Les chercheurs ont transmis leur rapport de vulnérabilité aux équipes chargées du développement de wolfSSL le 12 août 2022, selon le principe éthique de « Responsible Disclosure » (trad. : divulgation responsable) : les parties prenantes ont convenu d’un délai de trois mois pour rechercher ensemble des solutions et proposer des correctifs, sans quoi les failles seraient divulguées. Si vous lisez cet article, c’est que la collaboration s’est bien passée : « Aussitôt alerté, wolfSSL a réagi. Le 28 octobre, tous les “fix” étaient déployés. » Les travaux développés par les chercheurs ont depuis été soumis en relecture auprès d’une conférence Institute of Electrical and Electronics Engineers (IEEE), association mondiale « dédiée à l’avancement de la technologie au profit de l’humanité ».
Autres Lectures sur ce sujet :
- Keeping the wolves out of wolfSSL: an article by Max Ammann, one of the co-authors of the research
- DY Fuzzing: Formal Dolev-Yao Models Meet Protocol Fuzz Testing: an academic paper on the research
- Lucca Hirschi’s personal webpage