Teknika e re për shfrytëzimin e dobësive të Spectre në Chrome

Një grup studiuesish nga universitetet amerikane, australiane dhe izraelite kanë propozuar një teknikë të re sulmi në kanalin anësor për të shfrytëzuar dobësitë e klasës Specter në shfletues të bazuar në motorin Chromium. Sulmi, i koduar me emrin Spook.js, ju lejon të anashkaloni mekanizmin e izolimit të faqes duke ekzekutuar kodin JavaScript dhe të lexoni përmbajtjen e të gjithë hapësirës së adresave të procesit aktual, d.m.th. aksesoni të dhënat nga faqet që ekzekutohen në skeda të tjera, por të përpunuara në të njëjtin proces.

Meqenëse Chrome drejton sajte të ndryshme në procese të ndryshme, aftësia për të kryer sulme praktike është e kufizuar në shërbimet që lejojnë përdorues të ndryshëm të presin faqet e tyre. Metoda lejon, nga një faqe në të cilën sulmuesi ka mundësinë të vendosë kodin e tij JavaScript, të përcaktojë praninë e faqeve të tjera të hapura nga përdoruesi nga i njëjti sajt dhe të nxjerrë informacione konfidenciale prej tyre, për shembull, kredencialet ose detajet bankare të zëvendësuara. nga sistemi i plotësimit automatik të fushave në formularët e internetit. Si demonstrim, tregohet se si mund të sulmoni blogun e dikujt tjetër në shërbimin Tumblr nëse pronari i tij hap një blog sulmuesish të organizuar në të njëjtin shërbim në një skedë tjetër.

Një opsion tjetër për përdorimin e metodës është një sulm ndaj shtesave të shfletuesit, i cili lejon, kur instaloni një shtesë të kontrolluar nga sulmuesi, të nxjerrni të dhëna nga shtesa të tjera. Si shembull, ne tregojmë se si duke instaluar një shtesë me qëllim të keq mund të nxirrni informacione konfidenciale nga menaxheri i fjalëkalimeve LastPass.

Studiuesit kanë publikuar një prototip të një shfrytëzimi që funksionon në Chrome 89 në sistemet me një CPUIntel i7-6700K dhe i7-7600U. Gjatë krijimit të shfrytëzimit, prototipet e kodit JavaScript të publikuara më parë nga Google u përdorën për të kryer sulme të klasës Specter. Vihet re se studiuesit ishin në gjendje të përgatisnin shfrytëzime pune për sistemet e bazuara në procesorët Intel dhe Apple M1, të cilat bëjnë të mundur organizimin e leximit të memories me një shpejtësi prej 500 bajt në sekondë dhe një saktësi prej 96%. Supozohet se metoda është gjithashtu e zbatueshme për procesorët AMD, por nuk ishte e mundur të përgatitej një shfrytëzim plotësisht funksional.

Sulmi është i zbatueshëm për çdo shfletues të bazuar në motorin Chromium, duke përfshirë Google Chrome, Microsoft Edge dhe Brave. Studiuesit besojnë gjithashtu se metoda mund të përshtatet për të punuar me Firefox, por duke qenë se motori Firefox është shumë i ndryshëm nga Chrome, puna për krijimin e një shfrytëzimi të tillë është lënë për të ardhmen.

Për të mbrojtur kundër sulmeve të bazuara në shfletues që lidhen me ekzekutimin spekulativ të udhëzimeve, Chrome zbaton segmentimin e hapësirës së adresave - izolimi i sandbox lejon JavaScript të punojë vetëm me tregues 32-bit dhe ndan kujtesën e mbajtësve në grumbullime të ndryshme 4 GB. Për të siguruar akses në të gjithë hapësirën e adresës së procesit dhe për të anashkaluar kufizimin 32-bit, studiuesit përdorën një teknikë të quajtur Type Confusion, e cila detyron motorin JavaScript të përpunojë një objekt me një lloj të pasaktë, gjë që bën të mundur formimin e një 64-bitësh. tregues i bazuar në një kombinim të dy vlerave 32-bit.

Thelbi i sulmit është se kur përpunohet një objekt me qëllim të keq i projektuar posaçërisht në motorin JavaScript, krijohen kushte që çojnë në ekzekutimin spekulativ të udhëzimeve që hyjnë në grup. Objekti zgjidhet në atë mënyrë që fushat e kontrolluara nga sulmuesi vendosen në zonën ku përdoret treguesi 64-bit. Meqenëse lloji i objektit me qëllim të keq nuk përputhet me llojin e grupit që përpunohet, në kushte normale veprime të tilla bllokohen në Chrome nga një mekanizëm për deoptimizimin e kodit të përdorur për të hyrë në vargje. Për të zgjidhur këtë problem, kodi për sulmin Type Confusion vendoset në një bllok të kushtëzuar "nëse", i cili nuk aktivizohet në kushte normale, por ekzekutohet në modalitetin spekulativ, nëse procesori parashikon gabimisht degëzimin e mëtejshëm.

Si rezultat, procesori i qaset në mënyrë spekulative treguesit 64-bit të gjeneruar dhe e kthen gjendjen pas përcaktimit të një parashikimi të dështuar, por gjurmët e ekzekutimit mbeten në memorien e përbashkët dhe mund të restaurohen duke përdorur metodat e zbulimit të memories së kanalit anësor që analizojnë ndryshimet në kohët e hyrjes në të dhënat e memories dhe të pakapshme. Për të analizuar përmbajtjen e cache-së në kushtet e saktësisë së pamjaftueshme të kohëmatësit të disponueshëm në JavaScript, përdoret një metodë e propozuar nga Google, e cila mashtron strategjinë e nxjerrjes së memories Tree-PLRU të përdorur në procesorë dhe lejon, duke rritur numrin e cikleve, të rrisin ndjeshëm diferencën në kohë kur një vlerë është e pranishme dhe mungon në cache. .

Burimi: opennet.ru

Shto një koment