From CVEs to proof: Make your USB device stack great again


Les piles USB sont très représentées dans le monde de l’embarqué, et sont composées de modules logiciels pilotant une IP matérielle dédiée.

En effet, des clés USB aux véhicules en passant par les smartphones, les systèmes industriels et les objets connectés, tous comportent en général au moins une interface de ce type. Dans les environnements sensibles et critiques où cette interface est accessible à des attaquants, la moindre vulnérabilité (RTE) exploitable peut se transformer en prise de contrôle de l’équipement, souvent au niveau de privilège le plus élevé.

Les conséquences deviennent dramatiques lorsque cette pile USB est implémentée dans une BootROM, rendant la vulnérabilité impatchable sans révision matérielle. Cet état de fait soulève l’importance d’avoir à disposition une pile USB portable et possédant des garanties de sécurité contre les RTEs.

Le présent travail propose donc une pile USB open source avec des preuves utilisant le framework Frama-C, implémentant les classes DFU, MSC et HID, modulaire et extensible. Au delà du code source de cette pile, nous discutons de la méthodologie de preuve qui possède un aspect générique et adaptable à d’autres cas d’usage de l’embarqué.

La vidéo

Le papier

Les planches de présentation