Grupa istraživača sa Sveučilišta u Amsterdamu predstavila je novu tehniku napada SLAM (Spectre Linear Address Masking), koja nudi novi način iskorištavanja mikroarhitekturnih ranjivosti klase Spectre, pri čemu dolazi do curenja podataka tijekom prevođenja nekanonicalnih adresa, a za zaobilaženje provjera kanoničnosti koriste se proširenja za maskiranje linearnih adresa dostupna u novim procesorima. Istraživači su objavili alat s implementacijom metode i predložili demonstraciju koja pokazuje kako se iz memorije jezgre mogu izvući podaci koji odgovaraju određenoj maski (prikazano je kako u nekoliko desetaka sekundi u Ubuntuu izdvojiti iz memorije jezgre niz s hashom lozinke korisnika root).

Napad može biti izvršen na sustavima s Intel procesorima koji podržavaju proširenje LAM (Linear Address Masking), AMD procesorima s proširenjem UAI (Upper Address Ignore) i ARM procesorima s proširenjem TBI (Top Byte Ignore). Ta proširenja omogućavaju korištenje dijela bitova 64-bitnih pokazivača za pohranu metapodataka koji nisu povezani s adresiranjem (za obične programe nije potrebna tolika memorija da bi mogli adresirati 64-bitne pokazivače, stoga se gornji bitovi mogu iskoristiti, na primjer, za provjere povezane s osiguranjem sigurnosti). Zanimljivo je da su Intel, AMD i ARM procesori s podrškom za LAM, UAI i TBI još samo najavljeni, ali se masovno ne proizvode, što čini SLAM prvim spekulativnim napadom na buduće CPU-e. Napad se također može izvršiti na starijim AMD CPU-ima Zen+ i Zen 2, koji su podložni ranjivosti CVE-2020-12965.
Na temelju eksploatacije ranjivosti Spectre, za provođenje SLAM napada potrebno je da jezgro sadrži određene nizove instrukcija (gadžete) koji dovode do spekulativnog izvršavanja instrukcija. Takve instrukcije omogućuju spekulativno čitanje podataka iz memorije, ovisno o vanjskim uvjetima koje napadač može utjecati. Nakon definiranja pogrešnog predviđanja, rezultat spekulativnog izvršavanja se odbacuje, ali obrađeni podaci ostaju u predmemoriji i mogu se kasnije izvući analizom putem alternativnih kanala. Za vađenje podataka koji su se zadržali u predmemoriji, istraživači koriste metodu Evict+Reload, koja se temelji na stvaranju uvjeta za istiskivanje podataka iz predmemorije (na primjer, generira se aktivnost koja ravnomjerno puni predmemoriju uobičajenim sadržajem) te izvršavanju operacija čije vrijeme trajanja omogućava sudjelovanje o prisutnosti podataka u procesorskoj predmemoriji.
Za provođenje SLAM napada koriste se gadžeti na temelju koda u kojem se kontrolirani podaci od strane napadača (u nastavku varijabla „secret”) koriste kao pokazivač. Na primjer: void unmasked_gadget(long **secret) { **secret; }
Primjećuje se da se slični uzorci koda često koriste u programima; na primjer, u Linux kernelu otkriveno je desetke tisuća takvih gadžeta, od kojih je najmanje nekoliko stotina prikladnih za korištenje u eksploatacijama. Curjenje podataka može se blokirati dodavanjem dodatnih instrukcija u takve gadžete koje blokiraju spekulativno izvršavanje. Tvrtka Intel planira pružiti softversku metodu blokiranja curenja prije početka isporuke procesora s podrškom za LAM. Tvrtka AMD preporučila je korištenje postojećih metoda blokiranja napada klase Spectre v2. Razvijači Linux kernela odlučili su onemogućiti podršku za LAM prema zadanim postavkama do objave preporuka Intela o blokiranju ranjivosti.
Izvor: opennet.ru
