PickleFuzzer: A Case Study in Fuzzing for Discrepancies Between Python Pickle Implementations
Cet article présente PickleFuzzer, un fuzzer différentiel basé sur une grammaire qui identifie 14 écarts critiques entre les implémentations de pickle de Python, notamment des vulnérabilités permettant à des attaquants de contourner les outils d'analyse de sécurité sur des plateformes telles que Hugging Face.
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 que vous possédiez une machine magique capable de transformer n'importe quel objet de votre maison — un jouet, un livre ou un sandwich — en une longue chaîne d'instructions (comme une recette). C'est ce que fait Pickle en Python : il transforme des données informatiques complexes en une chaîne d'instructions afin qu'elles puissent être enregistrées ou transmises via Internet. Plus tard, une autre machine lit ces instructions pour reconstruire l'objet exactement tel qu'il était.
Cependant, il y a un piège. Si quelqu'un vous envoie une « recette » qu'il a lui-même concoctée, et que vous la suivez aveuglément, cette recette pourrait ordonner à votre machine d'effectuer une action dangereuse, comme supprimer vos fichiers ou voler vos mots de passe. Pour cette raison, les experts en sécurité ont créé des scanners (comme des détecteurs de métaux dans un aéroport) pour vérifier ces recettes avant que votre machine ne les lise. Si le scanner détecte une instruction dangereuse, il arrête le processus.
Le Problème : Trois Chefs Différents, Trois Règles Différentes
Voici la particularité : les personnes qui ont construit le « lecteur de recettes » (la machine qui lit Pickle) n'ont pas rédigé un seul manuel de règles. Au lieu de cela, ils ont créé trois versions différentes du lecteur :
- Chef A (Python) : Écrit en Python, le langage standard.
- Chef B (C) : Écrit dans un langage plus rapide et de plus bas niveau appelé C.
- Chef C (L'Inspecteur) : Un outil utilisé par les scanners de sécurité pour lire la recette avant que les autres chefs ne la cuisinent.
Le problème est que ces trois chefs ne s'accordent pas toujours sur ce qui constitue une recette valide. Parfois, une instruction spécifique peut amener le Chef A et le Chef B à dire : « Oh, c'est bon, je vais la cuisiner », tandis que le Chef C (l'Inspecteur) dit : « Attendez, c'est cassé ! Je ne peux pas lire cela. »
Si un pirate informatique le sait, il peut créer une « recette empoisonnée » qui semble cassée pour l'Inspecteur (de sorte qu'elle passe le scanner de sécurité) mais qui semble parfaitement normale pour le Chef A ou le Chef B (qui exécutent alors joyeusement les commandes dangereuses). C'est comme montrer une fausse pièce d'identité à un garde qui la trouve suspecte, ce qui le pousse à vous laisser passer, puis montrer une vraie pièce d'identité au videur à l'intérieur qui vous laisse entrer.
La Solution : PICKLEFUZZER
Les chercheurs de cet article ont créé un outil appelé PICKLEFUZZER. Imaginez-le comme un dégustateur automatisé ultra-rapide.
Au lieu d'embaucher un humain pour lire les manuels de règles et deviner où les chefs pourraient ne pas s'accorder, PICKLEFUZZER fait ce qui suit :
- Génère des Recettes Aléatoires : Il crée des millions de chaînes d'instructions aléatoires et ressemblant à des recettes valides en utilisant une grammaire spéciale (un ensemble de règles qu'il a déduites en étudiant les chefs).
- Sert à Tous les Chefs : Il remet exactement la même recette au Chef A, au Chef B et au Chef C en même temps.
- Vérifie la Réaction : Il observe attentivement pour voir si un chef plante, fait une crise de colère (lève une erreur) ou aboutit à un résultat différent des autres.
Si le Chef C dit « Erreur ! » mais que le Chef A dit « Délicieux ! », PICKLEFUZZER signale cette recette comme une discrepancy (une divergence). Il n'a pas besoin de connaître la « bonne » réponse ; il sait simplement que si les chefs ne sont pas d'accord, il y a une faille de sécurité.
Ce Qu'ils Ont Découvert
Les chercheurs ont exécuté cet outil pendant une semaine et ont trouvé 14 façons différentes dont les chefs ne s'accordaient pas.
- Les Grandes Victoires : Quatre de ces désaccords étaient critiques. Ils ont prouvé qu'un pirate informatique pouvait les utiliser pour tromper les scanners de sécurité de sites web populaires (comme Hugging Face, où les gens partagent des modèles d'IA) afin de laisser passer du code dangereux.
- La Récompense : Les chercheurs ont signalé ces failles à l'équipe de Python. Ils les ont également déclarées à un programme de prime aux bogues (un système de récompense pour la découverte de failles de sécurité) et ont reçu 750 $.
- Vitesse vs Humains : Pour montrer l'efficacité de leur outil, ils l'ont comparé à un expert en sécurité humain. L'humain a passé 60 heures à lire manuellement le code et a trouvé 14 divergences. PICKLEFUZZER a trouvé le même nombre de divergences en seulement 10 minutes.
La Conclusion
L'article montre que lorsque vous avez plusieurs versions d'un outil de sécurité sans manuel de règles officiel unique, elles finiront inévitablement par ne pas s'accorder. Ces désaccords sont comme des fissures dans un barrage que les pirates informatiques peuvent exploiter. PICKLEFUZZER est une nouvelle méthode rapide pour trouver ces fissures automatiquement en observant où les différentes versions du logiciel cessent de s'accorder entre elles, aidant ainsi à les colmater avant que des acteurs malveillants ne puissent les utiliser.
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.