Share
Beitragsbild zu Speicherfehler in Live-Systemen aufspüren: GWP-ASan macht es möglich

Speicherfehler in Live-Systemen aufspüren: GWP-ASan macht es möglich

18. Dezember 2025

Speichersicherheitsprobleme zählen zu den Schwachstellen moderner Software. Während klassische Tools wie AddressSanitizer in der Entwicklung überzeugen, scheitern sie in Produktionsumgebungen am enormen Ressourcenverbrauch. Eine innovative Lösung verspricht nun, diese Lücke zu schließen: GWP-ASan kombiniert effektive Fehlererkennung mit nahezu vernachlässigbarem Leistungseinfluss.

Produktionsreife Fehlererkennung ohne Performance-Einbußen

Speicherverwaltungsfehler wie Use-after-free-Zugriffe oder Pufferüberläufe gehören zu den bevorzugten Angriffszielen von Hackern, wie die Experten von Trail of Bits in einem aktuellen Beitrag berichten. Entwickler setzen während der Programmierung häufig auf AddressSanitizer, doch dieser Ansatz verursacht einen zwei- bis vierfachen Leistungsaufwand und eignet sich daher nicht für den Produktivbetrieb.

GWP-ASan (die Abkürzung steht für „GWP-ASan Will Provide Allocation SANity“) bietet einen alternativen Weg. Das Werkzeug nutzt ein Sampling-Verfahren, bei dem lediglich ein Bruchteil aller Speicherallokationen überwacht wird. Dadurch gelingt es, kritische Fehlertypen wie Double-Free, Use-after-free und Heap-Buffer-Overflows auch in laufenden Systemen zu identifizieren – bei nahezu unveränderter Geschwindigkeit.

Grafik Quelle: Trail of Bits

Technische Grundlagen: So arbeitet die Sampling-Methode

Verschiedene Implementierungen von Allocation Sanitizern basieren auf dem Konzept von Electric Fence. Die zentrale Idee: Zufällig ausgewählte Heap-Allokationen werden nicht im regulären Speicherbereich abgelegt, sondern in isolierte Zonen mit sogenannten Guard Pages verschoben.

Diese Schutzmechanismen umgeben jede überwachte Allokation mit zwei nicht zugänglichen Speicherseiten – eine vor und eine nach dem reservierten Bereich. Versucht das Programm, auf diese Schutzzonen zuzugreifen, wird der Fehler sofort registriert und gemeldet.

Eine technische Herausforderung ergibt sich aus der seitenweisen Speicherverwaltung der Betriebssysteme. Während diese üblicherweise 4 oder 16 Kilobyte große Blöcke verwalten, fordern Anwendungen oft deutlich kleinere Mengen an. Der resultierende Freiraum zwischen den Schutzbereichen könnte kleinere Überläufe unentdeckt lassen.

Um diese Einschränkung zu kompensieren, positioniert GWP-ASan die Allokationen nach dem Zufallsprinzip entweder linksbündig oder rechtsbündig innerhalb des verfügbaren Bereichs. Diese Strategie maximiert die Wahrscheinlichkeit, dass fehlerhafte Zugriffe auf eine Schutzseite treffen.

Drei Ausrichtungsszenarien sind dabei möglich:

  • Linksbündige Platzierung: Erfasst Unterlauf-Fehler zuverlässig, entdeckt bei Überläufen jedoch nur größere Verletzungen
  • Rechtsbündige Platzierung: Identifiziert selbst einzelne überflüssige Bytes, übersieht dafür kleinere Unterläufe
  • Ausrichtung mit Lücke: Bei speziellen Alignment-Anforderungen entsteht unvermeidbar ein Zwischenraum, in dem kleine Überläufe verborgen bleiben können

Use-after-free-Probleme erkennt das System durch Entzug der Zugriffsrechte auf freigegebene Speicherbereiche. Jeder nachfolgende Zugriff erzeugt einen Segmentierungsfehler, den GWP-ASan registriert.

Praxiseinsatz in führenden Softwareprojekten

Der Sampling-Ansatz prädestiniert GWP-ASan für den Produktionseinsatz. Typischerweise werden weniger als 0,1 Prozent der Allokationen geschützt, was einen kaum messbaren Overhead verursacht. Bei Millionen von Anwendern führt diese Strategie dennoch zur Entdeckung auch seltener Fehler.

Namhafte Projekte haben die Technologie bereits integriert:

  • Google Chromium: Standardmäßig aktiviert in Chrome für Windows und macOS
  • TCMalloc: Googles Thread-Caching-Speicherverwaltung für C und C++ enthält GWP-ASan
  • Mozilla Firefox: Als „Probabilistic Heap Checker“ (PHC) in Firefox Nightly implementiert, Aktivierung für den Release-Kanal in Vorbereitung
  • Android: Für ausgewählte Systemdienste aktiviert, seit Android 14 nutzen alle Apps standardmäßig „Recoverable GWP-ASan“ bei etwa einem Prozent der Starts
  • Firebase Crashlytics: Integration im Echtzeit-Crash-Reporting
  • Apple WebKit: Unter der Bezeichnung „Probabilistic Guard Malloc“ verfügbar

