PickleFuzzer: A Case Study in Fuzzing for Discrepancies Between Python Pickle Implementations
Dit artikel introduceert PickleFuzzer, een op grammatica gebaseerde differentiaal fuzzer die 14 kritieke discrepanties identificeert in Python's pickle-implementaties, waaronder kwetsbaarheden die aanvallers in staat stellen beveiligingsscanhulpmiddelen op platformen zoals Hugging Face te omzeilen.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
Stel je voor dat je een magische machine hebt die elk object in je huis—een speelgoed, een boek of een boterham—kan omzetten in een lange reeks instructies (zoals een recept). Dit is wat Python's Pickle doet: het zet complexe computerdata om in een reeks instructies zodat het kan worden opgeslagen of via internet kan worden verzonden. Later leest een andere machine die instructies om het object exact zoals het was te herbouwen.
Er is echter een addertje onder het gras. Als iemand je een "recept" stuurt dat ze zelf hebben bedacht, en jij volgt het blindelings, dan kan dat recept je machine vertellen iets gevaarlijks te doen, zoals je bestanden verwijderen of je wachtwoorden stelen. Vanwege dit risico hebben beveiligingsexperts scanners gebouwd (zoals metaaldetectoren op een vliegveld) om deze recepten te controleren voordat je machine ze leest. Als de scanner een gevaarlijke instructie ziet, stopt het proces.
Het Probleem: Drie Verschillende Koks, Drie Verschillende Regels
Hier is de draai: de mensen die de "receptlezer" (de machine die Pickle leest) hebben gebouwd, hebben niet één enkel regelboek geschreven. In plaats daarvan hebben ze drie verschillende versies van de lezer gebouwd:
- Kok A (Python): Geschreven in Python, de standaardtaal.
- Kok B (C): Geschreven in een snellere, lager-niveau taal genaamd C.
- Kok C (De Inspecteur): Een hulpmiddel dat door beveiligingsscanners wordt gebruikt om het recept te lezen voordat de andere koks het bereiden.
Het probleem is dat deze drie koks niet altijd overeenstemming hebben over wat een geldig recept is. Soms kan een specifieke instructie Kok A en Kok B laten zeggen: "Oh, dat is prima, ik ga het bereiden", terwijl Kok C (de Inspecteur) zegt: "Wacht, dat is gebroken! Ik kan dit niet lezen."
Als een hacker dit weet, kan hij een "vergiftigd recept" maken dat er gebroken uitziet voor de Inspecteur (zodat het door de beveiligingsscan komt), maar er perfect goed uitziet voor Kok A of Kok B (die vervolgens blij zijn met het uitvoeren van de gevaarlijke commando's). Dit is vergelijkbaar met het tonen van een nep-ID aan een bewaker die er verdacht uitziet, zodat hij je doorlaat, maar vervolgens een echte ID tonen aan de bouncer binnen die je binnenlaat.
De Oplossing: PICKLEFUZZER
De onderzoekers in dit artikel hebben een tool gebouwd genaamd PICKLEFUZZER. Denk hierbij aan een supersnelle, geautomatiseerde proever.
In plaats van een mens in te huren om de regelboeken te lezen en te raden waar de koks het misschien niet eens zijn, doet PICKLEFUZZER het volgende:
- Genereert Willekeurige Recepten: Het creëert miljoenen willekeurige, er geldig uitzienende instructiestrings (recepten) met behulp van een speciale grammatica (een set regels die het heeft afgeleid door de koks te bestuderen).
- Serveert aan Alle Koks: Het geeft precies hetzelfde recept tegelijkertijd door aan Kok A, Kok B en Kok C.
- Controleert de Reactie: Het observeert nauwkeurig of een kok crasht, een tantrum gooit (een fout veroorzaakt) of eindigt met een ander resultaat dan de anderen.
Als Kok C "Fout!" zegt maar Kok A zegt "Heerlijk!", markeert PICKLEFUZZER dat recept als een afwijking. Het hoeft niet het "correcte" antwoord te kennen; het weet alleen dat als de koks het niet eens zijn, er een beveiligingslek is.
Wat Ze Vonden
De onderzoekers hebben deze tool een week lang laten draaien en vonden 14 verschillende manieren waarop de koks het niet eens waren.
- De Grote Overwinningen: Vier van deze meningsverschillen waren kritiek. Ze bewezen dat een hacker ze kon gebruiken om de beveiligingsscanners op populaire websites (zoals Hugging Face, waar mensen AI-modellen delen) te misleiden en gevaarlijke code door te laten.
- De Beloning: De onderzoekers vertelden het Python-team over deze gaten. Ze rapporteerden ze ook bij een bug bounty-programma (een beloningssysteem voor het vinden van beveiligingsfouten) en kregen $750 toebedeeld.
- Snelheid versus Mensen: Om te laten zien hoe goed hun tool was, vergeleken ze deze met een menselijke beveiligingsexpert. De mens besteedde 60 uur aan het handmatig lezen van de code en vond 14 afwijkingen. PICKLEFUZZER vond hetzelfde aantal afwijkingen in slechts 10 minuten.
De Conclusie
Het artikel toont aan dat wanneer je meerdere versies van een beveiligingstool hebt zonder één enkel officieel regelboek, ze onvermijdelijk het niet eens zullen worden. Deze meningsverschillen zijn als scheuren in een dam die hackers kunnen uitbuiten. PICKLEFUZZER is een nieuwe, snelle manier om die scheuren automatisch te vinden door te kijken waar de verschillende versies van de software het niet meer met elkaar eens zijn, waardoor ze kunnen worden gedicht voordat slechte actoren ze kunnen gebruiken.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.