Konfiguracja MTE

MTE można włączyć niezależnie w jądrze Androida i w dowolnym w systemie Android. Google nie narzuca żadnych konkretnych i zapewnia urządzeniu maksymalną elastyczność budowniczych.

W tym dokumencie opisujemy ustawienia i zakres MTE, które naszym zdaniem zapewnia odpowiedni kompromis między bezpieczeństwem a kosztami w przypadku Androida. dla użytkowników z włączonym usuwaniem luk w zabezpieczeniach.

Jądro

Rozszerzenie MTE w jądrze jest konfigurowane za pomocą wiersza poleceń. domyślnie jest włączone w trybie synchronizacji. Może to ulec zmianie w przypadku: kilka powodów:

  • Wykazano, że w znacznym stopniu wpływa on na skuteczność i potrzeby i optymalizacji.
  • Powszechnie uważa się, że jakość kodu jądra jest niewystarczająca, MTE w trybie egzekwowania (tj. „panic-w-failure”).

Obecnie zalecamy wyłączenie MTE jądra na urządzeniach produkcyjnych. Aby to zrobić, dodaj kasan=off do wiersza poleceń jądra systemu operacyjnego.

Obszar użytkownika

Google udostępnia domyślną listę plików binarnych przestrzeni użytkownika, które mają być chronione z MTE. Lista została przygotowana na podstawie danych wejściowych z Androida Security oraz zawiera komponenty, które są objęte podwyższonymi uprawnieniami lub obsługują niezaufane danych wejściowych. Bieżąca lista zalecanych natywnych plików binarnych z MTE można znaleźć w memtag-common.mk w kompilacji Androida. systemu. Dodatkowo: kilka aplikacje systemowe są również uwzględnione: obecnie, Nfc, Bluetooth i SecureElement. Pliki binarne i aplikacje są włączone domyślnie w trybie asynchronicznym.

Obecnie zalecamy użycie domyślnej listy celów. (zmiany nie są wymagane). Zalecamy też ocenę Dodatki BSP i OEM do podstawowego systemu oraz włączenie MTE w wybranych które zwracają szczególną uwagę na bezpieczeństwo.

Aplikacje

Wymienione powyżej 3 aplikacje systemowe są jedynymi, w których Aktualnie dla MTE. Aby aplikacja innej firmy mogła MTE, w polu AndroidManifest.xml należy określić android:memtagMode z inną wartością niż off. Dlatego też typowe zestawy testów porównawczych, takie jak Geekbench i AnTuTu nie obsługują MTE. Jeśli MTE jądra wyłączone (patrz: kasan=off powyżej), wartości porównawcze będą może wykazywać bardzo ograniczony wpływ na skuteczność.

W przypadku pozostałych aplikacji cały czas pracujemy nad obsługą MTE Chrome. Obecna wersja Chrome w Sklepie Play zawiera memtagMode=async w pliku manifestu. Niezbędne jest też że wiele aplikacji dbających o bezpieczeństwo w ekosystemie Androida (np. aplikacje bankowe) zrobią to samo. Dzień z drugiej strony spodziewamy się, że niektóre aplikacje wymagające takie jak gry, nie wyłączają MTE.

Inne środki transportu

Powyższe instrukcje używają tylko asynchronicznego trybu MTE z całego świata. W zależności od wyposażenia inne tryby mogą być prawie lub równie szybko. Zapewniają też lepszą diagnostykę i częściowo do wykrywania luk w zabezpieczeniach.

Zalecamy przetestowanie jeszcze jednej lub dwóch innych konfiguracji spełniają wymagania dotyczące wydajności/mocy urządzenia. Tryby MTE można ustawić dla każdego rdzenia procesora w systemie, wpisując /sys/devices/system/cpu/cpu*/mte_tcf_preferred Na przykład, pisanie Działanie sync (lub asymm) spowodowałoby powodzenie procesu w przestrzeni użytkownika, który zażądał Tryb asynchroniczny jest automatycznie uaktualniany do trybu synchronizacji (lub Asymm) w trybie dyskretnym. działającego na tym rdzeniu. Tę konfigurację możesz przeprowadzić na urządzeniu w pliku .rc podczas uruchamiania.

Zalecamy pomiar jednej lub dwóch innych konfiguracji, aby sprawdzić, czy spełniają wymagania w zakresie wydajności i mocy obliczeniowej. Niektóre ciekawe konfiguracje do zbadania:

  • Asymm we wszystkich rdzeniach.
  • Asymm w dużych rdzeniach, synchronizacja w innych rdzeniach.
.

Aby sprawdzić, czy proces żąda trybu asynchronicznego (z możliwym automatycznego uaktualniania), sprawdź, czy poniższy wiersz zawiera zarówno PR_MTE_TCF_SYNC i PR_MTE_TCF_ASYNC:

  debuggerd <PID> | head -30 | grep tagged_addr

Niestety nie ma łatwego sposobu na sprawdzenie, jaki jest skuteczny tryb proces; ale każdy proces, który wyświetla obie wartości wymienione powyżej, jest zależy od sposobu automatycznego uaktualnienia.