GWP-ASan i KFENCE to probabilistyczne narzędzia do wykrywania problemów z pamięcią odpowiednio w przestrzeni użytkownika i jądrze. Gdy ta opcja jest włączona, niewielka liczba przydziałów jest chroniona za pomocą dodatkowych stron dotyczących pamięci, które otaczają przydzieloną pamięć. Dzięki temu można wykrywać przepełnienie bufora i użycie po zwolnieniu z niewielkim obciążeniem wydajności. Nawet przy niewielkiej próbie próbek chronionych alokacji, po wdrożeniu na dużą skalę można skutecznie wykrywać błędy w zabezpieczeniach pamięci. Od czasu ich wprowadzenia narzędzia te pomogły wykryć wiele błędów platformy i okazało się, że są one cennym narzędziem do poprawy stabilności i bezpieczeństwa. Zachęcamy dostawców do włączenia tych funkcji i dokładnego monitorowania błędów wykrytych na urządzeniach użytkowników końcowych.
Deweloperzy powinni sprawdzać obecność awarii za pomocą narzędzi /data/tombstones
, logcat
lub monitorowania potoku DropboxManager
dostawcy pod kątem błędów użytkowników.
Więcej informacji znajdziesz w dokumentacji dotyczącej debugowania kodu natywnego na Androida.
Debugowanie natywnego kodu platformy AndroidaGWP-ASan do wykrywania błędów bezpieczeństwa pamięci w przestrzeni użytkownika
W Androidzie 11 dla przestrzeni użytkownika wprowadziliśmy mechanizm GWP-ASan do obsługi alokacji stosu. Gdy GWP-ASan wykryje błąd, rejestruje raport o awarii z użyciem Cause: [GWP-ASan]:
i kończy proces. Raporty o błędach zawierają dodatkowe informacje o przypisaniu i odpisaniu, które ułatwiają znalezienie przyczyny.
GWP-ASan jest losowo włączany podczas uruchamiania w przypadku 1% procesów systemowych lub aplikacji oraz aplikacji, które w pliku AndroidManifest.xml
mają ustawioną wartość android:gwpAsanMode
.
KFENCE do wykrywania błędów dotyczących bezpieczeństwa pamięci jądra
Android 12 wprowadził KFENCE do alokacji stosu jądra. Gdy KFENCE wykryje błąd, zarejestruje raport o awarii, zaczynając od BUG: KFENCE,
, wyłącza strony zabezpieczające i kontynuuje wykonywanie.
Umożliwia to włączenie mechanizmu wykrywania błędów jądra, który minimalnie wpływa na wrażenia użytkownika.
Więcej informacji o KFENCE znajdziesz w dokumentacji dostępnej na stronie https://www.kernel.org.