PickleFuzzer: A Case Study in Fuzzing for Discrepancies Between Python Pickle Implementations
Dieser Beitrag stellt PickleFuzzer vor, einen grammatikbasierten differentiellen Fuzzer, der 14 kritische Diskrepanzen in den Pickle-Implementierungen von Python aufdeckt, darunter Schwachstellen, die Angreifern ermöglichen, Sicherheitsprüfwerkzeuge auf Plattformen wie Hugging Face zu umgehen.
Originalarbeit lizenziert unter CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen
Stellen Sie sich vor, Sie haben eine magische Maschine, die jeden Gegenstand in Ihrem Haus – ein Spielzeug, ein Buch oder ein Sandwich – in eine lange Zeichenkette von Anweisungen (wie ein Rezept) verwandeln kann. Genau das tut Pickle in Python: Es wandelt komplexe Computerdaten in eine Zeichenkette von Anweisungen um, damit sie gespeichert oder über das Internet gesendet werden können. Später liest eine andere Maschine diese Anweisungen, um das Objekt exakt so wiederherzustellen, wie es war.
Allerdings gibt es einen Haken. Wenn Ihnen jemand ein „Rezept" schickt, das er selbst gekocht hat, und Sie es blind befolgen, könnte dieses Rezept Ihrer Maschine befehlen, etwas Gefährliches zu tun, wie etwa Ihre Dateien zu löschen oder Ihre Passwörter zu stehlen. Aus diesem Grund haben Sicherheitsexperten Scanner (wie Metalldetektoren an Flughäfen) entwickelt, um diese Rezepte zu überprüfen, bevor Ihre Maschine sie liest. Erkennt der Scanner eine gefährliche Anweisung, stoppt er den Vorgang.
Das Problem: Drei verschiedene Köche, drei verschiedene Regeln
Hier kommt die Wendung: Diejenigen, die den „Rezeptleser" (die Maschine, die Pickle liest) gebaut haben, haben kein einziges Regelbuch verfasst. Stattdessen haben sie drei verschiedene Versionen des Lesers entwickelt:
- Koch A (Python): Geschrieben in Python, der Standardsprache.
- Koch B (C): Geschrieben in einer schnelleren, niedrigeren Sprache namens C.
- Koch C (Der Inspektor): Ein Werkzeug, das von Sicherheits-Scannern verwendet wird, um das Rezept vorher zu lesen, bevor die anderen Köche es zubereiten.
Das Problem ist, dass sich diese drei Köche nicht immer einig sind, was als gültiges Rezept zählt. Manchmal mag eine bestimmte Anweisung Koch A und Koch B dazu veranlassen zu sagen: „Oh, das ist in Ordnung, ich koche das", während Koch C (der Inspektor) sagt: „Warte, das ist kaputt! Ich kann das nicht lesen."
Wenn ein Hacker dies weiß, kann er ein „vergiftetes Rezept" erstellen, das für den Inspektor kaputt aussieht (so dass es den Sicherheitsscanner passiert), aber für Koch A oder Koch B perfekt in Ordnung erscheint (die dann die gefährlichen Befehle gerne ausführen). Das ist so, als würde man einem Wächter eine gefälschte Ausweis vorzeigen, die ihm verdächtig erscheint, sodass er Sie durchwinkt, und dann einem Türsteher im Inneren einen echten Ausweis zeigt, der Sie hereinlässt.
Die Lösung: PICKLEFUZZER
Die Forscher in diesem Papier haben ein Werkzeug namens PICKLEFUZZER entwickelt. Stellen Sie es sich als einen super-schnellen, automatisierten Geschmackstester vor.
Anstatt einen Menschen einzustellen, der die Regelbücher liest und errät, wo die Köche sich vielleicht uneinig sind, macht PICKLEFUZZER Folgendes:
- Generiert zufällige Rezepte: Es erstellt Millionen zufälliger, gültig aussehender Anweisungszeichenketten (Rezepte) unter Verwendung einer speziellen Grammatik (einer Reihe von Regeln, die es durch Studium der Köche herausgefunden hat).
- Bedient alle Köche: Es reicht das exakt gleiche Rezept gleichzeitig an Koch A, Koch B und Koch C weiter.
- Überprüft die Reaktion: Es beobachtet genau, ob ein Koch abstürzt, einen Wutanfall bekommt (einen Fehler wirft) oder am Ende zu einem anderen Ergebnis kommt als die anderen.
Wenn Koch C „Fehler!" sagt, aber Koch A sagt „Lecker!", markiert PICKLEFUZZER dieses Rezept als Diskrepanz. Es muss nicht die „richtige" Antwort kennen; es weiß nur, dass wenn die Köche sich nicht einig sind, ein Sicherheitsloch existiert.
Was sie fanden
Die Forscher führten dieses Werkzeug eine Woche lang aus und fanden 14 verschiedene Wege, auf denen sich die Köche nicht einig waren.
- Die großen Erfolge: Vier dieser Uneinigkeiten waren kritisch. Sie bewiesen, dass ein Hacker sie nutzen könnte, um die Sicherheitsscanner auf beliebten Websites (wie Hugging Face, wo Menschen KI-Modelle teilen) zu täuschen, damit sie gefährlichen Code durchlassen.
- Die Belohnung: Die Forscher teilten diese Lücken dem Python-Team mit. Sie meldeten sie auch an ein Bug-Bounty-Programm (ein Belohnungssystem für das Aufspüren von Sicherheitsmängeln) und erhielten 750 US-Dollar.
- Geschwindigkeit vs. Menschen: Um zu zeigen, wie gut ihr Werkzeug war, verglichen sie es mit einem menschlichen Sicherheitsexperten. Der Mensch verbrachte 60 Stunden mit dem manuellen Lesen des Codes und fand 14 Diskrepanzen. PICKLEFUZZER fand die gleiche Anzahl von Diskrepanzen in nur 10 Minuten.
Das Fazit
Das Papier zeigt, dass wenn Sie mehrere Versionen eines Sicherheitstools ohne ein einziges, offizielles Regelbuch haben, diese unweigerlich uneinig sein werden. Diese Uneinigkeiten sind wie Risse in einem Damm, die Hacker ausnutzen können. PICKLEFUZZER ist eine neue, schnelle Methode, um diese Risse automatisch zu finden, indem es betrachtet, wo die verschiedenen Versionen der Software aufhören, sich einig zu sein, und hilft, sie zu schließen, bevor böswillige Akteure sie nutzen können.
Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?
Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.