Deweloperzy projektu GrapheneOS, rozwijającego zabezpieczoną wersję bazy kodowej AOSP (Android Open Source Project), zidentyfikowali podatność w stosie Bluetooth platformy Android 14, która potencjalnie może prowadzić do zdalnego wykonania kodu. Problem wynika z odwołania do już zwolnionego obszaru pamięci (use-after-free) w kodzie obsługi dźwięku przesyłanego przez Bluetooth LE.
Podatność została zidentyfikowana dzięki integracji dodatkowej ochrony w wywołaniu hardened_malloc, wykorzystującej rozszerzenie ARMv8.5 MTE (MemTag, Memory Tagging Extension), które pozwala na przypisywanie tagów do każdej operacji przydzielania pamięci oraz organizowanie weryfikacji poprawności korzystania z wskaźników w celu blokowania wykorzystywania podatności spowodowanych odwołaniami do już zwolnionych bloków pamięci, przepełnieniami bufora, odwołaniami przed inicjalizacją oraz używaniem poza aktualnym kontekstem.
Błąd objawia się od aktualizacji Android 14 QPR2 (Quarterly Platform Release), opublikowanej na początku marca. W głównej bazie kodowej platformy Android 14 mechanizm MTE dostępny jest jako opcja i na razie nie jest stosowany domyślnie, ale w GrapheneOS został już wdrożony dla dodatkowej ochrony, co umożliwiło zdiagnozowanie błędu po aktualizacji do Android 14 QPR2. Błąd prowadził do awarii przy używaniu słuchawek Bluetooth Samsung Galaxy Buds2 Pro z oprogramowaniem, w którym włączona była ochrona oparta na MTE. Analiza incydentu wykazała, że problem dotyczy odwołania do już zwolnionej pamięci w obsłudze Bluetooth LE, a nie awarii z powodu integracji MTE.
Podatność została usunięta w wydaniu GrapheneOS 2024030900 i dotyczy wersji dla smartfonów, w których nie włączono dodatkowej ochrony sprzętowej opartej na rozszerzeniu MTE (MTE jest obecnie dostępne tylko dla urządzeń Pixel 8 i Pixel 8 Pro). Podatność powtarza się na smartfonach Google Pixel 8 z oprogramowaniem opartym na Android 14 QPR2. W Androidzie dla smartfonów serii Pixel 8 tryb MTE można włączyć w ustawieniach dla programistów („Ustawienia / System / Opcje dla programistów / Rozszerzenia tagowania pamięci”). Włączenie MTE prowadzi do zwiększenia zużycia pamięci o około 3%, ale nie zmniejsza wydajności.
Źródło: opennet.ru
