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

Kompania Google publikoi disa prototipa të eksploitëve, 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 që ishin shtuar më parë. Eksploitët mund të përdoren për të fituar akses në memorinë e procesit që trajton përmbajtjen web në skedarin aktual. Për të testuar funksionimin e eksploitit, u lançua faqja leaky.page, dhe kodi me përshkrimin e logjikës së punës është publik nga GitHub.

Prototipi i propozuar Ă«shtĂ« projektuar pĂ«r tĂ« kryer njĂ« sulm nĂ« sistemet me procesorĂ« Intel Core i7-6500U nĂ« njĂ« mjedis me Linux dhe Chrome 88. PĂ«r tĂ« aplikuar eksploitin nĂ« ambiente tĂ« tjera, kĂ«rkohen modifikime. Metoda e shfrytĂ«zimit nuk Ă«shtĂ« specifike pĂ«r procesorĂ«t Intel — pas pĂ«rshtatjes sĂ« duhur, funksionimi i eksploitit Ă«shtĂ« konfirmuar nĂ« sisteme me CPU nga prodhues tĂ« tjerĂ«, duke pĂ«rfshirĂ« Apple M1 nĂ« bazĂ« tĂ« arkitekturĂ«s ARM. Pas disa korrigjimeve tĂ« pakta, eksploitit gjithashtu iu dha mundĂ«sia qĂ« tĂ« funksionojĂ« nĂ« sisteme operative tĂ« tjera dhe nĂ« shfletues tĂ« tjerĂ« bazuar nĂ« motorin Chromium.

Në një ambient të bazuar në Chrome 88 dhe procesorët Intel Skylake, arritëm të siguroni rrjedhje të të dhënave nga procesi që është përgjegjës për trajtimin e përmbajtjes web në skedarin aktual të Chrome (procesi renditor), me një shpejtësi prej 1 kilobait në sekondë. Për më tepër, u zhvilluan prototipa alternative, për shembull, eksploit që duke ulur stabilitetin, rriti shpejtësinë e rrjedhjes deri në 8kB/s duke përdorur timer-in performance.now() me saktësi prej 5 mikrosekontrash (0.005 milisekond). Po ashtu, u përgatit një variant që funksionon me një saktësi timer-i në nivelin e një milisekondë, i cili mund të përdoret për të organizuar aksesin në memorinë e një procesi tjetër me shpejtësi rreth 60 byte në sekondë.

Kodi demonstrativ i publikuar përbëhet nga tre pjesë. Pjesa e parë kryen kalibrimin e timer-it për të vlerësuar kohën e ekzekutimit të operacioneve të nevojshme për rikuperimin e të dhënave që mbeten në cache-n e procesorit si rezultat i ekzekutimit spekulativ të instruksioneve të CPU. Pjesa e dytë kryen përcaktimin e shpërndarjes së memories, e cila përdoret për vendosjen e një vargu JavaScript.

Pjesa e tretë përkthehet në eksploatimin e dobësive Spectre për të përcaktuar përmbajtjen e memories së procesit aktual si rezultat i krijimit të kushtëve 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 mbesin në cache-në e përgjithshme dhe mund të rikuperohen me ndihmën e metodave që përcaktojnë përmbajtjen e cache-it nëpërmjet kanaleve anësore, duke analizuar ndryshimin në kohën e qasjes ndaj të dhënave të cache-uar dhe të pa-cache-uar.

Teknika e propozuar e eksploatimit lejon shmangien e përdorimit të orarëve me saktësi të lartë, të disponueshëm përmes API performance.now(), dhe pa mbështetje për llojin SharedArrayBuffer, i cili mundëson krijimin e masivave në memorie të ndarë. Eksploiti përfshin një gadget Spectre, që shkakton një ekzekutim spekulativ të kontrolluar të kodit, dhe një analizues të rrjedhjeve nëpërmjet kanaleve anësore, që përcakton të dhënat që kanë hyrë në cache gjatë ekzekutimit spekulativ.

Gadgeti është realizuar nëpërmjet një masivi JavaScript, ku bëhet një përpjekje për të aksesuar një zonë jashtë kufijve të buferit, që ndikon në gjendjen e bllokut të parashikimit të kalimeve për shkak të kontrollit të madhësisë së buferit të shtuar nga kompajleri (procesori, duke shkuar përpara, spekulativisht ekzekuton një qasje, por rikthen gjendjen pas kontrollit). Për analizimin e përmbajtjes së cache-it në kushte të saktësisë së pamjaftueshme të orarit, është propozuar një metodë që mashtrohet strategjinë e përdorur nga procesorët për shkrirjen e të dhënave nga cache, Tree-PLRU dhe që lejon, përmes rritjes së numrit të cikleve, të rrisë ndjeshëm ndryshimin në kohën e kthimit të një vlerë nga cache dhe në rastin e mungesës së vlerës në cache.

Vërehet se kompania Google publikoi një prototip eksploiti për të treguar realizueshmërinë e sulmeve që përdorin dobësitë e klasës Spectre dhe për të nxitur zhvilluesit web që të aplikojnë teknika që minimizojnë rreziqet nga këto sulme. Në këtë mënyrë, Google konsideron se pa një ripunim të konsiderueshëm të prototipit të propozuar nuk është e mundur të krijohen eksploita universale, të gatshme jo vetëm për demonstrim, por edhe për përdorim të gjerë.

Për të ulur rrezikun, pronarët e faqeve u rekomandohen të përdorin kokat e fundit të realizuara 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 përmendur nuk ofrojnë mbrojtje direkte nga sulmet, por lejojnë izolimin e të dhënave të faqes nga rrjedhja në procese ku mund të ekzekutohet kodi JavaScript i sulmuesit (rrjedhja ndodh nga memoria e procesit aktual, në të cilin përveç kodit të sulmuesit mund të përpunohen gjithashtu të dhënat e një faqeje tjetër të hapur në të njëjtën skedë). Ideja kryesore është të ndahet ekzekutimi i kodit të faqes nga kodi i huaj që merret nga burime të pasigurta, siç është përfshirja përmes iframe.

Luaj videon


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