GWP-ASan und KFENCE sind probabilistische Tools zur Arbeitsspeichererkennung für den Nutzerbereich bzw. den Kernel. Wenn diese Option aktiviert ist, werden einige Zuweisungen durch zusätzliche Speicherseiten geschützt, die den zugewiesenen Speicher umgeben. Dadurch können Pufferüberläufe und Use-After-Free-Funktionen bei vernachlässigbarem Leistungsaufwand erkannt werden. Selbst bei einer geringen Stichprobenrate für die geschützten Zuweisungen können sie bei einer großen Anzahl von Bereitstellungen effektiv Speichersicherheitsfehler erkennen. Seit ihrer Einführung haben diese Tools dazu beigetragen, zahlreiche Plattformfehler zu identifizieren, und sich als wertvolles Tool zur Verbesserung der Stabilität und Sicherheit erwiesen. Wir empfehlen Anbietern, diese zu aktivieren und die auf den Geräten der Endnutzer erkannten Fehler genau im Blick zu behalten.
Entwickler sollten nach Abstürzen suchen, indem sie /data/tombstones
, logcat
prüfen oder die DropboxManager
-Pipeline des Anbieters auf Endnutzerfehler überwachen.
Weitere Informationen finden Sie in unserer Dokumentation zum Debuggen von nativem Android-Code.
Nativen Android-Plattformcode debuggenGWP-ASan zum Erkennen von Speichersicherheitsfehlern im Userspace
GWP-ASan wurde in Android 11 für Nutzerbereich-Heap-Zuweisungen eingeführt. Wenn GWP-ASan einen Fehler erkennt, wird ein Absturzbericht mit Cause: [GWP-ASan]:
protokolliert und der Prozess beendet. Die Fehlerberichte enthalten zusätzliche Informationen zur Zuweisung und Deaktivierung, die die Ermittlung der Ursache erleichtern.
GWP-ASan wird beim Start für 1% der Systemprozesse oder Anwendungen sowie für Anwendungen, die android:gwpAsanMode
in ihrer Datei AndroidManifest.xml
festlegen, nach dem Zufallsprinzip aktiviert.
KFENCE zum Erkennen von Kernel-Speichersicherheitsfehlern
Mit Android 12 wurde KFENCE für Kernel-Heap-Zuweisungen eingeführt. Wenn KFENCE einen Fehler erkennt, wird ein Absturzbericht mit BUG: KFENCE,
protokolliert, die Guard-Seiten werden deaktiviert und die Ausführung fortgesetzt.
Dadurch wird ein Mechanismus zur Erkennung von Kernel-Fehlern ermöglicht, der sich nur minimal auf die Nutzerfreundlichkeit auswirkt.
Weitere Informationen zu KFENCE finden Sie in der Dokumentation unter https://www.kernel.org.