En gruppe forskere fra Vrije Universiteit Amsterdam har præsenteret en ny SLAM (Spectre Linear Address Masking) angrebsteknik, der tilbyder en ny måde at udnytte mikroarkitektoniske sårbarheder af Spectre-typen, hvor data lækkes under oversættelsen af ikke-kanoniske adresser, og hvor nye processorers udvidelser til maskering af lineære adresser anvendes til at omgå kanonikalitetskontrollerne. Forskerne har offentliggjort et værktøj med en implementering af metoden og foreslået en demonstration, der viser, hvordan man kan udtrække data fra kernen, der svarer til en bestemt maske (det vises, hvordan man på få sekunder kan isolere en streng med root-brugerens adgangskodehash fra kernen i Ubuntu).

Angrebet kan udføres på systemer med Intel-processorer, der understøtter LAM (Linear Address Masking), AMD-processorer med UAI (Upper Address Ignore) og ARM-processorer med TBI (Top Byte Ignore). De nævnte udvidelser giver mulighed for at bruge en del af bittene i 64-bit pointere til at gemme metadata, der ikke er relateret til adressering (normale programmer kræver ikke så meget hukommelse, at de kan adressere 64-bit pointere, så de øverste bits kan anvendes til sikkerhedsrelaterede kontroller). Interessant nok er Intel, AMD og ARM-processorer med understøttelse af LAM, UAI og TBI kun blevet annonceret, men er endnu ikke produceret i stor skala, hvilket gør SLAM til det første spekulative angreb på fremtidige CPU'er. Angrebet kan også udføres på ældre AMD CPU'er Zen+ og Zen 2, som er sårbare over for CVE-2020-12965.
I lighed med udnyttelsen af sårbarhederne i Spectre kræver SLAM-angrebet tilstedeværelsen af bestemte sekvenser af instruktioner (gadgets) i kernen, der fører til spekulativ udførelse af instruktioner. Sådanne instruktioner medfører spekulativ læsning af data fra hukommelsen afhængigt af ydre forhold, som kan påvirkes af angriberen. Efter at have vurderet den forkerte prognose kasseres resultatet af den spekulative udførelse, men de behandlede data forbliver i cachen og kan derefter hentes ved hjælp af analyse via sideløbende kanaler. For at hente data, der er blevet efterladt i cachen, anvendes metoden Evict+Reload af forskerne, som er baseret på at skabe betingelser for at presse data ud af cachen (for eksempel ved at skabe aktivitet, der jævnt fylder cachen med typisk indhold) og udføre operationer, hvis udførelsestid gør det muligt at bedømme tilstedeværelsen af data i processorens cache.
For at udføre SLAM-angrebet bruges gadgets baseret på kode, hvor data kontrolleret af angriberen (herunder variablen 'secret') anvendes som en pointer. For eksempel: void unmasked_gadget(long **secret) { **secret; }
Det bemærkes, at sådanne kode-mønstre ofte anvendes i programmer, for eksempel er der identificeret titusinder af sådanne gadgets i Linux-kernen, hvoraf mindst flere hundrede er egnede til brug i exploits. Lækager kan blokeres ved at tilføje yderligere instruktioner til sådanne gadgets, der blokerer for spekulativ udførelse. Intel har til hensigt at tilbyde en softwaremetode til at blokere lækager, inden de begynder at sende processorer med støtte for LAM. AMD har anbefalet at bruge eksisterende metoder til at blokere angreb af Spectre v2-typen. Udviklerne af Linux-kernen har besluttet som standard at deaktivere support for LAM, indtil Intel offentliggør anbefalinger til blokering af sårbarheden.
Kilde: opennet.ru
