GWP-ASan i KFENCE to probabilistyczne narzędzia do wykrywania problemów z pamięcią w odpowiednio przestrzeni użytkownika i jądrze. Gdy ta opcja jest włączona, niewielka liczba alokacji jest chroniona za pomocą dodatkowych stron 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 przydziałów, gdy są stosowane na dużą skalę, mogą 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 sprawdzić, czy nie ma awarii, korzystając z funkcji /data/tombstones
, logcat
lub monitorując ścieżkę dostawcy DropboxManager
pod kątem błędów po stronie użytkownika.
Więcej informacji znajdziesz w dokumentacji dotyczącej debugowania kodu natywnych aplikacji na Androida.
Debugowanie kodu natywnych aplikacji na platformę AndroidGWP-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 pamięci heap. 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 problemu.
GWP-ASan jest losowo włączany przy starcie 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 w zabezpieczeniach pamięci jądra
Android 12 wprowadził KFENCE do alokacji stosu jądra. Gdy KFENCE wykryje błąd, rejestruje raport o awarii, który zaczyna się od BUG: KFENCE,
, wyłącza strony ochrony 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.