Google demonstroi shfrytëzimin e dobësive Spectre përmes ekzekutimit të JavaScript në shfletues

Kompania Google publikoi disa prototipe eksploitësh që tregojnë mundësinë e shfrytëzimit të dobësive të klasës Spectre gjatë ekzekutimit të kodit JavaScript në shfletues duke anashkaluar metodat e mbrojtjes të shtuar më parë. Eksploitët mund të përdoren për të fituar qasje në memorjen e procesit që përpunon përmbajtjen web në skedarin aktual. Për testimin e funksionimit të eksploitit është aktivizuar faqja leaky.page, ndërsa kodi me përshkrimin e logjikës së funksionimit është publikuar në GitHub.

Prototipi i propozuar Ă«shtĂ« projektuar pĂ«r tĂ« kryer njĂ« sulm ndaj sistemeve me procesorĂ« Intel Core i7-6500U nĂ« njĂ« mjedis me Linux dhe Chrome 88. PĂ«r tĂ« aplikuar eksploitin nĂ« mjedise tĂ« tjera kĂ«rkohen ndryshime. Metoda e shfrytĂ«zimit nuk Ă«shtĂ« specifike pĂ«r procesorĂ«t Intel — pas adaptimeve tĂ« pĂ«rshtatshme Ă«shtĂ« konfirmuar funksionimi i eksploitit nĂ« sisteme me CPU tĂ« prodhuesve tĂ« tjerĂ«, pĂ«rfshirĂ« Apple M1 tĂ« bazuar nĂ« arkitekturĂ«n ARM. Pas disa rregullimeve tĂ« vogla, eksploitit gjithashtu i Ă«shtĂ« bĂ«rĂ« e mundur tĂ« funksionojĂ« nĂ« sisteme operative tĂ« tjera dhe nĂ« shfletues tĂ« ndryshĂ«m tĂ« bazuar nĂ« motorin Chromium.

Në një mjedis të bazuar në Chrome 88 të zakonshëm dhe procesorë Intel Skylake, arriti të sigurojë një rrjedhje të të dhënave nga procesi që është përgjegjës për përpunimin e përmbajtjes web në skedarin aktual të Chrome (procesi i renderimit), me shpejtësi prej 1 kilobajt në sekondë. Shtesë, janë zhvilluar prototipe alternative, për shembull, një eksploit që lejon, me çmimin e uljes së stabilitetit, rritjen e shpejtësisë së rrjedhjes deri në 8kB/s duke përdorur timerin performance.now() me saktësi prej 5 mikrosekondash (0.005 milisekonda). Gjithashtu është përgatitur një variant që funksionon me saktësi timeri në nivelin e një milisekonde, i cili mund të përdoret për të organizuar qasjen në memorjen e një procesi tjetër me shpejtësi rreth 60 byte në sekondë.

Kodi demonstrues i publikuar pĂ«rbĂ«het nga tre pjesĂ«. Pjesa e parĂ« ekzekuton kalibrimin e timerit pĂ«r tĂ« vlerĂ«suar kohĂ«n e ekzekutimit tĂ« operacioneve tĂ« nevojshme pĂ«r rikuperimin e tĂ« dhĂ«nave qĂ« kanĂ« mbetur nĂ« ĐșДшin e procesorit si rezultat i ekzekutimit spekullativ tĂ« instruksioneve tĂ« CPU. Pjesa e dytĂ« pĂ«rcakton shpĂ«rndarjen e memorjes e cila pĂ«rdoret gjatĂ« vendosjes sĂ« njĂ« vargu JavaScript.

Pjesa e tretĂ« ekzekuton drejtpĂ«rdrejt shfrytĂ«zimin e dobĂ«sisĂ« Spectre pĂ«r tĂ« pĂ«rcaktuar pĂ«rmbajtjen e memorjes sĂ« procesit aktual si rezultat i krijimit tĂ« kushteve pĂ«r ekzekutimin spekullativ tĂ« operacioneve tĂ« caktuara, rezultati i sĂ« cilave pĂ«rjashtohet nga procesori pas pĂ«rcaktimit tĂ« njĂ« parashikimi tĂ« dĂ«shtuar, por gjurmĂ«t e ekzekutimit mbeten nĂ« ĐșДш dhe mund tĂ« rikuperohen me metoda tĂ« pĂ«rcaktimit tĂ« pĂ«rmbajtjes sĂ« ĐșДшit pĂ«rmes kanaleve anĂ«sore qĂ« analizojnĂ« ndryshimin nĂ« kohĂ«n e aksesit nĂ« tĂ« dhĂ«na tĂ« memorizuar dhe tĂ« pambuluara.

