En gruppe forskere fra Seoul Universitet og Samsung har udviklet en angrebsteknik på ARM-processorer, kaldet TikTag, som kan bruges til at omgå den hardware-beskyttelse, der kaldes MemTag (MTE, Memory Tagging Extension), som findes i chips baseret på ARMv8.5-A arkitekturen. Angrebet gør det muligt at bestemme indholdet af TikTag-tags for vilkårlige hukommelsesadresser på grund af datalækager, der opstår som følge af spekulativ udførelse af CPU-instruktioner.
MemTag-teknologien giver mulighed for at knytte tags til områder i hukommelsen og organisere kontrol af korrekt brug af pegepinde for at blokere udnyttelse af sårbarheder forårsaget af adgang til allerede frigivne hukommelsesblokke, buffer-overløb og adgang før initialisering. Når MemTag anvendes, genereres der et 4-bit tag for hver 16 byte fysisk hukommelse, som fungerer som en nøgle til adgang til denne hukommelse. Tagget kan genereres af en applikation til det allokerede hukommelsesområde ved hjælp af særlige CPU-instruktioner og derefter gemmes i de øverste ubrugte bits af pegepinden. Når der reageres på hukommelsen ved hjælp af en tagget pegepind, kontrollerer processoren overensstemmelsen af tagget knyttet til pegepinden med de tags, der er knyttet til hukommelsesblokke, og tillader adgang kun, hvis tagsene matcher.
Den foreslåede angrebsmetode gør det muligt at bestemme de tags, der er knyttet til hukommelsesblokke, og omgå MemTag-beskyttelsen. Forskerne har demonstreret muligheden for at udføre TikTag-angrebet ved at udnytte sårbarheder i Linux-kernen og Chrome-browseren, ved at bruge eksisterende sekvenser af instruktioner (gadgets) i disse produkter, som fokuserer på spekulativ udførelse af kode. Lignende gadgets, når de udføres i en spekulativ tilstand med kode, der arbejder med pegepinde, forårsager læsning af MemTag metadata afhængigt af eksterne forhold, som kan påvirkes af angriberen. Efter at have fastslået en fejlagtig forudsigelse bliver resultatet af den spekulative udførelse forkastet, men de indsamlede data forbliver i cachen og kan senere udtrækkes ved hjælp af analyse gennem sidekanaler. Sandsynligheden for en vellykket omgåelse af MemTag-beskyttelsen vurderes til 95 % i de gennemførte tests ved udførelse af angrebet i omkring 4 sekunder.

Der er opdaget to typer gadgets, der fører til lækage af oplysninger om MemTag-tags. I det første tilfælde opstår spekulativ udførelse ved forkert forudsigelse af overgang, og betingelserne for at udføre gadgetet kan skabes gennem manipulation af systemopkald. I det andet tilfælde
opstår spekulativ udførelse på grund af en fejl i forudsigelsen af sammenhængen mellem læse- og skriveoperationer ved brug af STLF-optimering (Store-To-Load-Forwarding), hvilket muliggør valg af tag ved at evaluere tilstanden af cachen (hvis tagget matcher, vil værdien blive direkte omdirigeret fra den tidligere 'store'-kommando til 'load'-operationen og ændre cachetilstanden). Den første type gadgets er velegnet til angreb på Linux-kernen, mens den anden er rettet mod JavaScript-motoren V8, der anvendes i browsers baseret på Chromium. Prototypen af værktøjet til angrebet er offentliggjort på GitHub.


Firmaet ARM bekræftede muligheden for at udføre angreb på systemer med Cortex-X2-, Cortex-X3-, Cortex-A510-, Cortex-A520-, Cortex-A710-, Cortex-A715- og Cortex-A720-processorer, men har ikke planer om at ændre CPU'en for at blockere problemet, da MemTag-arkitekturen understøtter, at tags ikke er hemmelige oplysninger for applikationer. Problemet er også ikke løst i Chromium-kodebasen, da beskyttelsen baseret på MemTag i Chrome-browseren endnu ikke er aktiveret som standard. Teamet ansvarlig for sikkerheden på Android-platformen anerkendte muligheden for angreb på Pixel 8-enheder, der anvender MemTag-beskyttelse, og har tilføjet rettelser for at blockere lækager og udtrykt vilje til at betale belønninger for fundne sårbarheder.
Som omgåelsesmetoder til at blockere angrebet foreslår forskerne at bruge sb- eller isb-instruktioner til at forbyde spekulativ udførelse under kritiske operationer med hukommelse, eller til at indføre fyld mellem greninstruktioner og hukommelsesadgangsinstruktioner fra andre instruktioner.
Kilde: opennet.ru
