Skupina výskumníkov z Technickej univerzity v Grazi (Rakúsko), predtým známa vývojom útokov MDS, NetSpectre, Throwhammer a ZombieLoad, publikovala novú metódu útoku cez bočný kanál (CVE-2021-3714) proti enginu Memory-Deduplication. Tento útok umožňuje určiť prítomnosť konkrétnych údajov v pamäti, zorganizovať únik pamäte bajt po bajte alebo určiť rozloženie pamäte tak, aby sa obišla randomizácia založená na adresách (ASLR). Nová metóda sa líši od predtým demonštrovaných útokov na engine deduplication v tom, že útok sa vykonáva z externého hostiteľa s použitím zmien v čase odozvy na požiadavky odoslané útočníkom cez protokoly HTTP/1 a HTTP/2 ako kritéria. Realizovateľnosť útoku bola demonštrovaná pre servery na základe... Linux и Windows.
Útoky na mechanizmus deduplikácie pamäte zneužívajú rozdiel v čase spracovania zápisu ako kanál pre únik informácií v situáciách, keď úprava údajov vedie ku klonovaniu deduplikovanej pamäťovej stránky pomocou mechanizmu Copy-On-Write (COW). Počas prevádzky jadro identifikuje identické pamäťové stránky z rôznych procesov a zlúči ich, pričom identické pamäťové stránky namapuje do jednej oblasti fyzickej pamäte, aby uložil iba jednu kópiu. Keď sa jeden proces pokúsi upraviť údaje spojené s deduplikovanými stránkami, dôjde k výnimke (chyba stránky) a mechanizmus Copy-On-Write automaticky vytvorí samostatnú kópiu pamäťovej stránky a priradí ju procesu. Proces kopírovania trvá dodatočný čas, čo môže naznačovať zmenu údajov, ktorá sa prekrýva s iným procesom.
Výskumníci preukázali, že oneskorenia vyplývajúce z mechanizmu COW je možné detegovať nielen lokálne, ale aj analýzou zmien v čase odozvy v sieti. Navrhuje sa 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 ukladanie vybraných vzorov 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 redukuje na vyplnenie server Pamäťové stránky s údajmi, ktoré potenciálne duplikujú obsah existujúcej pamäťovej stránky na serveri. Útočník potom čaká, kým jadro vykoná deduplikáciu a zlúči pamäťovú stránku, po čom upraví kontrolované duplicitné údaje a vyhodnotí čas odozvy, aby určil úspešnosť útoku.

Počas experimentov bola maximálna miera úniku informácií 34.41 bajtov za hodinu počas útoku cez globálnu sieť a 302.16 bajtov za hodinu počas útoku cez lokálnu sieť, čo je rýchlejšie ako iné metódy extrakcie údajov cez bočné kanály (napríklad počas útoku NetSpectre je rýchlosť prenosu údajov 7.5 bajtov za hodinu).
Boli navrhnuté tri funkčné varianty útoku. Prvý variant umožňuje identifikáciu údajov v pamäti. webové servery, ktorý využíva Memcached. Útok spočíva v načítaní špecifických dátových súborov do úložiska Memcached, vymazaní deduplikovaného bloku, prepísaní toho istého prvku a vytvorení podmienok pre kópiu COW úpravou obsahu bloku. Počas experimentu s Memcached bolo možné určiť verziu libc nainštalovanú v systéme bežiacom na virtuálnom počítači za 166.51 sekúnd.
Druhá metóda umožnila výskumníkom objaviť obsah záznamov v systéme správy databáz (DBMS) MariaDB s použitím úložiska InnoDB rekonštrukciou obsahu bajt po bajte. Útok sa vykonáva odosielaním špeciálne upravených požiadaviek, ktoré spôsobujú nezhody jednotlivých bajtov v pamäťových stránkach, a analýzou času odozvy s cieľom určiť, či bol odhad o obsahu bajtov správny. Miera úniku tohto typu je nízka a pri útoku z lokálnej siete dosahuje 1.5 bajtu za hodinu. Výhodou tejto metódy je, že ju možno použiť na obnovenie neznámeho obsahu pamäte.
Tretí variant umožnil útočníkovi úplne obísť ochranný mechanizmus KASLR za štyri minúty a získať informácie o ofsetu pamäte obrazu jadra virtuálneho stroja, a to aj v prípade, že adresa ofsetu sa nachádza na pamäťovej stránke, ktorej ostatné údaje zostávajú nezmenené. Útok bol vykonaný z hostiteľa nachádzajúceho sa 14 medziskokov od cieľového systému. Očakáva sa, že ukážky kódu pre prezentované útoky budú zverejnené na GitHub.
Zdroj: opennet.ru
