CPU talpyklos ištraukimo ataka įdiegta žiniatinklio naršyklėje be JavaScript

Kelių Amerikos, Izraelio ir Australijos universitetų mokslininkų komanda sukūrė tris atakas, kurios vykdomos interneto naršyklėse, siekiant išgauti informaciją apie procesoriaus talpyklos turinį. Vienas metodas veikia naršyklėse be JavaScript, o kiti du apeina esamus apsaugos nuo šoninio kanalo atakų metodus, įskaitant tuos, kurie naudojami Tor naršyklėje ir DeterFox. Atakoms demonstruoti skirtas kodas ir atakoms būtini serverio komponentai skelbiami „GitHub“.

Norint išanalizuoti talpyklos turinį, visos atakos naudoja „Prime+Probe“ metodą, kuris apima talpyklos užpildymą standartiniu reikšmių rinkiniu ir pasikeitimų aptikimą matuojant prieigos prie jų laiką, kai juos užpildote. Norint apeiti naršyklėse esančius saugumo mechanizmus, trukdančius tiksliai matuoti laiką, dviem būdais kreipiamasi į DNS arba WebSocket serverį, kurį valdo užpuolikas, kuris registruoja gautų užklausų laiką. Viename įgyvendinimo variante fiksuotas DNS atsako laikas naudojamas kaip laiko nuoroda.

Matavimų, atliktų naudojant išorinius DNS arba WebSocket serverius, naudojant klasifikavimo sistemą, pagrįstą mašininiu mokymusi, pakako, kad optimaliausio scenarijaus atveju būtų galima numatyti reikšmes iki 98% tikslumu (vidutiniškai 80–90%). Atakos metodai buvo išbandyti įvairiose aparatinės įrangos platformose (Intel, AMD Ryzen, Apple M1, Samsung Exynos) ir pasirodė esą universalūs.

CPU talpyklos ištraukimo ataka įdiegta žiniatinklio naršyklėje be JavaScript

Pirmajame DNS Racing atakos variante naudojamas klasikinis Prime+Probe metodo įgyvendinimas naudojant JavaScript masyvus. Skirtumai susiję su išorinio DNS pagrindu veikiančio laikmačio ir klaidų tvarkyklės naudojimu, kuris suveikia, kai bandoma įkelti vaizdą iš neegzistuojančio domeno. Išorinis laikmatis leidžia atakuoti „Prime+Probe“ naršykles, kurios riboja arba visiškai išjungia prieigą prie „JavaScript“ laikmačių.

Apskaičiuota, kad DNS serverio, esančio tame pačiame Ethernet tinkle, laikmačio tikslumas yra maždaug 2 ms, o to pakanka šoninio kanalo atakai įvykdyti (palyginimui, standartinio JavaScript laikmačio tikslumas Tor naršyklėje yra sumažintas iki 100 ms). Atakai nereikia valdyti DNS serverio, nes operacijos vykdymo laikas parenkamas taip, kad DNS atsako laikas būtų ankstesnio patikrinimo užbaigimo ženklas (atsižvelgiant į tai, ar buvo suaktyvintas klaidų tvarkytuvas anksčiau ar vėliau daroma išvada apie patikros operacijos greitį su talpykla) .

Antrasis atakos metodas „String and Sock“ skirtas apeiti saugumo metodus, kurie riboja žemo lygio masyvų naudojimą „JavaScript“. Vietoj masyvų String and Sock naudoja operacijas su labai didelėmis eilutėmis, kurių dydis parenkamas taip, kad kintamasis apimtų visą LLC talpyklą (Last level cache). Toliau, naudojant indexOf() funkciją, eilutėje ieškoma nedidelė poeilutė, kurios iš pradžių šaltinio eilutėje nėra, t.y. paieškos operacijos rezultatas kartojamas visoje eilutėje. Kadangi eilutės dydis atitinka LLC talpyklos dydį, nuskaitymas leidžia atlikti talpyklos tikrinimo operaciją nekeičiant masyvų. Norėdami išmatuoti delsą, vietoj DNS skambinama į WebSocket serverį, kurį valdo užpuolikas – prieš ir po paieškos operacijos pabaigos eilutėje siunčiamos užklausos, kurių pagrindu serveris apskaičiuoja delsą, naudojamą talpyklos analizei. turinį.

Trečiasis „CSS PP0“ atakos variantas įgyvendinamas per HTML ir CSS ir gali veikti naršyklėse, kuriose išjungtas „JavaScript“. Metodas panašus į „String and Sock“, bet nėra susietas su „JavaScript“. Atakos metu sugeneruojamas CSS parinktuvų rinkinys, kuris ieško pagal kaukę. Pradinė didelė eilutė, užpildanti talpyklą, nustatoma sukuriant div žymą su labai dideliu klasės pavadinimu. Viduje yra kitų divų rinkinys su savo identifikatoriais. Kiekvienas iš šių įdėtų elementų turi savo stilių su parinkikliu, kuris ieško poeilutės. Pateikdama puslapį, naršyklė pirmiausia bando apdoroti vidinius divus, todėl atliekama paieškos operacija didelėje eilutėje. Paieška atliekama naudojant tyčia trūkstamą kaukę ir veda į iteraciją visoje eilutėje, po kurios suaktyvinama sąlyga „ne“ ir bandoma įkelti fono paveikslėlį, nurodantį atsitiktinius domenus: #pp:not([class*=’xjtoxg’]) #s0 {background-image: url(«https://qdlvibmr.helldomain.oy.ne.ro»);} #pp:not([class*=’gzstxf’]) #s1 {background-image: url(«https://licfsdju.helldomain.oy.ne.ro»);} … X X ...

Subdomenus aptarnauja užpuoliko DNS serveris, kuris gali išmatuoti užklausų gavimo vėlavimus. DNS serveris išduoda NXDOMAIN visoms užklausoms ir registruoja tikslų užklausų laiką. Apdorojant „div“ rinkinį, užpuoliko DNS serveris gauna eilę užklausų, kurių delsos koreliuoja su talpyklos turinio patikrinimo rezultatu.

CPU talpyklos ištraukimo ataka įdiegta žiniatinklio naršyklėje be JavaScript


Šaltinis: opennet.ru

Добавить комментарий