Bola navrhnutá metóda útoku na vzdialené určenie fragmentov pamäte na serveri

Skupina výskumníkov z Technickej univerzity v Grazi (Rakúsko), ktorá bola predtým známa vývojom útokov MDS, NetSpectre, Throwhammer a ZombieLoad, zverejnila novú metódu útoku postranným kanálom (CVE-2021-3714) proti mechanizmu deduplikácie pamäte. , ktorý umožňuje určiť prítomnosť určitých údajov v pamäti, organizovať bajt po byte úniku obsahu pamäte alebo určiť rozloženie pamäte, aby sa obišla ochrana pred randomizáciou založenou na adrese (ASLR). Nová metóda sa líši od predtým demonštrovaných variantov útokov na mechanizmus deduplikácie vykonaním útoku z externého hostiteľa, pričom ako kritérium sa použije zmena času odozvy na požiadavky odoslané útočníkovi cez protokoly HTTP/1 a HTTP/2. Schopnosť vykonať útok bola preukázaná pre servery založené na Linuxe a Windowse.

Útoky na mechanizmus deduplikácie pamäte využívajú rozdiel v dobe spracovania operácie zápisu ako kanál na únik informácií v situáciách, keď zmena v údajoch vedie ku klonovaniu stránky s deduplikáciou pamäte pomocou mechanizmu Copy-On-Write (COW) . Počas prevádzky jadro deteguje identické pamäťové stránky z rôznych procesov a spája ich, pričom mapuje identické pamäťové stránky do jednej oblasti fyzickej pamäte, aby sa uložila iba jedna kópia. Keď sa niektorý z procesov pokúsi zmeniť údaje spojené s deduplikovanými stránkami, dôjde k výnimke (chybe stránky) a pomocou mechanizmu Copy-On-Write sa automaticky vytvorí samostatná kópia pamäťovej stránky, ktorá je priradená procesu. Dokončenie kópie sa strávi dodatočným časom, čo môže byť znakom toho, že zmeny údajov zasahujú do iného procesu.

Výskumníci ukázali, že oneskorenia vyplývajúce z mechanizmu COW možno zachytiť nielen lokálne, ale aj analýzou zmien v časoch dodania odozvy v sieti. Bolo navrhnutých niekoľko metód na určenie obsahu pamäte zo vzdialeného hostiteľa analýzou času vykonávania požiadaviek cez protokoly HTTP/1 a HTTP/2. Na uloženie vybraných šablón sa používajú štandardné webové aplikácie, ktoré ukladajú informácie prijaté v požiadavkách do pamäte.

Všeobecný princíp útoku sa scvrkáva na vyplnenie pamäťovej stránky na serveri údajmi, ktoré potenciálne opakujú obsah pamäťovej stránky už existujúcej na serveri. Útočník potom čaká na čas potrebný na to, aby jadro deduplikovalo a zlúčilo pamäťovú stránku, potom upraví kontrolované duplicitné údaje a vyhodnotí čas odozvy, aby určil, či bol zásah úspešný.

Bola navrhnutá metóda útoku na vzdialené určenie fragmentov pamäte na serveri

Počas experimentov bola maximálna rýchlosť úniku informácií 34.41 bajtov za hodinu pri útoku cez globálnu sieť a 302.16 bajtov za hodinu pri útoku cez lokálnu sieť, čo je rýchlejšie ako iné metódy extrakcie údajov cez kanály tretích strán (napr. pri útoku NetSpectre je rýchlosť prenosu dát 7.5 bajtu za hodinu).

Boli navrhnuté tri funkčné možnosti útoku. Prvá možnosť vám umožňuje určiť údaje v pamäti webového servera, ktorý používa Memcached. Útok sa scvrkáva na načítanie určitých súborov údajov do úložiska Memcached, vymazanie deduplikovaného bloku, prepísanie rovnakého prvku a vytvorenie podmienky pre kopírovanie COW zmenou obsahu bloku. Počas experimentu s Memcached bolo možné za 166.51 sekundy určiť verziu knižnice libc nainštalovanú na systéme, ktorý beží na virtuálnom stroji.

Druhá možnosť umožnila zistiť obsah záznamov v MariaDB DBMS pri použití úložiska InnoDB opätovným vytvorením obsahu po byte. Útok sa vykonáva odoslaním špeciálne upravených požiadaviek, čo má za následok jednobajtové nezhody na stránkach pamäte a analyzuje čas odozvy, aby sa zistilo, že odhad obsahu bajtu bol správny. Rýchlosť takéhoto úniku je nízka a pri útoku z lokálnej siete dosahuje 1.5 bajtu za hodinu. Výhodou metódy je, že ju možno použiť na obnovu neznámeho obsahu pamäte.

Tretia možnosť umožnila za 4 minúty úplne obísť ochranný mechanizmus KASLR a získať informáciu o pamäťovom offsete obrazu jadra virtuálneho stroja, v situácii, keď je offsetová adresa v pamäťovej stránke, v ktorej sa ostatné dáta nemenia. Útok bol vykonaný z hostiteľa nachádzajúceho sa 14 skokov od napadnutého systému. Príklady kódu na implementáciu prezentovaných útokov sľubujú zverejnenie na GitHub.

Zdroj: opennet.ru

Pridať komentár