Google demonstron shfrytëzimin e dobësive të Spectre duke ekzekutuar JavaScript në shfletues

Google ka publikuar disa prototipa shfrytëzimi 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ë shtuara më parë. Shfrytëzimi mund të përdoret për të fituar akses në kujtesën e procesit të përpunimit të përmbajtjes së uebit në skedën aktuale. Për të testuar funksionimin e shfrytëzimit, u hap faqja e internetit leaky.page dhe kodi që përshkruan logjikën e punës u postua në GitHub.

Prototipi i propozuar është krijuar për të sulmuar sistemet me procesorë Intel Core i7-6500U në një mjedis me Linux dhe Chrome 88. Për të përdorur shfrytëzimin për mjedise të tjera, nevojiten modifikime. Metoda e shfrytëzimit nuk është specifike për procesorët Intel - pas përshtatjes së duhur, shfrytëzimi u konfirmua se funksiononte në sisteme me CPU nga prodhues të tjerë, duke përfshirë Apple M1 të bazuar në arkitekturën ARM. Pas rregullimeve të vogla, shfrytëzimi është gjithashtu i zbatueshëm në sisteme të tjera operative dhe në shfletues të tjerë të bazuar në motorin Chromium.

Në një mjedis të bazuar në procesorët standardë Chrome 88 dhe Intel Skylake, ishte e mundur që të rrjedheshin të dhëna nga procesi përgjegjës për përpunimin e përmbajtjes së uebit në skedën aktuale të Chrome (procesi i renderuesit) me një shpejtësi prej 1 kilobajt për sekondë. Për më tepër, janë zhvilluar prototipe alternative, për shembull, një shfrytëzim që lejon, me koston e uljes së stabilitetit, të rrisë shkallën e rrjedhjeve në 8 kB/s kur përdoret kohëmatësi i performancës.now() me një saktësi prej 5 mikrosekonda (0.005 milisekonda). ). U përgatit gjithashtu një version që funksiononte me një saktësi timer prej një milisekondi, i cili mund të përdorej për të organizuar aksesin në memorien e një procesi tjetër me një shpejtësi prej rreth 60 bajt në 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ë operacioneve të kërkuara për të rivendosur të dhënat e mbetura në cache të procesorit si rezultat i ekzekutimit spekulativ të udhëzimeve të CPU. Pjesa e dytë përcakton paraqitjen e memories së përdorur gjatë ndarjes së grupit JavaScript.

Pjesa e tretë shfrytëzon drejtpërdrejt cenueshmërinë Spectre për të përcaktuar përmbajtjen e memories së procesit aktual si rezultat i krijimit të kushteve për ekzekutimin spekulativ të disa operacioneve, rezultati i të cilave hidhet poshtë nga procesori pas përcaktimit të një parashikimi të pasuksesshëm, por gjurmët e ekzekutimi depozitohet në cache-në e përgjithshme dhe mund të rikthehet duke përdorur metoda për përcaktimin e përmbajtjes së cache-së nga kanalet e palëve të treta që analizojnë ndryshimet në kohën e hyrjes në të dhënat e memories së ruajtur dhe të pakapshme.

Teknika e propozuar e shfrytëzimit bën të mundur që të bëhet pa kohëmatës me precizion të lartë të disponueshëm përmes API-së performance.now() dhe pa mbështetje për llojin SharedArrayBuffer, i cili lejon krijimin e vargjeve në memorien e përbashkët. Shfrytëzimi përfshin vegël Spectre, e cila shkakton ekzekutim të kontrolluar spekulativ të kodit, dhe një analizues të rrjedhjeve të kanalit anësor, i cili zbulon të dhënat e ruajtura në memorie të marra gjatë ekzekutimit spekulativ.

Vegël zbatohet duke përdorur një grup JavaScript në të cilin bëhet një përpjekje për të hyrë në një zonë jashtë kufijve të tamponit, duke ndikuar në gjendjen e bllokut të parashikimit të degës për shkak të pranisë së një kontrolli të madhësisë së buferit të shtuar nga përpiluesi (procesori, duke parë përpara, në mënyrë spekulative kryen aksesin, por e kthen mbrapsht gjendjen pas kontrollit). Për të analizuar përmbajtjen e cache-së në kushte të saktësisë së pamjaftueshme të kohëmatësit, është propozuar një metodë që mashtron strategjinë e nxjerrjes së cache-it të Tree-PLRU të përdorur në procesorë dhe lejon, duke rritur numrin e cikleve, të rrisë ndjeshëm diferencën në kohë gjatë kthimit. një vlerë nga cache dhe kur nuk ka vlerë në cache.

Vihet re se Google publikoi një prototip të shfrytëzimit për të treguar mundësinë e sulmeve duke përdorur dobësitë e klasës Spectre dhe për të inkurajuar zhvilluesit e uebit të përdorin teknika që minimizojnë rreziqet nga sulme të tilla. Në të njëjtën kohë, Google beson se pa një ripërpunim domethënës të prototipit të propozuar, është e pamundur të krijohen shfrytëzime universale që janë gati jo vetëm për demonstrim, por edhe për përdorim të gjerë.

Për të reduktuar rrezikun, pronarët e faqeve inkurajohen të përdorin titujt e implementuar së fundi, Politika e hapjes ndër-origjina (COOP), Politika ndër-origjina e ngulitjes (COEP), politika e burimeve ndër-origjinale (CORP), Kërkesa për të marrë metadata, X-Frame- Opsionet, X -Content-Type-Options dhe SameSite Cookie. Këta mekanizma nuk mbrojnë drejtpërdrejt nga sulmet, por ju lejojnë të izoloni të dhënat e faqes nga rrjedhja në procese në të cilat mund të ekzekutohet kodi JavaScript i sulmuesit (rrjedhja ndodh nga kujtesa e procesit aktual, i cili, përveç kodit të sulmuesit , gjithashtu mund të përpunojë të dhëna nga një sajt tjetër i hapur në të njëjtën skedë). Ideja kryesore është të ndash ekzekutimin e kodit të faqes në procese të ndryshme nga kodi i palëve të treta të marra nga burime jo të besueshme, për shembull, të përfshirë përmes një iframe.



Burimi: opennet.ru

Shto një koment