TĂ« dhĂ«nat e propozuara tĂ« shfrytĂ«zimit lejojnĂ« shmangien e timerĂ«ve me saktĂ«si tĂ« lartĂ«, tĂ« cilĂ«t janĂ« tĂ« disponueshĂ«m pĂ«rmes API performance.now(), dhe pa mbĂ«shtetje pĂ«r tipin SharedArrayBuffer, i cili lejon krijimin e vargjeve nĂ« memorje tĂ« ndarĂ«. Eksploit pĂ«rfshin njĂ« gadget Spectre qĂ« shkakton ekzekutimin e kontrolluar spekullativ tĂ« kodit dhe njĂ« analist tĂ« rrjedhjes pĂ«rmes kanaleve anĂ«sore qĂ« pĂ«rcakton tĂ« dhĂ«nat e mbetura nĂ« ĐșДш duke u marrĂ« gjatĂ« ekzekutimit spekullativ.

Gadgeti Ă«shtĂ« realizuar pĂ«rmes njĂ« vargu JavaScript, nĂ« tĂ« cilin bĂ«het pĂ«rpjekja pĂ«r tĂ« aksesuar njĂ« zonĂ« jashtĂ« kufijve tĂ« tamponit, qĂ« ndikon nĂ« gjendjen e bllokut tĂ« parashikimit tĂ« kalimeve pĂ«r shkak tĂ« njĂ« kontrolli tĂ« madhĂ«sisĂ« sĂ« tamponit tĂ« shtuar nga kompajleri (procesori parashikon nĂ« mĂ«nyrĂ« spekullative, por tĂ«rheq gjendjen pas kontrollit). PĂ«r analizimin e pĂ«rmbajtjes sĂ« ĐșДшit nĂ« kushte tĂ« saktĂ«sisĂ« sĂ« pamjaftueshme tĂ« timerit Ă«shtĂ« propozuar njĂ« metodĂ« qĂ« mashtron strategjinĂ« e pĂ«rdorur nga procesorĂ«t pĂ«r zĂ«vendĂ«simin e tĂ« dhĂ«nave nga ĐșДшi Tree-PLRU dhe lejon qĂ« pĂ«rmes rritjes sĂ« numrit tĂ« cikleve tĂ« rritet dukshĂ«m diferenciali i kohĂ«s kur kthehet njĂ« vlerĂ« nga ĐșДшi dhe kur nuk ka vlerĂ« nĂ« ĐșДш.

Shënohet se kompania Google publikoi një prototip eksploit për të demonstruar realizmin e sulmeve duke përdorur dobësi të klasës Spectre dhe për të inkurajuar zhvilluesit web që të përdorin teknika që minimizojnë rreziqet nga këto sulme. Në këtë mënyrë, Google beson se pa një ripunim të rëndësishëm të prototipit të propozuar, nuk është e mundur të krijohen eksploitë universale që janë të gatshme jo vetëm për demonstrim, por edhe për përdorim të zakonshëm.

Për të ulur rrezikun, pronarëve të faqeve u sugjerohet të përdorin titujt e realizuar në kohët e fundit si 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 dhe SameSite Cookie. Mekanizmat e lartpërmendur nuk ofrojnë mbrojtje direkte nga sulmet, por lejojnë izolon e të dhënave të faqes nga rrjedhja në procese, në të cilat mund të ekzekutohet kodi JavaScript i sulmuesit (rrjedhja ndodh nga kujtesa e procesit aktual, në të cilin përveç kodit të sulmuesit mund të përpunohen edhe të dhëna nga një faqe tjetër, e hapur në të njëjtin tab). Ideja kryesore është të ndahen në procese të ndryshme ekzekutimi i kodit të faqes nga kodi i huaj, i marrë nga burime jo të besueshme, për shembull, i përfshirë përmes iframe.

Luaj videon


Burimi: opennet.ru
Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster