Zamknij reklame

Bezpieczeństwo pamięci było ostatnio dla Google najwyższym priorytetem, ponieważ błędy pamięci są jednymi z najpoważniejszych podczas tworzenia oprogramowania. W rzeczywistości luki w tym obszarze były odpowiedzialne za większość luk krytycznych Androidaż do zeszłego roku, kiedy Google stworzył znaczną część nowego kodu natywnego Androidw języku programowania Rust zamiast C/C++. Gigant oprogramowania pracuje nad obsługą innych sposobów łagodzenia luk w pamięci w swoim systemie, z których jeden nazywa się oznaczaniem pamięci. Na obsługiwanych urządzeniach z systemem Android 14 może pojawić się nowe ustawienie o nazwie Zaawansowana ochrona pamięci, które umożliwia przełączanie tej funkcji.

Rozszerzenie Memory Tagging Extension (MTE) to obowiązkowa funkcja sprzętowa procesorów opartych na architekturze ARM v9, która zapewnia szczegółowe informacje informace o uszkodzeniu pamięci i chroni przed błędami bezpieczeństwa pamięci. Jak wyjaśnia Google: „Na wysokim poziomie MTE oznacza każdą alokację/delokację 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 znaczniki wskaźnika i metadanych są zgodne przy każdym ładowaniu i zapisywaniu.

Google pracuje nad obsługą MTE w całym pakiecie oprogramowania Android przez długi czas. Do Androidu 12 dodał alokator pamięci Scudo i obsługę trzech trybów działania MTE na kompatybilnych urządzeniach: tryb synchroniczny, tryb asynchroniczny i tryb asymetryczny. Firma umożliwiła także włączenie MTE dla procesów systemowych poprzez właściwości systemu i/lub zmienne środowiskowe. Aplikacje mogą dodawać obsługę MTE poprzez atrybut android:memtagMode. Gdy MTE jest włączone dla procesów w Androidu, całe klasy błędów bezpieczeństwa pamięci, takich jak Use-After-Free i przepełnienia bufora, będą powodować awarie zamiast cichego uszkodzenia pamięci.

Do Androidu 13 Firma Google dodała interfejs binarny aplikacji przestrzeni użytkownika (ABI), aby przekazać programowi rozruchowemu żądany tryb pracy MTE. Można tego użyć do włączenia MTE na kompatybilnych urządzeniach, które nie są dostarczane z domyślnie włączoną funkcją MTE, lub można jej użyć do wyłączenia tej funkcji na kompatybilnych urządzeniach, które mają tę funkcję domyślnie włączoną. Ustawienie właściwości systemowej ro.arm64.memtag.bootctl_supported na „true” w systemie Android 13 poinformował system, że bootloader obsługuje ABI, a także aktywował przycisk w menu opcji programistycznych, który umożliwił użytkownikowi włączenie MTE przy następnym uruchomieniu.

V AndroidU 14 jednak włączenie MTE na kompatybilnych urządzeniach może już wymagać zagłębienia się w menu opcji programisty. Jeśli urządzenie korzysta z procesora 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 nowa właściwość systemowa ro.arm64.memtag.bootctl_settings_toggle jest ustawiona na „true” , a następnie nowa strona Zaawansowana ochrona pamięci v Ustawienia → Bezpieczeństwo i prywatność → Dodatkowe ustawienia zabezpieczeń. Tę stronę można także uruchomić poprzez nową akcję ACTION_ADVANCED_MEMORY_PROTECTION_SETTINGS.

Co ciekawe, chipset Tensor G2 napędzający serię Google Pixel 7 wykorzystuje rdzenie procesora Arm v8.2, co oznacza, że ​​nie obsługuje MTE. Jeśli nadchodząca seria Google Pixel 8 będzie korzystać z nowych rdzeni Arm v9, podobnie jak inne flagowe serie androidtelefony, to ich sprzęt powinien obsługiwać MTE. Pozostaje jednak pytanie, czy funkcja „zaawansowanej ochrony pamięci” trafi do wersji stabilnej Androidw 14 roku

Najczęściej czytane dzisiaj

.