VUPER: Verified ASN.1 UPER Parser
Cet article présente VUPER, un cadre qui génère des analyseurs et des sérialiseurs ASN.1 UPER formellement vérifiés et précis au bit, lesquels ont été utilisés pour découvrir 20 types d'incohérences et de vulnérabilités de sécurité concrètes dans des analyseurs populaires, tant open-source que commerciaux, grâce à des tests dynamiques sur les protocoles 5G et V2X.
Article original sous licence CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète
Imaginez l'internet et nos téléphones portables comme une ville immense et bouillonnante où des milliards de messages circulent entre les bâtiments chaque seconde. Pour que cette ville fonctionne, ces messages ont besoin d'un langage universel afin qu'un téléphone à New York puisse communiquer avec une antenne à Tokyo sans confusion. Ce langage s'appelle l'ASN.1, et c'est comme la grammaire et le vocabulaire qui indiquent aux ordinateurs exactement comment emballer l'information dans de minuscules boîtes numériques et efficaces. Mais voici la partie délicate : pour gagner de l'espace et de la rapidité, ces boîtes sont emballées si étroitement qu'elles ne sont même pas alignées sur des rangées nettes d'octets (comme les mots informatiques standards) ; elles sont emballées jusqu'au tout dernier bit, la plus petite particule de donnée. Cette méthode d'emballage spécifique et ultra-serrée s'appelle l'UPER.
Le problème est que rédiger un traducteur (ou « parseur ») pour déballer ces minuscules boîtes au niveau du bit est incroyablement difficile. Si le traducteur commet la moindre erreur — comme mal lire un seul bit ou oublier une règle sur la gestion d'une nouvelle information inconnue — cela peut faire planter tout le système, provoquer des fuites de secrets ou laisser des pirates s'introduire dans le réseau. Pendant des années, les ingénieurs ont tenté de corriger ces erreurs en testant les traducteurs avec des millions de messages aléatoires, espérant attraper les bugs. Mais cela revient à chercher une aiguille dans une botte de foin en secouant simplement le foin ; vous trouverez peut-être quelques aiguilles, mais vous ne pourrez jamais être certain d'avoir trouvé toutes les aiguilles, ni que celles que vous avez trouvées sont les bonnes.
Entrez en scène VUPER, un nouvel outil créé par des chercheurs de l'Université d'État de Pennsylvanie qui change la donne. Au lieu de simplement secouer la botte de foin, VUPER construit un traducteur mathématiquement parfait à partir de zéro. Imaginez la création d'un dictionnaire et d'un livre de grammaire « étalon or » dont la perfection est prouvée par un mathématicien informatique. Les chercheurs ont utilisé ce traducteur parfait pour tester 11 autres parseurs populaires utilisés dans les réseaux 5G réels et les communications véhicule-à-tout (V2X). Ils ont découvert que beaucoup de ces traducteurs largement utilisés étaient en fait assez non conformes, omettant 20 types de règles différents. Dans certains cas, cette non-conformité a permis à des hackers de faire planter des téléphones ou de tromper les réseaux pour qu'ils envoient des messages non chiffrés. VUPER prouve que, bien que nous ne puissions pas toujours faire confiance aux traducteurs que nous possédons, nous pouvons désormais en construire qui sont mathématiquement garantis d'être sûrs, et les utiliser pour réparer ceux qui sont défectueux.
L'histoire de VUPER : Construire le traducteur parfait
Dans le monde des réseaux informatiques, les données sont comme un long flux d'eau circulant dans des tuyaux. Pour envoyer un message, un ordinateur « sérialise » la donnée, compressant l'information en un flux compact de bits. Pour la recevoir, un autre ordinateur « parse » le flux, compressant les bits pour redonner un message lisible. Dans le monde à enjeux élevés des réseaux cellulaires 5G et de la communication véhicule-à-tout (V2X), ce processus utilise un ensemble spécifique de règles appelé UPER (Unaligned Packed Encoding Rules). On l'appelle « non aligné » car il ne se soucie pas des limites nettes d'octets ; il emballe les données aussi étroitement que possible, bit par bit, pour économiser la bande passante.
Le défi est que le livre de règles officiel de l'UPER est écrit dans un texte descriptif dense, et non en code. Cela laisse les ingénieurs deviner comment implémenter les règles, ce qui mène à des erreurs subtiles. Les chercheurs derrière VUPER ont décidé d'arrêter de deviner. Ils ont construit un cadre qui prouve formellement la correction du parseur. Ils n'ont pas seulement écrit du code en espérant qu'il fonctionne ; ils ont utilisé un outil mathématique puissant appelé le vérificateur Rocq pour vérifier chaque étape de la logique.
Le test du « Aller-Retour »
Pour comprendre comment fonctionne VUPER, imaginez que vous avez un traducteur magique qui transforme un livre en un code secret, puis le transforme à nouveau. Un test de « l'aller-retour » signifie que vous prenez une phrase, la transformez en code, puis transformez ce code à nouveau en une phrase. Si vous obtenez exactement la même phrase, le traducteur fonctionne.
Cependant, l'UPER possède une particularité : les extensions. À mesure que la technologie évolue (comme le passage de la 4G à la 5G), de nouvelles fonctionnalités sont ajoutées aux messages. Un ancien traducteur doit être capable de lire un nouveau message, d'ignorer les nouvelles parties qu'il ne comprend pas, et de toujours donner du sens aux anciennes parties. C'est ce qu'on appelle la compatibilité ascendante. VUPER gère cela en prouvant deux choses :
- Aller-Retour Strict : Si le message provient de la même version, le traducteur doit transformer le message en retour exactement dans le même motif de bits. Aucun bit en trop, aucun bit manquant.
- Aller-Retour Faible : Si le message contient de nouvelles extensions inconnues, le tradacteur peut les sauter, mais il doit toujours être capable de transformer les parties connues en un message valide. Il n'a pas besoin de correspondre bit par bit à l'original (car les parties inconnues ont disparu), mais il ne doit pas corrompre le reste.
Trouver les bugs
Les chercheurs ont construit un « oracle de confiance » — un parseur parfait généré par VUPER — et l'ont utilisé pour tester 11 autres parseurs. Ceux-ci comprenaient 7 outils open-source (comme asn1c et pycrate) et 4 parseurs commerciaux utilisés à l'intérieur de véritables stations de base 4G et 5G (le matériel qui connecte votre téléphone au réseau).
Ils n'ont pas seulement envoyé des déchets aléatoires ; ils ont utilisé un « fuzzer » intelligent qui comprenait la structure des messages pour créer des millions de cas de test complexes. En comparant les résultats, ils ont découvert 20 types différents d'incohérences dans les autres parseurs.
Voici quelques-unes des découvertes les plus intéressantes :
- Le problème du « Trop long » : Certains parseurs acceptaient des nombres trop grands pour l'espace alloué, ou des longueurs qui ne correspondaient pas aux données. C'est comme un facteur qui accepterait une lettre disant « J'ai 5 pages » alors qu'elle en contient en réalité 100, provoquant le débordement de la boîte aux lettres et le plantage du système.
- La confusion sur l'« Extension inconnue » : Lorsqu'un message contenait de nouvelles fonctionnalités, les anciens parseurs devenaient confus et commençaient à lire la mauvaise partie du message, pensant qu'il s'agissait d'autre chose. C'est comme un traducteur voyant un nouveau mot dans une langue étrangère, perdant pied, et traduisant ensuite le reste de la phrase de manière incorrecte.
- L'erreur de la « Valeur par défaut » : Les règles stipulent que si une valeur est la « valeur par défaut », elle ne doit pas être envoyée du tout pour économiser de l'espace. Mais certains parseurs l'envoyaient quand même, ou ne reconnaissaient pas lorsqu'elle était absente.
Le danger dans le monde réel
L'article ne s'est pas contenté de trouver des bugs théoriques ; il a montré comment ils pouvaient être exploités. Les chercheurs ont démontré quatre attaques concrètes :
- Faire planter un téléphone : En envoyant un message avec une liste d'identifiants de réseau légèrement trop longue (en violant une contrainte), ils ont provoqué le plantage du logiciel d'un téléphone, entraînant un déni de service (DoS).
- Faire planter une tour : Une station de base compromise pourrait envoyer un message malformé à une autre tour, provoquant le plantage de la seconde tour lors du traitement de celui-ci.
- Fuites de secrets : Si un parseur interprète mal un message à cause d'une extension inconnue, il pourrait penser qu'un paramètre de sécurité est « désactivé » alors qu'il est en fait « activé », ou vice versa. Cela pourrait mener à une situation où un téléphone pense communiquer de manière sécurisée, alors que le réseau envoie en réalité des données en texte clair, permettant à des espions de lire les informations.
- Empreinte numérique de l'appareil (Fingerprinting) : Comme les différents parseurs gèrent les erreurs différemment, un hacker pourrait envoyer des messages « pièges » spécifiques et observer la réaction de l'appareil. Si l'appareil accepte un message étrange, le hacker sait qu'il utilise une marque de matériel spécifique (comme un modem Samsung), ce qui lui permet de cibler cet appareil précis avec des exploits connus.
Performance et futur
Les chercheurs admettent que leur parseur parfait, mathématiquement vérifié, n'est pas le plus rapide du marché. Il est environ 4 fois plus lent que les bibliothèques C hautement optimisées actuellement utilisées dans l'industrie. Cependant, il est 4 fois plus rapide que les parseurs basés sur Python.
L'objectif de VUPER n'est pas de remplacer immédiatement les parseurs rapides, mais de servir de référence d'implémentation. Tout comme un grand chef peut goûter un plat et vous dire exactement ce qui ne va pas dans la recette, VUPER peut dire aux ingénieurs exactement où leurs parseurs échouent. Les chercheurs espèrent qu'en utilisant VUPER pour trouver et corriger ces bugs, l'industrie pourra éventuellement construire des parseurs qui soient à la fois rapides et mathématiquement garantis d'être sûrs.
En fin de compte, VUPER démontre que dans le monde complexe et rapide de la 5G et au-delà, nous ne pouvons plus nous contenter de tests « assez bons ». Nous avons besoin de traducteurs mathématiquement prouvés pour garder notre ville numérique sûre, sécurisée et en plein fonctionnement.
Noyé(e) sous les articles dans votre domaine ?
Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.