Google ka publikuar disa prototipe të shfrytëzimit që demonstrojnë aftësinë për të shfrytëzuar dobësitë e klasës Spectre duke ekzekutuar kodin JavaScript në një shfletues, duke anashkaluar mbrojtjet e shtuara më parë. Këto shfrytëzime mund të përdoren për të fituar akses në kujtesën e procesit që përpunon përmbajtjen e uebit në skedën aktuale. Uebsajti leaky.page u lançua për të testuar shfrytëzimin dhe kodi që përshkruan logjikën është postuar 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. Modifikimet janë të nevojshme për të aplikuar shfrytëzimin në mjedise të tjera. Metoda e shfrytëzimit nuk është specifike për procesorët Intel; pas adaptimit të duhur, është konfirmuar se funksionon në sisteme me CPU nga prodhues të tjerë, duke përfshirë Apple M1 bazuar në arkitekturën ARM. Me rregullime të vogla, shfrytëzimi funksionon edhe në sisteme të tjera operative dhe në shfletues të tjerë të bazuar në Chromium.
Në një mjedis të bazuar në sistemin operativ standard Chrome 88 dhe procesorët Intel Skylake, u arrit një rrjedhje e të dhënave nga procesi i renderimit përgjegjës për përpunimin e përmbajtjes së uebit në skedën aktuale Chrome me një shpejtësi prej 1 kilobajt për sekondë. U zhvilluan gjithashtu prototipa alternative, duke përfshirë një shfrytëzim që, me koston e stabilitetit të reduktuar, rriti shpejtësinë e rrjedhjes në 8 kilobajt për sekondë duke përdorur kohëmatësin performance.now() me një rezolucion prej 5 mikrosekondash (0.005 milisekonda). U zhvillua gjithashtu një variant që funksiononte me një rezolucion të kohëmatësit prej një milisekonde dhe mund të përdorej për të aksesuar kujtesën e një procesi tjetër me një shpejtësi prej afërsisht 60 bajt për sekondë.
Kodi demo i publikuar përbëhet nga tre pjesë. Pjesa e parë kalibron kohëmatësin për të vlerësuar kohën e ekzekutimit të kërkuar për të rivendosur të dhënat e mbetura në memorien e përkohshme të procesorit si rezultat i ekzekutimit spekulativ të udhëzimeve të CPU-së. Pjesa e dytë përcakton paraqitjen e memories së përdorur për të ndarë vargun JavaScript.
Pjesa e tretë shfrytëzon drejtpërdrejt dobësinë e Spectre për të përcaktuar përmbajtjen e kujtesës së procesit aktual duke krijuar kushte për ekzekutimin spekulativ të operacioneve të caktuara, rezultati i të cilave hidhet poshtë nga procesori pas përcaktimit të një parashikimi të pasuksesshëm, por gjurmët e ekzekutimit depozitohen në memorjen e përgjithshme të kujtesës dhe mund të rikthehen duke përdorur metoda për përcaktimin e përmbajtjes së kujtesës përmes kanaleve anësore, duke analizuar ndryshimin në kohën e aksesit në të dhënat e ruajtura në memorje dhe jo të ruajtura në memorje.
Teknika e propozuar e shfrytëzimit anashkalon kohëmatësit me precizion të lartë të disponueshëm përmes API-t performance.now() dhe tipit SharedArrayBuffer, i cili lejon krijimin e vargjeve në memorien e përbashkët. Shfrytëzimi përfshin pajisjen Spectre, e cila shkakton ekzekutimin e kontrolluar të kodit spekulativ, dhe një analizues rrjedhjesh të kanalit anësor, i cili zbulon të dhënat e ruajtura në memorje të përkohshme të marra gjatë ekzekutimit spekulativ.
Pajisja është implementuar duke përdorur një varg JavaScript që përpiqet të hyjë në një buffer jashtë kufijve, duke ndikuar në gjendjen e njësisë së parashikimit të degës për shkak të një kontrolli të madhësisë së bufferit të injektuar nga kompiluesi (procesori spekulativisht kryen qasjen përpara, por e kthen gjendjen pas kontrollit). Për të analizuar përmbajtjen e memorjes së përkohshme (cache) në kushte të saktësisë së pamjaftueshme të kohëmatësit, propozohet një metodë që anashkalon strategjinë e nxjerrjes së memorjes së përkohshme Tree-PLRU të përdorur në procesorë dhe, duke rritur numrin e cikleve, rrit ndjeshëm ndryshimin kohor midis marrjes së një vlere nga memoria e përkohshme dhe kur vlera nuk është në memorje të përkohshme.
Vërehet se Google publikoi prototipin e shfrytëzimit për të demonstruar realizmin e sulmeve duke përdorur dobësitë e klasës Spectre dhe për të inkurajuar zhvilluesit e uebit të miratojnë teknika që minimizojnë rreziqet e sulmeve të tilla. Megjithatë, Google beson se pa një rishikim të rëndësishëm të prototipit të propozuar, është e pamundur të krijohen shfrytëzime universale të përshtatshme jo vetëm për demonstrim, por edhe për përdorim të gjerë.
Për të zbutur rrezikun, pronarët e faqeve të internetit inkurajohen të përdorin Politikën e Hapësit të Origjinës Cross (COOP), Politikën e Embedderit të Origjinës Cross (COEP), Politikën e Burimeve të Origjinës Cross (CORP), Kërkesën për Metadata Fetch, X-Frame-Options, X-Content-Type-Options dhe header-et SameSite Cookie. Këto mekanizma nuk mbrojnë drejtpërdrejt nga sulmet, por lejojnë që të dhënat e faqes së internetit të izolohen nga rrjedhjet në procese që mund të ekzekutojnë kodin JavaScript të sulmuesit (rrjedhja ndodh nga memoria e procesit aktual, i cili mund të përpunojë jo vetëm kodin e sulmuesit, por edhe të dhënat nga një faqe tjetër interneti e hapur në të njëjtën skedë). Ideja kryesore është të ndahet ekzekutimi i kodit të faqes së internetit në procese të ndryshme nga kodi i palëve të treta i marrë nga burime të pabesueshme, siç është kodi i përfshirë përmes një iframe.

Burimi: opennet.ru
