Google demonstreeris Spectre haavatavuste kasutamist JavaScripti tÀitmise kaudu brauseris

Google'i ettevĂ”te avaldas mitu prototĂŒĂŒpi eksploitidest, mis nĂ€itavad, et Spectre'i haavatavusi saab Ă€ra kasutada JavaScripti koodi kĂ€itamisega brauseris, mööda minnes varasemalt lisatud kaitsemeetmetest. Eksploitid vĂ”ivad olla kasutatud, et saada juurdepÀÀs protsessi mĂ€lule, mis töötab veebisisu töötlemisega kĂ€esolevas vahekaardis. Eksploidide töö testimiseks on kĂ€ivitatud leht leaky.page, ja kood loogika kirjeldusega on paigutatud GitHubi.

Pakutud prototĂŒĂŒp on mĂ”eldud rĂŒnnakute teostamiseks Intel Core i7-6500U protsessoriga sĂŒsteemides Linuxi ja Chrome 88 keskkonnas. Eksploidi rakendamiseks muudes keskkondades on vajalikud muudatused. Ekspluateerimise meetod ei ole spetsiifiline Intel'i protsessorite jaoks - pĂ€rast vastava kohandamise kinnitust on eksperdid leidnud, et eksploidi töötab ka teiste tootjate CPU-de, sealhulgas Apple M1 ARM-arhitektuuri sĂŒsteemide peal. PĂ€rast mĂ”ningaid vĂ€ikeseid kohandusi töötab eksploidi ka teiste operatsioonisĂŒsteemide ja Chromiumi mootoriga brauserites.

Tavalise Chrome 88 ja Intel Skylake'i protsessoritega keskkonnas Ă”nnestus saavutada andmete leke praeguse Chrome'i vahekaardi veebisisu töötlemise protsessist (renderer process) kiirusel 1 kilobait sekundis. TĂ€iendavalt arendati vĂ€lja alternatiive prototĂŒĂŒbid, nĂ€iteks eksploidi, mis lubab stabiilsuse vĂ€henemise hindade juures suurendada leke kiiruseni 8kB/s, kasutades performance.now() taimerit, mille tĂ€psus on 5 mikrosekundit (0.005 millisekundit). Samuti on ette valmistatud variant, mis töötab taimeri tĂ€psusega ĂŒhes millisekundis, mida saab kasutada juurdepÀÀsu korraldamiseks teise protsessi mĂ€lule kiirusel umbes 60 baiti sekundis.

Avaldatud demonstreerimiskood koosneb kolmest osast. Esimene osa kalibreerib taimerit, et hinnata operatsioonide teostamise aega, mis on vajalik CPU spetsiifiliste juhiste tulemusena protsessori vahemÀlus jÀÀnud andmete taastamiseks. Teine osa mÀÀrab kindlaks mÀlukorra, mida kasutatakse JavaScripti massiivi paigutamisel.

Kolmas osa rakendab Spectre haavatavust mĂ€lu sisu mÀÀramiseks praeguses protsessis, luues tingimused teatud toimingute spekulatiivseks elluviimiseks. Need toimingud kĂ”rvaldatakse protsessori poolt pĂ€rast ebaĂ”nnestunud prognoosi tuvastamist, kuid tĂ€itmise jĂ€ljed jÀÀvad ĂŒldisesse vahemĂ€llu ja vĂ”ivad olla taastatud vahemĂ€lu sisu mÀÀramise meetodite abil, mis analĂŒĂŒsivad juurdepÀÀsuaja muutusi vahemĂ€lus ja mitte vahemĂ€lus olevatele andmetele.

Pakutud ekspluatatsiooni tehnika vĂ”imaldab mööda minna tĂ€psetest ajastajatest, mis on saadaval lĂ€bi API performance.now(), ja ilma SharedArrayBuffer tĂŒĂŒbi toeta, mis vĂ”imaldab luua massiive jagatud mĂ€lu sĂŒsteemis. Eksploitatsioon sisaldab Spectre mĂ€ssavat gadget’i, mis kutsub esile juhitava spekulatiivse koodi tĂ€itmise, ja kĂŒlgkanali lekke analĂŒsaatorit, mis mÀÀrab vahemĂ€llu sisenenud andmed spekulatiivse tĂ€itmise kĂ€igus.

Gadget on teostatud JavaScripti massiivi abil, mille kaudu ĂŒritatakse juurde pÀÀseda mĂ€luaadressile vĂ€ljaspool puhvri piire, mis mĂ”jutab ĂŒleminekute ennustamise ploki seisundit, kuna kompilaator on lisanud puhvri suuruse kontrolli (protsessor tĂ€idab spekulatiivselt pöördumist, kuid tĂŒhistab oleku pĂ€rast kontrollimist). VahemĂ€lu sisu analĂŒĂŒsimiseks, kus ajastamise tĂ€psus on ebapiisav, on pakutud meetod, mis petab protsessorite kasutatavat Tree-PLRU vahemĂ€lu andmete eemaldamise strateegiat ning vĂ”imaldab mĂ€rkimisvÀÀrselt suurendada erinevust vahemĂ€lus oleva ja vahemĂ€lust puudumise vÀÀrtuse tagastamise ajal.

Tuleb mĂ€rkida, et Google on avaldanud eksploitatsiooni prototĂŒĂŒbi, et nĂ€idata mĂ€rkamatute rĂŒnnakute realismi Spectre klassi haavatavuste kasutamise kaudu ning julgustada veebi arendajaid rakendama tehnikaid, mis vĂ€hendavad selliste rĂŒnnakute riske. Samuti usub Google, et ilma mĂ€rkimisvÀÀrse prototĂŒĂŒbi ĂŒmbertegemiseta ei ole vĂ”imalik luua ĂŒldkasutatavaid eksploitatsioone, mis oleksid valmis mitte ainult demonstreerimiseks, vaid ka laialdaseks kasutamiseks.

Veebilehtede omanikele soovitatakse vĂ€hendada riski, kasutades hiljuti rakendatud Cross-Origin Opener Policy (COOP), Cross-Origin Embedder Policy (COEP), Cross-Origin Resource Policy (CORP), Fetch Metadata Request, X-Frame-Options, X-Content-Type-Options ja SameSite Cookie. Need mehhanismid ei paku otsest kaitset rĂŒnnakute eest, kuid vĂ”imaldavad isoleerida veebisaidi andmed lekete eest protsessides, kus vĂ”ib kĂ€ivituda rĂŒndaja JavaScripti kood (lekkeid toimub jooksvast protsessist, kus rĂŒndaja koodiga vĂ”ivad samal ajal töötada ka teise saidi andmed, mis avati samas vahekaardis). Peamine idee on eraldada erinevates protsessides saidi koodi kĂ€itamine usaldusvÀÀrsetest allikatest saadud kolmanda osapoole koodist, nĂ€iteks iframe'i kaudu laaditud koodist.

MĂ€ngi videot


Allikas: opennet.ru
Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster