Le vérifieur de code n’était pas infaillible…
La technologie Java Card équipe aujourd’hui plusieurs milliards de cartes à puce (cartes SIM, cartes bancaires…) en circulation à travers le monde. Les travaux de Guillaume Bouffard (ANSSI) et Julien Lancia (Thales) - qui ont identifié une faille critique de sécurité dans le vérifieur de code Java Card - ont permis de renforcer leur sécurité.
Grâce à Java Card, de multiples applications (applets) peuvent cohabiter sur une même carte à puce et de nouvelles applications peuvent être installées à tout moment par les producteurs de cartes pour répondre dynamiquement à la demande des utilisateurs. La vérification du bytecode[1] est une étape indispensable pour éviter l’installation d’une application malveillante qui pourrait accéder à des informations sensibles. Cette vérification peut s’effectuer en dehors de la carte avant installation (off-card) ou après installation sur la carte (on-card).
Une année durant, Guillaume Bouffard, du laboratoire de sécurité des composants (LSC) de l’ANSSI et Julien Lancia, ingénieur au CESTI[2] de Thales, ont mutualisé leurs moyens et compétences pour tester de manière aléatoire et automatisée (fuzzing) le vérifieur de code (Byte Code Verifier – BCV) d’Oracle, élément crucial de la chaîne d’installation des applications de la plateforme Java Card. Avant d’être installée, chaque application est en effet vérifiée et signée par une autorité de confiance pour prouver sa validité vis-à -vis du BCV.
Une vulnérabilité exploitable… désormais corrigée
Les travaux des chercheurs ont permis de démontrer une vulnérabilité du BCV qui ne détectait pas certaines applications malformées. Des attaquants exploitant cette vulnérabilité auraient ainsi pu récupérer tous les secrets de la carte : code PIN, clef d’authentification au réseau 2G/3G, clefs bancaires mises en jeu pour le paiement mobile…
Les chercheurs ont remonté la vulnérabilité à Oracle de façon à ce que le problème soit corrigé avant toute publication de leurs travaux (« responsible disclosure »). Oracle est intervenu très rapidement et la faille n’apparaît plus dans la nouvelle version du BCV, aujourd’hui utilisée par les développeurs Java Card.
Une collaboration fructueuse
Ces travaux ont reçu un écho très favorable dans la communauté de la sécurité embarquée : présentés à et au , ils ont également fait l’objet d’une nouvelle présentation dans le cadre des « rejeux » de , sélectionnant les articles les plus marquants de l’année.
Témoignant des liens privilégiés entre le CESTI de Thales et l’ANSSI, leurs auteurs poursuivent leur collaboration sur d’autres sujets. Au sein du CESTI, Julien Lancia, titulaire d’un doctorat en informatique[3], travaille aujourd’hui plus spécifiquement sur les environnements d’exécution sécurisés (« trusted execution environnement ») et continue à traquer les chemins d’attaque des logiciels embarqués. Tel est le lot quotidien du hacker éthique… pour le plus grand bénéfice des clients qui font appel à Thales pour évaluer la sécurité et la fiabilité de leurs applications critiques.
Pour aller plus loin :
Télécharger l’article « », Guillaume Bouffard, Julien Lancia
A lire également :
Hackers éthiques vs cyberpirates
Systèmes embarqués : Thales passe au crible la fiabilité et la sécurité des composants
Thales représenté au SSTIC 2016