Android 14 saattaa lisätä uuden beta-ominaisuuden nimeltä "edistynyt muistisuojaus", joka voi suojata muistin turvallisuusvirheiltä yhteensopivissa laitteissa.
Muistin turvallisuus on ollut Googlen tärkein prioriteetti viime aikoina, sillä muistin turvallisuusvirheet ovat yleensä ohjelmistokehityksen vakavimpia bugeja. Itse asiassa muistin turvallisuushaavoittuvuudet aiheuttivat suurimman osan vakavista Androidista haavoittuvuuksia vuoteen 2022 asti, jolloin Google kirjoitti merkittävän osan Androidin uudesta alkuperäisestä koodi kohdassa Rust ohjelmointikieli C/C++:n sijaan. Google on pyrkinyt tukemaan muita keinoja lieventää muistin turvallisuuden haavoittuvuuksia Androidissa, joista yksi on nimeltään muistin merkitseminen. Käynnissä olevissa tuetuissa laitteissa Android 14, saattaa olla uusi "edistynyt muistisuojaus" -asetus, joka voi vaihtaa tämän ominaisuuden.
Memory Tagging Extension (MTE) on Arm v9 -suorittimien pakollinen laitteistoominaisuus, joka suojaa muistilta turvallisuusvirheitä (jolla on lieviä suoritusaikakustannuksia) tarjoamalla yksityiskohtaisia tietoja muistista rikkomuksia.
Kuten Google selittää, "korkealla tasolla MTE merkitsee jokaisen muistin varauksen/vapautuksen lisämetatiedoilla. Se määrittää tunnisteen muistipaikkaan, joka voidaan sitten liittää osoittimiin, jotka viittaavat kyseiseen muistipaikkaan. Suoritin tarkistaa suorituksen aikana, että osoitin ja metatietotunnisteet täsmäävät jokaisen latauksen ja tallennuksen yhteydessä.Google on työskennellyt tukeakseen MTE: tä kaikkialla Android-ohjelmistopinossa useiden julkaisujen ajan. Android 12:ssa scudo, Androidin kasan allokaattori, lisäsi tuen kolmelle MTE-käyttötilalle yhteensopivissa laitteissa: synkroninen tila, asynkroninen tila ja epäsymmetrinen tila. Google teki myös mahdolliseksi ottaa MTE käyttöön järjestelmäprosesseissa rakennusvaiheessa tai järjestelmän ominaisuuksien ja/tai ympäristömuuttujien kautta. Sovellukset voivat osallistua MTE-tukeen Android: memtagMode attribuutti. Kun MTE on otettu käyttöön Androidin prosesseissa, kokonaiset muistin turvallisuusvirheet, kuten use-af-free ja puskurin ylivuoto, laukaisevat kaatumisen hiljaisen muistin vioittumisen sijaan.
Sisään Android 13, Google lisäsi käyttäjätilaan ABI: n, joka välittää pyydetyn MTE-toimintatilan käynnistyslataimelle. Tätä voidaan käyttää ottamaan MTE käyttöön yhteensopivissa laitteissa, joiden mukana ei ole oletusarvoisesti käytössä, tai vaihtoehtoisesti sitä voidaan käyttää poistamaan se käytöstä yhteensopivissa laitteissa, joissa se on käytössä oletuksena. Ro.arm64.memtag.bootctl_supported system -ominaisuuden asettaminen arvoon "true" Android 13:ssa kertoisi järjestelmälle, että käynnistyslatain tukee ABI: ta ja laukaisee myös Kehittäjäasetukset-valikossa näkyvän painikkeen, jonka avulla käyttäjä voi ottaa MTE: n käyttöön seuraavan kerran. käynnistä uudelleen. Tämä oli suunnattu kehittäjille, jotka halusivat testata sovellustensa toimintaa MTE: n ollessa käytössä.
Android 14:ssä MTE: n ottaminen käyttöön yhteensopivilla laitteilla saattaa kuitenkin edellyttää sukeltamista kehittäjäasetuksiin. Jos laitteessa on Arm v8.5+ CPU, jossa on MTE-tuki, laitetoteutus tukee ABI: tä pyydetyn MTE-käyttötilan kommunikoimiseksi käynnistyslataimelle, ja uusi järjestelmän ominaisuus 'ro.arm64.memtag.bootctl_settings_toggle' on asetettu arvoon tosi, jolloin uusi lisämuistin suojaussivu saattaa ilmestyä kohdassa Asetukset > Suojaus ja yksityisyys > Lisää suojausta asetukset. Tämä sivu voidaan avata myös uuden kautta ACTION_ADVANCED_MEMORY_PROTECTION_SETTINGS tarkoituksellista toimintaa.
Erityisesti Tensor G2 -piirisarja Google Pixel 7 sarja käyttää Arm v8.2 -suoritinytimiä, joten ne eivät tue MTE: tä. Jos tuleva Google Pixel 8 -sarja käyttää uusia Arm v9 -suoritinytimiä kuten monet muutkin Android-lippulaivalaitteet, niissä olisi laitteisto, joka pystyy tukemaan MTE: tä. Nähtäväksi jää, onnistuuko tämä "edistynyt muistisuojaus" todella vakaassa julkaisussa.
Kiitos turvallisuustutkijalle @flawedworlddev heidän avustaan tässä artikkelissa!