Android 14 kan lägga till en avancerad minnesskyddsfunktion för att skydda din enhet från minnessäkerhetsbuggar

Android 14 kan lägga till en ny betafunktion som kallas "avancerat minnesskydd" som kan skydda mot minnessäkerhetsbuggar på kompatibla enheter.

Minnessäkerhet har varit en stor prioritet för Google på sistone, eftersom minnessäkerhetsbuggar tenderar att vara några av de allvarligaste buggarna inom mjukvaruutveckling. Faktum är att sårbarheter i minnessäkerhet brukade stå för en majoritet av allvarliga Android sårbarheter fram till 2022, vilket är när Google skrev en betydande del av Androids nya infödda kod i Rust programmeringsspråk istället för C/C++. Google har arbetat med att stödja andra sätt att mildra minnessäkerhetssårbarheter i Android, varav en kallas minnestaggning. På enheter som stöds körs Android 14, kan det finnas en ny "avancerat minnesskydd"-inställning som kan växla den här funktionen.

Memory Tagging Extension (MTE) är en obligatorisk hårdvarufunktion hos Arm v9-processorer som skyddar mot minne säkerhetsbuggar (med en liten driftskostnadskostnad) genom att tillhandahålla detaljerad information om minne kränkningar.

Som Google förklarar, "på en hög nivå taggar MTE varje minnesallokering/deallokering med ytterligare metadata. Den tilldelar en tagg till en minnesplats, som sedan kan associeras med pekare som refererar till den minnesplatsen. Vid körning kontrollerar CPU: n att pekaren och metadatataggarna matchar vid varje laddning och lagring."

Google har arbetat för att stödja MTE i hela Android-programvaran i flera versioner nu. I Android 12 har scudo, Androids heap-allokator, lagt till stöd för tre MTE-driftlägen på kompatibla enheter: synkront läge, asynkront läge och asymmetriskt läge. Google gjorde det också möjligt att aktivera MTE för systemprocesser vid byggtid eller genom systemegenskaper och/eller miljövariabler. Applikationer kan välja att stödja MTE genom android: memtagMode attribut. När MTE är aktiverat för processer i Android utlöser hela klasser av minnessäkerhetsbuggar som användning efter-fri och buffertspill en krasch istället för ett tyst minneskorruption.

I Android 13, lade Google till en ABI för användarutrymmet för att kommunicera det begärda MTE-driftläget till bootloadern. Detta kan användas för att aktivera MTE på kompatibla enheter som inte levereras med det aktiverat som standard, eller alternativt kan det användas för att inaktivera det på kompatibla enheter som har det aktiverat av standard. Att ställa in ro.arm64.memtag.bootctl_supported systemegenskapen till "true" i Android 13 skulle berätta för systemet att starthanteraren stöder ABI och utlöser även en knapp som visas i menyn för utvecklaralternativ som gjorde det möjligt för användaren att aktivera MTE nästa gång starta om. Detta var riktat till utvecklare som ville testa beteendet hos sina appar med MTE aktiverat.

I Android 14 kan dock aktivering av MTE på kompatibla enheter längre kräva att du dyker in i utvecklaralternativ. Om enheten har en Arm v8.5+ CPU med MTE-stöd, stöder enhetsimplementeringen ABI för att kommunicera det begärda MTE-driftläget till bootloadern, och den nya systemegenskapen 'ro.arm64.memtag.bootctl_settings_toggle' är inställd på true, sedan kan en ny sida med "avancerat minnesskydd" visas i Inställningar > Säkerhet och integritet > Mer säkerhet inställningar. Denna sida kan också lanseras genom den nya ACTION_ADVANCED_MEMORY_PROTECTION_SETTINGS avsiktlig handling.

Speciellt Tensor G2-kretsuppsättningen i Google Pixel 7 serien använder Arm v8.2 CPU-kärnor, därför stöder de inte MTE. Om den kommande Google Pixel 8-serien använder nya Arm v9 CPU-kärnor som många andra flaggskepp Android-enheter gör, då skulle de ha hårdvara som kan stödja MTE. Det återstår att se om denna "avancerade minnesskydd"-funktion faktiskt kommer in i den stabila versionen.

Tack till säkerhetsforskare @flawedworlddev för deras hjälp med denna artikel!