Zaawansowana funkcja ochrony pamięci Androida 14 może chronić Twoje urządzenie przed błędami bezpieczeństwa pamięci
![Zaawansowana funkcja ochrony pamięci Androida 14 może chronić Twoje urządzenie przed błędami bezpieczeństwa pamięci](https://oen.pl/wp-content/uploads/2023/02/Zaawansowana-funkcja-ochrony-pamieci-Androida-14-moze-chronic-Twoje-urzadzenie-770x470.jpg)
Android 14 dodaje nową funkcję 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 było 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 stanowiły większość poważnych luk w zabezpieczeniach Androida do 2022 r., kiedy to Google napisał znaczną część nowego natywnego kodu Androida w języku programowania Rust zamiast C/C++. Google pracuje nad wspieraniem innych sposobów łagodzenia luk w zabezpieczeniach pamięci w Androidzie, z których jeden nazywa się tagowaniem pamięci. Na obsługiwanych urządzeniach z systemem Android 14 pojawi się nowe ustawienie „zaawansowana ochrona pamięci”, które przełącza tę funkcję.
Memory Tagging Extension (MTE) to obowiązkowa funkcja sprzętowa procesorów ARM v9, która chroni przed błędami bezpieczeństwa pamięci (z niewielkim obciążeniem kosztem wydajności w czasie wykonywania), dostarczając szczegółowych informacji o naruszeniach pamięci. 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ą następnie można 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 siebie przy każdym ładowaniu i przechowywaniu”.
Google pracuje nad obsługą MTE w całym stosie oprogramowania Androida już od kilku wydań. W Androidzie 12 scudo, alokator sterty Androida, dodał obsługę trzech trybów pracy MTE na kompatybilnych urządzeniach: tryb synchroniczny, tryb asynchroniczny i tryb asymetryczny. Google umożliwiło również 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 obsługę MTE za pomocą atrybutu android:memtagMode. 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łnienie bufora, powodują awarię zamiast cichego uszkodzenia pamięci.
W Androidzie 13 Google dodał ABI dla przestrzeni użytkownika, aby przekazać bootloaderowi żądany tryb operacyjny MTE. Można tego użyć do włączenia MTE na kompatybilnych urządzeniach, które nie są dostarczane z włączoną domyślnie, lub alternatywnie można go użyć do wyłączenia go na kompatybilnych urządzeniach, które mają go domyślnie włączone. Ustawienie właściwości systemowej ro.arm64.memtag.bootctl_supported na „true” w systemie Android 13 powie systemowi, że program ładujący obsługuje ABI, a także uruchomi przycisk, który pojawi się w menu opcji programisty, co umożliwi użytkownikowi włączenie MTE przy następnym ponowne uruchomienie. Było to skierowane do programistów, którzy chcieli przetestować zachowanie swoich aplikacji z włączonym MTE.
Jednak w Androidzie 14 włączenie MTE na kompatybilnych urządzeniach nie wymaga już zagłębiania 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 do komunikowania żądanego trybu operacyjnego MTE do programu ładującego, a nowa właściwość systemowa „ro.arm64.memtag.bootctl_settings_toggle” jest ustawiona na wartość true , wtedy pojawi się nowa strona „zaawansowana ochrona pamięci” w Ustawieniach > Bezpieczeństwo i prywatność > Więcej ustawień zabezpieczeń. Tę stronę można również uruchomić za pomocą nowego działania intencji ACTION_ADVANCED_MEMORY_PROTECTION_SETTINGS.
Warto zauważyć, że chipset Tensor G2 w serii Google Pixel 7 wykorzystuje rdzenie procesora Arm v8.2, dlatego nie obsługują MTE. Jeśli nadchodząca seria Google Pixel 8 będzie wykorzystywać nowe rdzenie procesora Arm v9, podobnie jak wiele innych flagowych urządzeń z Androidem, będą one miały sprzęt obsługujący MTE.
Dzięki badaczowi bezpieczeństwa @flawedworlddev za pomoc w tym artykule!