Entwickler können ihre Programme mit LLVM und GWP-ASan kompilieren und so von der Technologie profitieren.

Praktische Integration in eigene Projekte

Die Einbindung in C++-Programme, die mit Clang erstellt werden, gestaltet sich unkompliziert. Das Konzept lässt sich auf alle Sprachen übertragen, die GWP-ASan unterstützen.

Voraussetzung ist ein kompatibler Allokator. Scudo aus dem LLVM-Projekt eignet sich hierfür und kommt auch in Android sowie Fuchsia zum Einsatz. Die Aktivierung erfolgt durch das Compiler-Flag -fsanitize=scudo. Eine Kombination mit dem UndefinedBehaviorSanitizer ist über -fsanitize=scudo,undefined möglich – beide Varianten sind produktionstauglich.

Nach der Kompilierung lassen sich die GWP-ASan-Parameter über Umgebungsvariablen beim Prozessstart konfigurieren:

  • Enabled: Boolescher Wert zur Aktivierung oder Deaktivierung
  • MaxSimultaneousAllocations: Maximale Anzahl gleichzeitig geschützter Allokationen
  • SampleRate: Wahrscheinlichkeit der Überwachung (Verhältnis geschützter zu ungeschützten Allokationen)

Die Parameter verfügen über Standardwerte (16 für MaxSimultaneousAllocations, 5000 für SampleRate), die bei Bedarf durch externe Funktionen überschrieben werden können.

Bei der Fehlererkennung gibt das Tool aussagekräftige Meldungen aus. Die statistische Natur bedeutet jedoch, dass Fehler nicht bei jedem Durchlauf erkannt werden – die Erkennungsrate hängt von den gewählten Parametern ab.

Die Lesbarkeit von Fehlermeldungen lässt sich durch Symbolisierung mit dem LLVM-Skript compiler-rt/lib/gwp_asan/scripts/symbolize.sh verbessern. Es wandelt Speicheradressen in Symbole und Quellcode-Referenzen um.

Ressourcenverbrauch und Performance-Analyse

Der tatsächliche Overhead variiert je nach Implementierung. Manche Varianten optimieren den Speicherverbrauch durch vorab angelegte Puffer mit alternierenden Schutzseiten, wodurch geschützte Allokationen statt drei nur etwa zwei Seiten belegen. Dies beschränkt die Überwachung allerdings auf Bereiche unterhalb einer Speicherseitengröße.

Praktische Tests mit einem Beispielprogramm, das Speicher in Schleifen allokiert und freigibt, zeigen interessante Ergebnisse. Zunächst bestätigt ein Kontrollversuch, dass die Allokationen selbst den Hauptanteil der Ausführungszeit ausmachen.

Ein Vergleich zwischen Standard-Allokator und Scudo (ohne GWP-ASan) offenbart überraschenderweise deutlich kürzere Laufzeiten für Scudo. Bei aktiviertem GWP-ASan zeigt sich ein linearer Zusammenhang zwischen der Anzahl überwachter Allokationen und der Ausführungszeit: Je niedriger die SampleRate, desto größer der Performance-Einfluss.

Diese Linearität ermöglicht eine präzise Justierung: Die SampleRate kann so gewählt werden, dass ausreichend Allokationen erfasst werden, ohne die Performance inakzeptabel zu beeinträchtigen. Bei bestimmungsgemäßer Verwendung mit hohen SampleRate-Werten bleibt der Overhead vernachlässigbar.

Fazit: Lohnende Erweiterung der Sicherheitsarchitektur

GWP-ASan erweitert die Fehlererkennung in Produktionsumgebungen effektiv bei minimalem Ressourcenverbrauch. Als zusätzliche Verteidigungslinie kann es Sicherheitslücken aufdecken, die andere Methoden übersehen.

Zu beachten ist allerdings, dass erkannte Fehler bereits zuvor aufgetreten sein können – die Sampling-Rate bestimmt, wie schnell Probleme identifiziert werden. Dennoch überwiegt der Nutzen: Eine Erkennungschance ist besser als keine.

Für Projekte, die Allocation Sanitization einführen möchten, empfiehlt sich die Einrichtung eines strukturierten Berichtssystems zur Auswertung gesammelter Absturzdaten. Eine umfassende Speicherfehlererkennung sollte neben ASan und GWP-ASan auch Techniken wie Fuzzing und Buffer Hardening umfassen.

Die wissenschaftliche Publikation „GWP-ASan: Sampling-Based Detection of Memory-Safety Bugs in Production“ bietet vertiefende Details und Analysen zum praktischen Einsatz der Technologie.

„Die in diesem Beitrag bereitgestellten Informationen wurden sorgfältig recherchiert, erheben jedoch keinen Anspruch auf Vollständigkeit oder absolute Richtigkeit. Sie dienen ausschließlich der allgemeinen Orientierung und ersetzen keine professionelle Beratung. Die Redaktion übernimmt keine Haftung für eventuelle Fehler, Auslassungen oder Folgen, die aus der Nutzung der Informationen entstehen.“

Das könnte Sie auch interessieren


Bild/Quelle: https://depositphotos.com/de/home.html