Android 14 voegt mogelijk een nieuwe bètafunctie toe, genaamd "geavanceerde geheugenbescherming", die bescherming kan bieden tegen geheugenveiligheidsbugs op compatibele apparaten.
Geheugenveiligheid is de laatste tijd een belangrijke prioriteit voor Google, omdat bugs in geheugenveiligheid vaak tot de ernstigste bugs in de softwareontwikkeling behoren. In feite waren kwetsbaarheden in de geheugenveiligheid verantwoordelijk voor het merendeel van de ernstige Android-apparaten kwetsbaarheden tot 2022, toen Google een aanzienlijk deel van de nieuwe native versie van Android schreef code in de Roest programmeertaal in plaats van C/C++. Google heeft gewerkt aan het ondersteunen van andere manieren om kwetsbaarheden in de geheugenveiligheid in Android te verminderen, waaronder geheugentagging. Op ondersteunde apparaten actief Androïde 14, is er mogelijk een nieuwe instelling voor ‘geavanceerde geheugenbeveiliging’ die deze functie kan omschakelen.
Memory Tagging Extension (MTE) is een verplichte hardwarefunctie van Arm v9 CPU's die beschermt tegen geheugen veiligheidsbugs (met een kleine overhead voor de prestatiekosten) door gedetailleerde informatie over het geheugen te verstrekken overtredingen.
Google werkt nu al verschillende releases aan de ondersteuning van MTE in de hele Android-softwarestack. In Android 12 heeft scudo, de heap-allocator van Android, ondersteuning toegevoegd voor drie MTE-bedrijfsmodi op compatibele apparaten: synchrone modus, asynchrone modus en asymmetrische modus. Google heeft het ook mogelijk gemaakt om MTE in te schakelen voor systeemprocessen tijdens het bouwen of via systeemeigenschappen en/of omgevingsvariabelen. Toepassingen kunnen zich aanmelden voor ondersteuning van MTE via de Android: memtagMode attribuut. Wanneer MTE is ingeschakeld voor processen in Android, veroorzaken hele klassen geheugenveiligheidsbugs, zoals use-after-free en bufferoverflows, een crash in plaats van een stille geheugenbeschadiging.
In Androïde 13, heeft Google een ABI voor de gebruikersruimte toegevoegd om de gevraagde MTE-bedrijfsmodus naar de bootloader te communiceren. Dit kan worden gebruikt om MTE in te schakelen op compatibele apparaten die niet standaard worden geleverd met ingeschakelde apparaten, of als alternatief kan het worden gebruikt om het uit te schakelen op compatibele apparaten waarop het wel is ingeschakeld standaard. Als u de systeemeigenschap ro.arm64.memtag.bootctl_supported instelt op 'true' in Android 13, wordt het systeem verteld dat de bootloader ondersteunt de ABI en activeert ook een knop die verschijnt in het menu Ontwikkelaaropties waarmee de gebruiker MTE op de volgende kan inschakelen opnieuw opstarten. Dit was bedoeld voor ontwikkelaars die het gedrag van hun apps wilden testen terwijl MTE was ingeschakeld.
In Android 14 kan het inschakelen van MTE op compatibele apparaten echter langer vereisen dat je in de ontwikkelaarsopties duikt. Als het apparaat beschikt over een Arm v8.5+ CPU met MTE-ondersteuning, ondersteunt de apparaatimplementatie de ABI voor het communiceren van de gevraagde MTE-bedrijfsmodus naar de bootloader, en de nieuwe systeemeigenschap ‘ro.arm64.memtag.bootctl_settings_toggle’ is ingesteld op true, dan kan er een nieuwe pagina ‘geavanceerde geheugenbescherming’ verschijnen in Instellingen > Beveiliging en privacy > Meer beveiliging instellingen. Deze pagina kan ook worden gelanceerd via de nieuwe ACTION_ADVANCED_MEMORY_PROTECTION_SETTINGS opzet actie.
Met name de Tensor G2-chipset in de Google Pixel7 serie maakt gebruik van Arm v8.2 CPU-kernen en ondersteunt daarom geen MTE. Als de aankomende Google Pixel 8-serie nieuwe Arm v9 CPU-kernen gebruikt, zoals veel andere vlaggenschip-Android-apparaten, dan zouden ze hardware hebben die MTE kan ondersteunen. Het valt echter nog te bezien of deze "geavanceerde geheugenbescherming" -functie daadwerkelijk de stabiele release zal halen.
Met dank aan beveiligingsonderzoeker @flawedworlddev voor hun hulp bij dit artikel!