Android 14 może dodać zaawansowaną funkcję ochrony pamięci, aby chronić Twoje urządzenie przed błędami bezpieczeństwa pamięci

Android 14 może dodać nową funkcję w wersji beta o nazwie „zaawansowana ochrona pamięci”, która może chronić przed błędami bezpieczeństwa pamięci na kompatybilnych urządzeniach.

Bezpieczeństwo pamięci stało się ostatnio głównym priorytetem Google, ponieważ błędy związane z bezpieczeństwem pamięci są zwykle jednymi z najpoważniejszych błędów w tworzeniu oprogramowania. W rzeczywistości luki w zabezpieczeniach pamięci odpowiadają za większość poważnych problemów z Androidem luk do 2022 r., kiedy to Google napisał znaczną część nowej natywnej wersji Androida kod w Język programowania Rust zamiast C/C++. Google pracuje nad obsługą innych sposobów łagodzenia luk w zabezpieczeniach pamięci w systemie Android, z których jedna nazywa się tagowaniem pamięci. Na obsługiwanych urządzeniach działa Androida 14może pojawić się nowe ustawienie „zaawansowanej ochrony pamięci”, które umożliwi przełączanie tej funkcji.

Rozszerzenie znacznika pamięci (MTE) to obowiązkowa funkcja sprzętowa procesorów Arm v9, która chroni przed pamięcią błędów bezpieczeństwa (z niewielkim narzutem kosztów wydajności w czasie wykonywania), dostarczając szczegółowe informacje o pamięci naruszenia.

Jak wyjaśnia Google„na wysokim poziomie MTE oznacza każdą alokację/dealokację pamięci dodatkowymi metadanymi. Przypisuje znacznik do lokalizacji pamięci, którą można następnie powiązać ze wskaźnikami odwołującymi się do tej lokalizacji pamięci. W czasie wykonywania procesor sprawdza, czy wskaźnik i znaczniki metadanych pasują do każdego ładowania i przechowywania.

Już od kilku wydań Google pracuje nad obsługą MTE w całym stosie oprogramowania Android. W systemie Android 12 scudo, alokator sterty systemu Android, dodał obsługę trzech trybów działania MTE na kompatybilnych urządzeniach: tryb synchroniczny, tryb asynchroniczny i tryb asymetryczny. Firma Google umożliwiła także włączenie MTE dla procesów systemowych w czasie kompilacji lub poprzez właściwości systemu i/lub zmienne środowiskowe. Aplikacje mogą wyrazić zgodę na wspieranie MTE za pośrednictwem Android: memtagMode atrybut. Gdy funkcja MTE jest włączona dla procesów w systemie Android, całe klasy błędów związanych z bezpieczeństwem pamięci, takich jak użycie po zwolnieniu i przepełnienia bufora, powodują awarię zamiast cichego uszkodzenia pamięci.

W Androida 13, Google dodał ABI dla przestrzeni użytkownika, aby przekazać programowi ładującemu żądany tryb działania MTE. Można to wykorzystać do włączenia MTE na kompatybilnych urządzeniach, które nie są dostarczane z domyślnie włączoną funkcją, lub alternatywnie można go użyć do wyłączenia go na kompatybilnych urządzeniach, które mają tę funkcję włączoną domyślny. Ustawienie właściwości systemowej ro.arm64.memtag.bootctl_supported na „true” w systemie Android 13 poinformuje system, że program ładujący obsługuje ABI, a także uruchamia przycisk pojawiający się w menu Opcje programisty, który umożliwia użytkownikowi włączenie MTE w następnej kolejności ponowne uruchomienie. Było to skierowane do programistów, którzy chcieli przetestować zachowanie swoich aplikacji z włączoną funkcją MTE.

Jednak w systemie Android 14 włączenie MTE na kompatybilnych urządzeniach może już wymagać zagłębienia się w Opcje programisty. Jeśli urządzenie jest wyposażone w procesor Arm v8.5+ z obsługą MTE, implementacja urządzenia obsługuje ABI w celu komunikowania żądanego trybu pracy MTE do programu ładującego, a nowy właściwość systemowa „ro.arm64.memtag.bootctl_settings_toggle” jest ustawiona na true, wówczas może pojawić się nowa strona „zaawansowana ochrona pamięci” w Ustawieniach > Bezpieczeństwo i prywatność > Więcej zabezpieczeń ustawienia. Stronę tę można również uruchomić poprzez nową ACTION_ADVANCED_MEMORY_PROTECTION_SETTINGS zamierzone działanie.

Warto zauważyć, że chipset Tensor G2 w Google Pixel 7 Seria wykorzystuje rdzenie procesora Arm v8.2, dlatego nie obsługują MTE. Jeśli nadchodząca seria Google Pixel 8 będzie korzystać z nowych rdzeni procesora Arm v9, podobnie jak wiele innych flagowych urządzeń z Androidem, wówczas będą one miały sprzęt obsługujący MTE. Jednak okaże się, czy ta funkcja „zaawansowanej ochrony pamięci” faktycznie pojawi się w stabilnej wersji.

Dziękuję badaczowi bezpieczeństwa @flawedworlddev za pomoc przy tym artykule!