Jauns paņēmiens Spectre ievainojamību izmantošanai pārlūkā Chrome

Pētnieku grupa no Amerikas, Austrālijas un Izraēlas universitātēm ir ierosinājusi jaunu sānu kanālu uzbrukuma paņēmienu, lai izmantotu Spectre klases ievainojamības pārlūkprogrammās, kuru pamatā ir Chromium dzinējs. Uzbrukums ar koda nosaukumu Spook.js ļauj apiet vietnes izolācijas mehānismu, palaižot JavaScript kodu un nolasīt visas pašreizējā procesa adrešu telpas saturu, t.i. piekļūt datiem no lapām, kas darbojas citās cilnēs, bet tiek apstrādātas tajā pašā procesā.

Tā kā pārlūkā Chrome dažādos procesos tiek izmantotas dažādas vietnes, iespēja veikt praktiskus uzbrukumus ir ierobežota ar pakalpojumiem, kas ļauj dažādiem lietotājiem mitināt savas lapas. Metode ļauj no lapas, kurā uzbrucējam ir iespēja iegult savu JavaScript kodu, noteikt citu lapu klātbūtni, ko lietotājs ir atvēris no tās pašas vietnes, un izvilkt no tām konfidenciālu informāciju, piemēram, aizstātus akreditācijas datus vai bankas datus. izmantojot tīmekļa veidlapu automātiskās aizpildīšanas lauku sistēmu. Demonstrācijai ir parādīts, kā jūs varat uzbrukt kāda cita emuāram pakalpojumā Tumblr, ja tā īpašnieks citā cilnē atver uzbrucēju emuāru, kas tiek mitināts tajā pašā pakalpojumā.

Vēl viena metodes izmantošanas iespēja ir uzbrukums pārlūkprogrammas pievienojumprogrammām, kas ļauj, instalējot uzbrucēja kontrolētu papildinājumu, iegūt datus no citiem papildinājumiem. Piemēram, mēs parādām, kā, instalējot ļaunprātīgu papildinājumu, varat iegūt konfidenciālu informāciju no LastPass paroļu pārvaldnieka.

Pētnieki ir publicējuši ekspluatācijas prototipu, kas darbojas pārlūkprogrammā Chrome 89 sistēmās ar CPUIntel i7-6700K un i7-7600U. Veidojot ekspluatāciju, Spectre klases uzbrukumu veikšanai tika izmantoti Google iepriekš publicētie JavaScript koda prototipi. Tiek atzīmēts, ka pētnieki varēja sagatavot darba eksploatācijas sistēmām, kuru pamatā ir Intel un Apple M1 procesori, kas ļauj organizēt atmiņas nolasīšanu ar ātrumu 500 baiti sekundē un 96% precizitāti. Tiek pieņemts, ka metode ir piemērojama arī AMD procesoriem, taču nebija iespējams sagatavot pilnībā funkcionējošu eksploitu.

Uzbrukums ir piemērojams visām pārlūkprogrammām, kuru pamatā ir Chromium dzinējs, tostarp Google Chrome, Microsoft Edge un Brave. Pētnieki arī uzskata, ka metodi var pielāgot darbam ar Firefox, taču, tā kā Firefox dzinējs ļoti atšķiras no Chrome, darbs pie šāda eksplota izveides tiek atstāts nākotnei.

Lai aizsargātu pret pārlūkprogrammas uzbrukumiem, kas saistīti ar spekulatīvu instrukciju izpildi, Chrome ievieš adrešu telpas segmentāciju — smilškastes izolācija ļauj JavaScript darboties tikai ar 32 bitu rādītājiem un koplieto apdarinātāju atmiņu nesadalītās 4 GB kaudzītēs. Lai nodrošinātu piekļuvi visai procesa adrešu telpai un apietu 32 bitu ierobežojumu, pētnieki izmantoja paņēmienu ar nosaukumu Type Confusion, kas liek JavaScript dzinējam apstrādāt objektu ar nepareizu tipu, kas ļauj izveidot 64 bitu. rādītājs, kura pamatā ir divu 32 bitu vērtību kombinācija.

Uzbrukuma būtība ir tāda, ka apstrādājot īpaši izstrādātu ļaunprātīgu objektu JavaScript dzinējā, tiek radīti apstākļi, kas noved pie spekulatīvas instrukciju izpildes, kas piekļūst masīvam. Objekts ir atlasīts tā, lai uzbrucēja kontrolētie lauki tiktu novietoti apgabalā, kurā tiek izmantots 64 bitu rādītājs. Tā kā ļaunprātīgā objekta veids neatbilst apstrādājamā masīva veidam, parastos apstākļos šādas darbības pārlūkā Chrome bloķē masīvu piekļuvei izmantotā koda deoptimizācijas mehānisms. Lai atrisinātu šo problēmu, Type Confusion uzbrukuma kods tiek ievietots nosacītajā “ja” blokā, kas normālos apstākļos netiek aktivizēts, bet tiek izpildīts spekulatīvā režīmā, ja procesors nepareizi prognozē turpmāko sazarojumu.

Rezultātā procesors spekulatīvi piekļūst ģenerētajam 64 bitu rādītājam un atgriež stāvokli pēc neveiksmīgas prognozes noteikšanas, bet izpildes pēdas paliek koplietotajā kešatmiņā un tās var atjaunot, izmantojot sānu kanālu kešatmiņas noteikšanas metodes, kas analizē izmaiņas piekļuves laiki kešatmiņā saglabātajiem un neglabātajiem datiem. Lai analizētu kešatmiņas saturu JavaScript pieejamā taimera nepietiekamas precizitātes apstākļos, tiek izmantota Google piedāvātā metode, kas maldina procesoros izmantoto Tree-PLRU kešatmiņas izlikšanas stratēģiju un ļauj, palielinot ciklu skaitu, ievērojami palielināt laika atšķirību, ja vērtība ir un nav kešatmiņā.

Avots: opennet.ru

Pievieno komentāru