(version française ci-dessous)
Seeking to improve IT security, researchers from the PESTO project team have devised an “innovative and effective” method for identifying vulnerabilities in implementations of TLS, an essential protocol for securing data exchanges over internet. This method has already shown its worth, having been used to discover four new vulnerabilities, one of which was critical.
It is the reason for the “s” after the “http” in the address bar on your browser and the small padlock next to it. The TLS protocol is one of the most widely-used protocols for encrypting exchanges on IT networks, including for the internet of things (IoT). Used since the 1990s, TLS is used to establish a secure connection between two end-points, thus preserving the privacy and integrity of any data travelling through it, whether in the form of usernames, passwords, bank card numbers, telephone numbers or email addresses. However, this protocol is not invulnerable, and has been subject to a range of attacks. Security breaches of varying levels of criticality have been detected, including the much-publicised Heartbleed breach in 2014.
A 1st bridge between two worlds: formal verification and fuzzing
Seeking to “significantly improve the scope and detection capabilities of testing algorithm”, Lucca Hirschi and Steve Kremer, Inria researchers with the PESTO project team (a joint undertaking involving Inria and Loria), have developed “an innovative and effective” method for identifying TLS protocol breaches. Working alongside Max Ammann, a former Master’s student at Loria who now works as a security engineer, Hirschi and Kremer developed this method as part of ProtoFuzz, a Young Researcher project supported through a generic call for proposals from the ANR (the French National Research Agency). This involved two different strategies coming together, as Lucca Hirschi explains: “We were among the first to create a bridge between the formal verification of cryptographic protocols – an area of focus for PESTO – and fuzzing, an effective method for testing implementations, such as TLS implementations. Fuzzing involves generating random entries which are then executed on the target program, the behaviour of which is observed and fed into a feedback loop that can be used to prioritise interesting tests.” The researchers also build on a formally defined attacker known as “DY” or “Dolev-Yao” – the names of its creators -, which explains the name of their new method: “DY model-guided fuzzing”.
Breaches of different levels of severity in wolfSSL
The TLS protocol has multiple implementations, meaning that different programs implementing this protocols have been described in computer language. The researchers focused on two of these: “OpenSSL, which is widely used, and wolfSSL, which was primarily designed for embedded devices, which have low computation power”. No new vulnerabilities were identified in OpenSSL, but four were in wolfSSL, one of which was judged to be critical, with a severity score of 9.1 out of 10 under the Common Vulnerability Scoring System (CVSS). “Such a breach could cause Denial of Service attack and potential leaks of sensitive information elsewhere on the server”, explains Lucca Hirschi. “Another vulnerability would enable ‘buffer overflow’ attacks. This bug in server implementation was found to have remote code execution (RCE) potential: an attacker could have used it to re-write the memory space in order to execute code remotely.” The researchers shared their vulnerability report with the teams in charge of development of wolfSSL on 12th August 2022, in accordance with the ethical principle of responsible disclosure. The stakeholders agreed to spend three months working together to seek out solutions and patches, without which the breaches would be disclosed. If you’re reading this article, that means the collaboration was successful: “As soon as we notified them, the wolfSSL team was very responsive. On 28th October, all of the fixes were deployed.” The researchers’ work was submitted for review at a conference of the Institute of Electrical and Electronics Engineers (IEEE), an international association “dedicated to advancing technology for the benefit of humanity.”
Article written by Kogito
Find out more
- 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
Une nouvelle technique pour tester la sécurité des protocoles cryptographiques tels que TLS
Une nouvelle technique pour tester la sécurité des protocoles cryptographiques tels que TLS
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é ».
Article rédigé par Kogito
- 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