Byl navržen způsob útoku pro vzdálené určování fragmentů paměti na serveru

Skupina výzkumníků z Technické univerzity v Grazu (Rakousko), dříve známá vývojem útoků MDS, NetSpectre, Throwhammer a ZombieLoad, zveřejnila novou metodu útoku (CVE-2021-3714) prostřednictvím vedlejších kanálů na mechanismus deduplikace stránek paměti (Memory-Deduplication). Tato metoda umožňuje určit přítomnost určitých dat v paměti, uspořádat únik obsahu paměti po bytech nebo zjistit rozložení paměti pro obcházení ochrany založené na randomizaci adres (ASLR). Nová metoda se od dříve demonstrovaných variant útoků na mechanizmus deduplikace liší prováděním útoku z externího hostitele, přičemž jako kritérium slouží změna doby odezvy na odesílané útočné požadavky prostřednictvím protokolů HTTP/1 a HTTP/2. Možnost provedení útoku byla demonstrována pro servery založené na Linuxu a Windows.

Útoky na mechanismus deduplikace paměti využívají jako kanál pro únik informací rozdíl v čase zpracování operace zápisu v situacích, kdy změna dat vede ke klonování deduplikované stránky paměti pomocí mechanismu Copy-On-Write (COW). Během práce jádro určuje identické stránky paměti z různých procesů a spojuje je, tím se zobrazuje identické stránky paměti v jedné oblasti fyzické paměti pro uložení pouze jedné kopie. Při pokusu o změnu dat jedním z procesů souvisejících s deduplikovanými stránkami dojde k výjimce (page fault) a pomocí mechanismu Copy-On-Write se automaticky vytvoří samostatná kopie stránky paměti, která je přiřazena danému procesu. Na provedení kopírování se vynakládá další čas, což může být známkou změny dat, která se překrývá s jiným procesem.

Výzkumníci ukázali, že zpoždění vzniklá v důsledku funkce mechanismu COW mohou být zachycena nejen lokálně, ale i analýzou změn doby dodání odpovědí přes síť. Bylo navrženo několik metod pro určení obsahu paměti z vzdáleného hostitele prostřednictvím analýzy doby provádění požadavků prostřednictvím protokolů HTTP/1 a HTTP/2. Pro uchování vybíraných vzorů se používají typické webové aplikace, které uchovávají informaci obsaženou v přicházejících požadavcích v paměti.

Obecný princip útoku spočívá v naplnění na serveru stránky paměti daty, které potenciálně opakují obsah již existující na serveru stránky paměti. Poté útočník čeká na čas potřebný pro provedení deduplikace jádrem a sloučení stránky paměti, po čemž provádí změny kontrolovaného duplicitního datového bloku a hodnotí čas reakce k určení úspěšnosti zásahu.

Byl navržen způsob útoku pro vzdálené určování fragmentů paměti na serveru

V rámci provedených experimentů dosáhla maximální rychlost úniku informací 34,41 bajtů za hodinu při útoku přes globální síť a 302,16 bajtů za hodinu při útoku přes lokální síť, což je rychlejší než jiné metody získávání dat prostřednictvím externích kanálů (například při útoku NetSpectre je rychlost přenosu dat 7,5 bajtů za hodinu).

Byly navrženy tři pracovní varianty útoku. První varianta umožňuje určit data v paměti webového serveru, na kterém se používá Memcached. Útok spočívá v načítání určitých datových sad do úložiště Memcached, vyčištění deduplikované bloky, opětovném zápisu stejného prvku a vytvoření podmínek pro vznik COW-kopírování prostřednictvím změny obsahu bloku. V průběhu experimentu s Memcached se podařilo za 166,51 sekundy určit verzi libc nainstalovanou v systému běžícím ve virtuálním stroji.

Druhá varianta umožnila zjistit obsah záznamů v databázi MariaDB při použití úložiště InnoDB prostřednictvím rekonstrukce obsahu bajt po bajtu. Útok se provádí zasláním speciálně upravených dotazů, které vedou k jednomu bajtovým nesrovnalostem v stránkách paměti a analýzou času reakce za účelem určení, že domněnka o obsahu bajtu byla správná. Rychlost takového úniku je malá a činí 1,5 bajtů za hodinu při útoku z lokální sítě. Výhodou metody je, že může být použita k obnově neznámého obsahu paměti.

Třetí varianta umožnila za 4 minuty zcela obejít mechanismus ochrany KASLR a získat informace o posunu v paměti obrazu jádra virtuálního stroje, když se adresa posunu nachází na stránce paměti, jejíž jiné údaje nejsou změněny. Útok byl proveden z hostitele, který byl za 14 přechodů (hops) od napadeného systému. Příklady kódu pro provedení výše uvedených útoků slibují, že budou zveřejněny na GitHubu.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster