GWP-ASan i KFENCE to probabilistyczne narzędzia do wykrywania pamięci, odpowiednio dla przestrzeni użytkownika i jądra. Po włączeniu niewielka liczba alokacji jest chroniona dodatkowymi stronami pamięci otaczającymi przydzieloną pamięć. Umożliwia to wykrywanie przepełnień bufora i zwolnień przy znikomym narzucie wydajności. Nawet przy małej częstotliwości próbkowania dla strzeżonych alokacji, wdrożone na dużą skalę, mogą skutecznie wykrywać błędy związane z bezpieczeństwem pamięci. Od czasu ich wprowadzenia narzędzia te pomogły zidentyfikować wiele błędów platformy i okazały się cennym narzędziem poprawiającym stabilność i bezpieczeństwo. Zachęcamy dostawców do ich włączenia i dokładnego monitorowania błędów wykrytych na urządzeniach użytkowników końcowych.
Programiści powinni sprawdzić obecność awarii, sprawdzając /data/tombstones
, logcat
lub monitorując potok DropboxManager
dostawcy pod kątem błędów użytkownika końcowego.
Aby uzyskać więcej informacji, zobacz nasze dokumenty dotyczące debugowania natywnego kodu systemu Android.
Debugowanie natywnego kodu platformy AndroidGWP-ASan do wykrywania błędów związanych z bezpieczeństwem pamięci użytkownika
GWP-ASan został wprowadzony w Androidzie 11 na potrzeby alokacji sterty w przestrzeni użytkownika. Gdy GWP-ASan wykryje błąd, rejestruje raport o awarii z Cause: [GWP-ASan]:
i kończy proces. Raporty o błędach zawierają dodatkowe informacje o alokacji i dezalokacji, które ułatwiają identyfikację pierwotnej przyczyny.
GWP-ASan jest losowo włączany podczas uruchamiania dla 1% procesów systemowych lub aplikacji oraz dla aplikacji, które ustawiają android:gwpAsanMode
w swoim pliku AndroidManifest.xml
.
KFENCE do wykrywania błędów związanych z bezpieczeństwem pamięci jądra
W systemie Android 12 wprowadzono KFENCE do alokacji sterty jądra. Kiedy KFENCE wykryje błąd, rejestruje raport o awarii zaczynający się od BUG: KFENCE,
wyłącza strony ochronne i kontynuuje wykonywanie. Umożliwia to mechanizm wykrywania błędów jądra, który minimalnie wpływa na wygodę użytkownika.
Aby dowiedzieć się więcej o KFENCE, zobacz dokumentację dostępną na stronie https://www.kernel.org