„Google“ pademonstravo „Spectre“ pažeidžiamumų išnaudojimą naršyklėje vykdydama „JavaScript“.

„Google“ paskelbė kelis išnaudojimo prototipus, rodančius galimybę išnaudoti „Spectre“ klasės pažeidžiamumą vykdant „JavaScript“ kodą naršyklėje, apeinant anksčiau pridėtus apsaugos metodus. Išnaudojimai gali būti naudojami norint gauti prieigą prie proceso, apdorojančio žiniatinklio turinį dabartiniame skirtuke, atminties. Norint išbandyti išnaudojimo veikimą, buvo paleista svetainė leaky.page, o darbo logiką aprašantis kodas patalpintas GitHub.

Siūlomas prototipas skirtas atakuoti sistemas su Intel Core i7-6500U procesoriais aplinkoje su Linux ir Chrome 88. Norint panaudoti išnaudojimą kitoms aplinkoms, reikia modifikacijų. Išnaudojimo metodas nėra būdingas „Intel“ procesoriams – po atitinkamo pritaikymo patvirtinta, kad išnaudojimas veikia sistemose su kitų gamintojų CPU, įskaitant „Apple M1“, pagrįstą ARM architektūra. Atlikus nedidelius pakeitimus, išnaudojimas taip pat veikia kitose operacinėse sistemose ir kitose naršyklėse, pagrįstose „Chromium“ varikliu.

Aplinkoje, pagrįstoje standartiniais „Chrome 88“ ir „Intel Skylake“ procesoriais, buvo galima nutekėti duomenis iš proceso, atsakingo už žiniatinklio turinio apdorojimą dabartiniame „Chrome“ skirtuke (perteikimo procesas) 1 kilobaito per sekundę greičiu. Be to, buvo sukurti alternatyvūs prototipai, pavyzdžiui, išnaudojimas, leidžiantis sumažinti stabilumo kainą padidinti nuotėkio greitį iki 8kB/s naudojant performance.now() laikmatį 5 mikrosekundžių (0.005 milisekundės) tikslumu. ). Taip pat buvo parengta versija, kuri veikė vienos milisekundės laikmačio tikslumu, kuria buvo galima organizuoti prieigą prie kito proceso atminties maždaug 60 baitų per sekundę greičiu.

Paskelbtas demonstracinis kodas susideda iš trijų dalių. Pirmoji dalis kalibruoja laikmatį, kad įvertintų operacijų, reikalingų atkurti duomenis, likusius procesoriaus talpykloje dėl spekuliacinio procesoriaus komandų vykdymo, vykdymo laiką. Antroji dalis nustato atminties išdėstymą, naudojamą paskirstant JavaScript masyvą.

Trečioji dalis tiesiogiai išnaudoja Spectre pažeidžiamumą, kad nustatytų dabartinio proceso atminties turinį, nes sukuriamos sąlygos spekuliatyviam tam tikrų operacijų vykdymui, kurių rezultatą procesorius atmeta, nustačiusi nesėkmingą prognozę, tačiau atsiranda proceso pėdsakai. vykdymas yra saugomas bendrojoje talpykloje ir gali būti atkurtas naudojant metodus, skirtus talpyklos turiniui nustatyti trečiųjų šalių kanalais, analizuojančiais prieigos prie talpykloje saugomų ir neišsaugotų duomenų laiko pokyčius.

Siūloma išnaudojimo technika leidžia apsieiti be didelio tikslumo laikmačių, pasiekiamų per performance.now() API, ir be SharedArrayBuffer tipo palaikymo, kuris leidžia kurti masyvus bendrojoje atmintyje. Išnaudojimas apima „Spectre“ programėlę, kuri sukelia kontroliuojamą spekuliacinį kodo vykdymą, ir šoninio kanalo nutekėjimo analizatorių, kuris aptinka talpykloje saugomus duomenis, gautus spekuliacinio vykdymo metu.

Programėlė įdiegta naudojant „JavaScript“ masyvą, kuriame bandoma pasiekti sritį, esančią už buferio ribų, paveikiant šakos numatymo bloko būseną dėl kompiliatoriaus pridėto buferio dydžio patikrinimo (procesorius spekuliatyviai atlieka prieiga iš anksto, bet patikrinus atšaukia būseną). Talpyklos turiniui analizuoti nepakankamo laikmačio tikslumo sąlygomis buvo pasiūlytas metodas, kuris apgauna procesoriuose naudojamą Tree-PLRU talpyklos iškeldinimo strategiją ir leidžia, padidinus ciklų skaičių, žymiai padidinti laiko skirtumą grįžus. reikšmė iš talpyklos ir kai talpykloje reikšmės nėra.

Pažymima, kad „Google“ paskelbė išnaudojimo prototipą, siekdama parodyti atakų, naudojant „Spectre“ klasės pažeidžiamumą, galimybes ir paskatinti žiniatinklio kūrėjus naudoti metodus, kurie sumažina tokių atakų riziką. Tuo pačiu „Google“ mano, kad be esminio siūlomo prototipo perdirbimo neįmanoma sukurti universalių išnaudojimų, kurie būtų paruošti ne tik demonstravimui, bet ir plačiam naudojimui.

Siekiant sumažinti riziką, svetainių savininkai raginami naudoti neseniai įdiegtas antraštes Cross-Origin Opener Policy (COOP), Cross-Origin Embedder Policy (COEP), Cross-Origin Resource Policy (CORP), Fetch metadata Request, X-Frame- Parinktys, X -Content-Type-Options ir SameSite slapukas. Šie mechanizmai tiesiogiai neapsaugo nuo atakų, tačiau leidžia atskirti svetainės duomenis nuo nutekėjimo į procesus, kuriuose gali būti vykdomas užpuoliko JavaScript kodas (nutekėjimas atsiranda iš esamo proceso atminties, kuri, be užpuoliko kodo, , taip pat gali apdoroti duomenis iš kitos svetainės, atidarytos tame pačiame skirtuke). Pagrindinė idėja yra atskirti svetainės kodo vykdymą skirtinguose procesuose nuo trečiosios šalies kodo, gauto iš nepatikimų šaltinių, pavyzdžiui, įtraukto per iframe.



Šaltinis: opennet.ru

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