Pro vzdálené určení fragmentů paměti na serveru je navržena metoda útoku

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 kanálů třetích stran na paměti Memory- Mechanismus deduplikace, který umožňuje určit přítomnost určitých dat v paměti, prosakovat obsah paměti bajt po bajtu nebo definovat rozložení paměti, aby se obešla ochrana před náhodnou adresou (ASLR). Nová metoda se liší od dříve demonstrovaných variant útoků na deduplikační mechanismus provedením útoku z externího hostitele, při kterém jsou jako kritérium použity změny doby odezvy na požadavky zaslané útočníkem přes protokoly HTTP/1 a HTTP/2. Možnost provedení útoku byla prokázána u serverů založených na Linuxu a Windows.

Útoky na modul deduplikace paměti využívají rozdíl v době zpracování zápisu jako kanál pro únik informací v situacích, kdy změna dat způsobí, že mechanismus kopírování při zápisu (COW) naklonuje stránku deduplikované paměti. Během provozu jádro detekuje identické paměťové stránky z různých procesů a spojuje je, mapuje identické paměťové stránky do jedné oblasti fyzické paměti, aby se uložila pouze jedna kopie. Když se jeden z procesů pokusí změnit data spojená s deduplikovanými stránkami, dojde k výjimce (chybě stránky) a pomocí mechanismu Copy-On-Write se automaticky vytvoří samostatná kopie paměťové stránky, která je přiřazena procesu. . Dokončení kopie zabere více času, což může naznačovat, že data byla změněna jiným procesem.

Výzkumníci ukázali, že zpoždění vyplývající z fungování mechanismu COW lze zachytit nejen lokálně, ale také analýzou změny v čase doručení odpovědí po síti. Bylo navrženo několik metod pro určování obsahu paměti ze vzdáleného hostitele pomocí analýzy doby provádění požadavků prostřednictvím protokolů HTTP/1 a HTTP/2. K uložení vybraných šablon se používají typické webové aplikace, které ukládají informace přijaté v požadavcích do paměti.

Obecným principem útoku je zaplnění paměťové stránky na serveru daty, která potenciálně opakují obsah paměťové stránky již na serveru. Útočník poté čeká, až jádro odstraní duplikaci a sloučí paměťovou stránku, poté upraví řízený duplikát dat a vyhodnotí dobu odezvy, aby určil, zda byl zásah úspěšný.

Pro vzdálené určení fragmentů paměti na serveru je navržena metoda útoku

V průběhu experimentů byla 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 přes kanály třetích stran ( například při útoku na NetSpectre je rychlost přenosu dat 7.5 bajtů v jedné hodině).

Jsou navrženy tři pracovní varianty útoku. První možnost vám umožňuje určit data v paměti webového serveru, který používá Memcached. Útok spočívá v načtení určitých datových sad do úložiště Memcached, vymazání deduplikovaného bloku, přepsání stejného prvku a vytvoření podmínky pro výskyt COW kopírování změnou obsahu bloku. Během experimentu s Memcached trvalo 166.51 sekund určení verze knihovny libc nainstalované na systému běžícím na virtuálním počítači.

Druhá možnost umožnila zjistit obsah záznamů v MariaDB DBMS pomocí úložiště InnoDB opětovným vytvořením obsahu byte po byte. Útok je proveden odesláním speciálně upravených požadavků, což vede k jednobajtovým neshodám na paměťových stránkách a analýze reakční doby, aby se zjistilo, že odhad obsahu bajtu byl správný. Rychlost takového úniku je nízká a při napadení z místní sítě dosahuje 1.5 bajtu za hodinu. Výhodou metody je, že ji lze použít k obnově neznámého obsahu paměti.

Třetí možnost umožnila během 4 minut zcela obejít ochranný mechanismus KASLR a získat informaci o offsetu v paměti obrazu jádra virtuálního stroje v situaci, kdy je offsetová adresa na paměťové stránce, ve které jiná data nejsou změna. Útok byl proveden z hostitele umístěného 14 skoků od napadeného systému. Slibujeme zveřejnění příkladů kódu pro prezentované útoky na GitHubu.

Zdroj: opennet.ru

Přidat komentář