Description
La plupart des piles réseau, par exemple TCP, TLS ou WPA, s'appuient sur une machine à états interne, qui peut être explicite (avec la présence de variables d'état) ou implicite (l'état réel peut être codé dans la pile d'appels). Parfois, cette machine à états s'écarte de la spécification mise en œuvre et présente des bogues intéressants, notamment des failles de sécurité telles que le contournement de l'authentification. Ces dernières années, des problèmes liés à la machine à états ont été identifiés dans de nombreux réseaux de premier plan [1, 2, 3].
Une limitation connue de cette approche est toutefois que l'inférence peut être un processus très long. En effet, le processus d'apprentissage consiste à envoyer des séquences de messages à la cible (généralement appelée « système en cours d'apprentissage » ou SUL), y compris des messages mal formés ou incohérents, et à attendre la réponse du SUL pour caractériser son comportement. Comme la réponse peut comporter un nombre arbitraire de messages, nous devons nous fier aux délais d'attente et espérer avoir récupéré la réponse complète.
Dans le cadre de la thèse d'Aina Rasoamanana [4], nous avons exploré des optimisations tirant parti de l'aspect déterministe de l'algorithme L* sur lequel nous nous appuyons dans nos expériences. Malgré des résultats prometteurs (jusqu'à 25 fois plus rapides), nous avons identifié plusieurs goulots d'étranglement, également abordés dans la littérature [5] : le temps d'initialisation du SUL, le temps passé dans les changements de contexte et le temps perdu à attendre les délais d'expiration.
Pour surmonter ces limites, la parallélisation et le checkpointing ont été discutés [6], mais les résultats concernant le checkpointing ont été décevants. Nous pensons qu'une autre approche est possible et pourrait conduire à des améliorations radicales. Nous proposons de nous appuyer sur des techniques d'instrumentation de bas niveau utilisant la capture des appels système ; une idée similaire a été proposée et mise en œuvre pour améliorer les outils de fuzzing avec état [5] ; cette thèse consiste à pousser l'idée plus loin dans un contexte plus complexe.
Pour capturer les appels système, nous proposons de précharger une bibliothèque partagée remplaçant l'interface fournie par la bibliothèque standard C, ce qui permettrait à notre outil d'inférence de surveiller de près ce que fait actuellement la SUL. Cela nous permettrait ainsi d'éviter complètement les délais d'attente de manière fiable. L'étape suivante consisterait à intégrer l'outil d'inférence dans la bibliothèque partagée afin d'éliminer la plupart des changements de contexte. Enfin, cette configuration serait idéale pour mettre en œuvre une nouvelle approche de vérification, supprimant complètement toutes les étapes d'initialisation.
Un processus d'inférence amélioré pourrait être suffisamment rapide pour être inclus dans les pipelines d'intégration continue. Une autre application consisterait à utiliser un ensemble plus large de messages d'entrée pour explorer de nouveaux territoires et produire des analyses plus complexes. Il existe de nombreux défis intéressants à relever pour que cela fonctionne dans un contexte général (par exemple, les programmes multiprocessus et multithreads, les séquences d'appels système non conventionnelles).
Bibliographie
Bibliographie
[1] Benjamin Beurdouche, Karthikeyan Bhargavan, Antoine Delignat-Lavaud, Cédric Fournet, Markulf Kohlweiss, Alfredo Pironti, Pierre-Yves Strub, Jean Karim Zinzindohoue. A Messy State of the Union: Taming the Composite State Machines of TLS. IEEE Symposium on Security and Privacy. 2015.
[2] Mathy Vanhoef and Frank Piessens. Key Reinstallation Attacks: Forcing Nonce Reuse in WPA2. In Proceedings of the 24th ACM Conference on Computer and Communications Security (CCS). ACM. 2017.
[3] Aina Rasoamanana, Olivier Levillain, Hervé Debar. Towards a Systematic and Automatic Use of State Machine Inference to Uncover Security Flaws and Fingerprint TLS Stacks. In ESORICS. 2022.
[4] Aina Rasoamanana. Derivation and Analysis of Cryptographic Protocol Implementations. PhD Thesis. École Doctorale de l’Institut Polytechnique de Paris. 2023.
[5] Seyed Behnam Andarzian, Cristian Daniele, Erik Poll. Green-Fuzz: Efficient Fuzzing for Network Protocol Implementations. Foundations and Practice of Security - 16th International Symposium. 2023.
[6] M. Henrix. Performance improvement in automata learning. Master Thesis, Radboud University Nijmegen. 2015.
[7] Arthur Tran Van. Improving Cryptographic Protocol Implementations using Grammatical Inference. PhD Thesis. École Doctorale de l’Institut Polytechnique de Paris. (to be defended in) 2025.