Android 14 kan legge til en ny betafunksjon kalt "avansert minnebeskyttelse" som kan beskytte mot minnesikkerhetsfeil på kompatible enheter.
Minnesikkerhet har vært en stor prioritet for Google i det siste, ettersom minnesikkerhetsfeil har en tendens til å være noen av de mest alvorlige feilene i programvareutvikling. Faktisk pleide sikkerhetssårbarheter i minnet å stå for et flertall av alvorlige Android sårbarheter frem til 2022, som er da Google skrev en betydelig del av Androids nye innfødte kode i Rust programmeringsspråk i stedet for C/C++. Google har jobbet med å støtte andre måter å redusere sikkerhetssårbarheter for minne i Android, hvorav en kalles minnemerking. På støttede enheter som kjører Android 14, kan det være en ny "avansert minnebeskyttelse"-innstilling som kan slå av denne funksjonen.
Memory Tagging Extension (MTE) er en obligatorisk maskinvarefunksjon på Arm v9 CPUer som beskytter mot minne sikkerhetsfeil (med en liten kjøretidsytelseskostnad) ved å gi detaljert informasjon om minne brudd.
Som Google forklarer, "på et høyt nivå merker MTE hver minneallokering/deallokering med ekstra metadata. Den tilordner en kode til en minneplassering, som deretter kan assosieres med pekere som refererer til den minneplasseringen. Ved kjøring sjekker CPU at pekeren og metadata-taggene samsvarer med hver lasting og lagring.»Google har jobbet med å støtte MTE i hele Android-programvarestabelen i flere utgivelser nå. I Android 12 har scudo, Androids heap-allokator, lagt til støtte for tre MTE-driftsmoduser på kompatible enheter: synkron modus, asynkron modus og asymmetrisk modus. Google gjorde det også mulig å aktivere MTE for systemprosesser på byggetidspunktet eller gjennom systemegenskaper og/eller miljøvariabler. Apper kan velge å støtte MTE gjennom android: memtagMode Egenskap. Når MTE er aktivert for prosesser i Android, utløser hele klasser av minnesikkerhetsfeil som bruk-etter-fri og bufferoverløp et krasj i stedet for et stille minnekorrupsjon.
I Android 13, la Google til en ABI for brukerområdet for å kommunisere den forespurte MTE-driftsmodusen til oppstartslasteren. Dette kan brukes til å aktivere MTE på kompatible enheter som ikke leveres med den aktivert som standard, eller alternativt kan den brukes til å deaktivere den på kompatible enheter som har den aktivert av misligholde. Å sette ro.arm64.memtag.bootctl_supported systemegenskapen til "true" i Android 13 vil fortelle systemet at oppstartslasteren støtter ABI og utløser også en knapp som vises i Utvikleralternativer-menyen som tillot brukeren å aktivere MTE på neste starte på nytt. Dette var rettet mot utviklere som ønsket å teste oppførselen til appene deres med MTE aktivert.
I Android 14 kan imidlertid aktivering av MTE på kompatible enheter lenger kreve å dykke inn i utvikleralternativer. Hvis enheten har en Arm v8.5+ CPU med MTE-støtte, støtter enhetsimplementeringen ABI for å kommunisere den forespurte MTE-driftsmodusen til oppstartslasteren, og den nye systemegenskapen 'ro.arm64.memtag.bootctl_settings_toggle' er satt til true, så kan en ny "avansert minnebeskyttelse"-side vises i Innstillinger > Sikkerhet og personvern > Mer sikkerhet innstillinger. Denne siden kan også lanseres gjennom den nye ACTION_ADVANCED_MEMORY_PROTECTION_SETTINGS intensjonshandling.
Spesielt Tensor G2-brikkesettet i Google Pixel 7 serien bruker Arm v8.2 CPU-kjerner, og støtter derfor ikke MTE. Hvis den kommende Google Pixel 8-serien bruker nye Arm v9 CPU-kjerner som mange andre flaggskip Android-enheter gjør, vil de ha maskinvare som kan støtte MTE. Det gjenstår imidlertid å se om denne "avanserte minnebeskyttelsen"-funksjonen faktisk kommer inn i den stabile utgivelsen.
Takk til sikkerhetsforsker @flawedworlddev for deres hjelp til denne artikkelen!