From TinyGo to gc Compiler: Extending Zorya's Concolic Framework to Real-World Go Binaries
Dieser Beitrag stellt eine Erweiterung des Zorya-Frameworks für konkolische Ausführung vor, die die Unterstützung von multithreaded Go-Binärdateien ermöglicht, die mit dem Standard-gc-Compiler kompiliert wurden, und durch die Wiederherstellung von Thread-Zuständen, die Neutralisierung von Runtime-Preemption sowie die Anwendung einer Overlay-Pfadanalyse die Aufdeckung realer Schwachstellen in Produktionsprojekten wie Kubernetes und Go-Ethereum ermöglicht.
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 sind Sicherheitsinspektor, der versucht, versteckte Fallen in einer riesigen, komplexen Fabrik zu finden. Diese Fabrik ist eine Software, die in der Go-Programmiersprache geschrieben ist.
Lange Zeit verfügten Sicherheitsinspektoren über ein spezielles Werkzeug namens Zorya, das hervorragend geeignet war, um kleine, einfache Fabriken zu inspizieren (sogenannte „TinyGo"-Binärdateien). Doch die in der realen Welt eingesetzten Fabriken großer Unternehmen wie Kubernetes und Ethereum sind gewaltig, chaotisch und laufen gleichzeitig auf vielen Arbeitern (Threads). Das alte Zorya-Werkzeug war diesen großen Fabriken nicht gewachsen; es geriet durch das Rauschen und die Komplexität in Verwirrung.
Dieser Artikel beschreibt die Aufrüstung von Zorya, damit es endlich diese realen, multithread-fähigen Go-Fabriken inspizieren kann. Hier ist die einfache Erklärung, wie sie das erreicht haben:
1. Das Problem: Die „beschäftigte Fabrik"
Der Standard-Go-Compiler (genannt gc) erstellt Software, die beim Start ein ganzes Team unsichtbarer Arbeiter (OS-Threads) hochfährt, nur um die Arbeit zu verwalten. Zudem gibt es einen „Verkehrspolizisten" (die Laufzeitumgebung), der jeden Arbeiter jederzeit stoppen kann, um jemand anderem Vorrang zu gewähren.
- Das alte Werkzeug: Zorya wurde zur Inspektion ruhiger, einthreadiger Fabriken eingesetzt. Als es versuchte, die geschäftigen, multithread-fähigen Fabriken zu betrachten, konnte es nicht herausfinden, wer was tat oder wo sich die Arbeiter befanden.
- Das Ziel: Zorya so intelligent machen, dass es das Chaos anhalten, einen Schnappschuss jedes einzelnen Arbeiters aufnehmen und die Arbeit sorgfältig inspizieren kann, ohne sich zu verirren.
2. Die Lösung: Drei neue Superkräfte
Die Autoren verliehen Zorya drei neue Tricks, um mit den großen Fabriken umzugehen:
Der „Zeitreise-Schnappschuss" (Wiederherstellung von Thread-Zuständen):
Stellen Sie sich vor, die Fabrik läuft auf Hochtouren. Anstatt zu versuchen, die Bewegungen der Arbeiter in Echtzeit zu verfolgen (was zu schnell und verwirrend ist), drückt das neue Zorya auf „Pause", macht ein hochauflösendes Foto von den Händen, Werkzeugen und Positionen jedes einzelnen Arbeiters und speichert es. Wenn es mit der Inspektion beginnt, lädt es diese Fotos wieder, um genau zu wissen, wo sich jeder befand, bevor es begann. Dies ermöglicht es ihm, das Chaos des „Verkehrspolizisten" zu ignorieren und sich auf den eigentlichen Code zu konzentrieren.Der „Was-wäre-wenn"-Spiegel (Overlay-Pfadanalyse):
Normalerweise wählt ein Arbeiter, der an einer Wegkreuzung ankommt, einen Pfad und geht diesen. Der andere Pfad wird ignoriert.- Der alte Weg: Zorya prüfte nur den Pfad, den der Arbeiter tatsächlich genommen hatte.
- Der neue Weg: Zorya erstellt einen „Geisterspiegel" der Fabrik. Wenn der Arbeiter den linken Pfad wählt, schickt Zorya einen „Geisterarbeiter" nur für ein paar Schritte den rechten Pfad hinunter. Es prüft, ob dieser Pfad eine Falle hat (wie ein Loch im Boden oder ein defektes Werkzeug), ohne ihn tatsächlich zu begehen. Wenn der Geist eine Falle findet, gibt Zorya Alarm. Dies nennt man Copy-on-Write: Es werden nur die Teile der Fabrik kopiert, die der Geist berührt, was enorme Mengen an Energie spart.
Der „stille Falle"-Detektor:
Manche Fallen machen kein lautes Geräusch (wie einen Absturz oder eine Panik). Zum Beispiel kann eine Zahl so groß werden, dass sie „überläuft" und wieder klein wird, wodurch die Mathematik stillschweigend kaputtgeht. Andere Werkzeuge übersehen diese, da sie nur nach lauten Abstürzen suchen. Zorya verwendet ein superintelligentes mathematisches Gehirn (ein SMT-Löser), um die Mathematik im Kopf durchzurechnen. Es kann sagen: „Hey, wenn diese Zahl größer wird, wird die Mathematik stillschweigend kaputtgehen", selbst wenn das Programm nicht abstürzt.
3. Der Test: Finden echter Fehler
Das Team testete dieses aufgerüstete Zorya an 11 realen Sicherheitslücken, die in berühmter Software wie Kubernetes, Go-Ethereum und CoreDNS gefunden wurden. Sie verglichen Zorya mit anderen Werkzeugen wie statischen Prüfern (die Code wie einen Grammatikprüfer lesen), Fuzzern (die zufällige Daten auf die Software werfen) und anderen Sicherheits-Scannern.
Die Ergebnisse:
- Zorya fand 7 von 11 Fehlern.
- Der „stille" Sieg: Einer der von Zorya gefundenen Fehler war ein „stiller Integer-Overflow". Es war ein mathematischer Fehler, der das Programm nicht abstürzen ließ und keinen Alarm auslöste. Kein anderes Werkzeug fand diesen Fehler, es sei denn, jemand hatte ihnen manuell genau gesagt, wonach sie suchen sollten. Zorya fand ihn automatisch.
- Der Kompromiss: Zorya ist langsamer als die Werkzeuge, die „zufällige Daten werfen" (Fuzzer). Während ein Fuzzer möglicherweise innerhalb von Sekunden einen Absturz findet, benötigt Zorya etwa 16 Minuten, um einen Fehler zu finden. Allerdings benötigt Zorya keinen Menschen, der für jede einzelne Funktion ein spezifisches Testskript schreibt; es analysiert die Binärdatei direkt.
4. Das Fazit
Dieser Artikel zeigt, dass wir nun fortschrittliche „Geisterarbeiter"-Inspektionen einsetzen können, um tiefe, versteckte Sicherheitslücken in komplexer, multithread-fähiger Go-Software zu finden. Obwohl es etwas länger dauert als andere Methoden, kann es „stille" Fehler finden, die andere Werkzeuge völlig übersehen, und macht so unsere digitale Infrastruktur sicherer.
Kurz gesagt: Sie haben einem Sicherheitsroboter beigebracht, eine chaotische Fabrik anzuhalten, einen Schnappschuss der Arbeiter zu machen und die Pfade zu prüfen, die niemand sonst geht, und dabei erfolgreich versteckte Fallen zu finden, die zuvor unsichtbar waren.
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.