Buvo pasiūlytas atakos metodas, leidžiantis nuotoliniu būdu nustatyti atminties fragmentus serveryje

Grupė tyrėjų iš Graco technikos universiteto (Austrija), anksčiau garsėjusių MDS, NetSpectre, Throwhammer ir ZombieLoad atakų kūrimu, paskelbė naują šoninio kanalo atakos metodą (CVE-2021-3714) prieš atminties deduplikacijos mechanizmą. , kuri leidžia nustatyti, ar atmintyje yra tam tikrų duomenų, organizuoti atminties turinio nutekėjimą baitais po baitų arba nustatyti atminties išdėstymą, kad būtų apeinama adresais pagrįstos atsitiktinės atrankos (ASLR) apsauga. Naujasis metodas skiriasi nuo anksčiau demonstruotų atakų prieš deduplikacijos mechanizmo variantų tuo, kad ataka vykdoma iš išorinio pagrindinio kompiuterio, kaip kriterijų naudojant atsako į užklausas, siunčiamas HTTP/1 ir HTTP/2 protokolais, pasikeitimą. Galimybė įvykdyti ataką buvo parodyta serveriams, pagrįstiems Linux ir Windows.

Atakos prieš atminties panaikinimo mechanizmą naudoja rašymo operacijos apdorojimo laiko skirtumą kaip informacijos nutekėjimo kanalą tais atvejais, kai pasikeitus duomenims, nukopijuotas atminties puslapis klonuojamas naudojant Copy-On-Write (COW) mechanizmą. . Veikimo metu branduolys aptinka identiškus atminties puslapius iš skirtingų procesų ir juos sujungia, identiškus atminties puslapius susiejant į vieną fizinės atminties sritį, kad būtų išsaugota tik viena kopija. Kai vienas iš procesų bando pakeisti duomenis, susietus su nukopijuotais puslapiais, atsiranda išimtis (puslapio gedimas) ir, naudojant Copy-On-Write mechanizmą, automatiškai sukuriama atskira atminties puslapio kopija, kuri priskiriama procesui. Užbaigiant kopiją sugaišta papildomai laiko, o tai gali būti duomenų pasikeitimų, trukdančių kitam procesui, požymis.

Tyrėjai parodė, kad dėl COW mechanizmo atsirandančius vėlavimus galima užfiksuoti ne tik lokaliai, bet ir analizuojant atsako pristatymo laiko pokyčius tinkle. Buvo pasiūlyti keli metodai, kaip nustatyti atminties turinį iš nuotolinio pagrindinio kompiuterio, analizuojant užklausų vykdymo laiką HTTP/1 ir HTTP/2 protokolais. Norint išsaugoti pasirinktus šablonus, naudojamos standartinės žiniatinklio programos, kurios atmintyje saugo užklausose gautą informaciją.

Bendras atakos principas apsiriboja serverio atminties puslapio užpildymu duomenimis, kurie gali pakartoti serveryje jau esančio atminties puslapio turinį. Tada užpuolikas laukia, kol branduolys turi panaikinti dublikatus ir sujungti atminties puslapį, tada pakeičia valdomus pasikartojančius duomenis ir įvertina atsako laiką, kad nustatytų, ar įvykis buvo sėkmingas.

Buvo pasiūlytas atakos metodas, leidžiantis nuotoliniu būdu nustatyti atminties fragmentus serveryje

Eksperimentų metu maksimalus informacijos nutekėjimo greitis buvo 34.41 baito per valandą atakuojant per pasaulinį tinklą ir 302.16 baito per valandą atakuojant per vietinį tinklą, o tai yra greičiau nei kiti duomenų išgavimo metodai trečiųjų šalių kanalais (pvz., NetSpectre atakos metu duomenų perdavimo sparta yra 7.5 baito pirmą valandą).

Buvo pasiūlyti trys veikiantys atakos variantai. Pirmoji parinktis leidžia nustatyti žiniatinklio serverio, kuris naudoja „Memcached“, atmintyje esančius duomenis. Ataka apsiriboja tam tikrų duomenų rinkinių įkėlimu į „Memcached“ saugyklą, pašalinto bloko išvalymą, to paties elemento perrašymą ir sąlygų COW kopijavimui pakeitus bloko turinį. Eksperimento su „Memcached“ metu per 166.51 sekundės pavyko nustatyti libc versiją, įdiegtą sistemoje, veikiančioje virtualioje mašinoje.

Antroji parinktis leido sužinoti MariaDB DBVS įrašų turinį, naudojant InnoDB saugyklą, atkuriant turinį baitas po baito. Ataka vykdoma siunčiant specialiai modifikuotas užklausas, dėl kurių atsiranda vieno baito neatitikimų atminties puslapiuose ir analizuojant atsako laiką, siekiant nustatyti, ar spėjimas apie baito turinį buvo teisingas. Tokio nutekėjimo greitis yra mažas ir siekia 1.5 baito per valandą atakuojant iš vietinio tinklo. Metodo pranašumas yra tas, kad jį galima naudoti norint atkurti nežinomą atminties turinį.

Trečiasis variantas leido per 4 minutes visiškai apeiti KASLR apsaugos mechanizmą ir gauti informaciją apie virtualios mašinos branduolio vaizdo atminties poslinkį, esant situacijai, kai poslinkio adresas yra atminties puslapyje, kuriame kiti duomenys nesikeičia. Ataka buvo įvykdyta iš pagrindinio kompiuterio, esančio 14 apynių nuo užpultos sistemos. Pateiktų atakų įgyvendinimo kodų pavyzdžius žadama publikuoti GitHub.

Šaltinis: opennet.ru

Добавить комментарий