Predlaže se metoda napada za daljinsko određivanje fragmenata memorije na poslužitelju

Grupa istraživača s Tehničkog sveučilišta u Grazu (Austrija), prethodno poznata po razvoju napada MDS, NetSpectre, Throwhammer i ZombieLoad, objavila je novu metodu napada bočnog kanala (CVE-2021-3714) protiv mehanizma deduplikacije memorije , koji omogućuje određivanje prisutnosti određenih podataka u memoriji, organiziranje curenja sadržaja memorije bajt po bajt ili određivanje rasporeda memorije za zaobilaženje zaštite nasumičnog odabira temeljene na adresi (ASLR). Nova metoda razlikuje se od prethodno demonstriranih varijanti napada na mehanizam deduplikacije izvođenjem napada s vanjskog hosta koristeći kao kriterij promjenu vremena odgovora na zahtjeve poslane napadaču putem HTTP/1 i HTTP/2 protokola. Sposobnost izvođenja napada demonstrirana je za poslužitelje temeljene na Linuxu i Windowsima.

Napadi na mehanizam dedupliciranja memorije koriste razliku u vremenu obrade operacije pisanja kao kanal za curenje informacija u situacijama kada promjena podataka dovodi do kloniranja deduplicirane memorijske stranice pomoću mehanizma Copy-On-Write (COW) . Tijekom rada, kernel detektira identične memorijske stranice iz različitih procesa i spaja ih, preslikavajući identične memorijske stranice u jedno područje fizičke memorije za pohranu samo jedne kopije. Kada jedan od procesa pokuša promijeniti podatke povezane s dedupliciranim stranicama, događa se iznimka (pogreška stranice) i pomoću mehanizma Copy-On-Write automatski se stvara zasebna kopija memorijske stranice koja se dodjeljuje procesu. Dodatno se vrijeme troši na dovršavanje kopije, što može biti znak da promjene podataka ometaju drugi proces.

Istraživači su pokazali da se kašnjenja koja proizlaze iz COW mehanizma mogu uhvatiti ne samo lokalno, već i analizom promjena u vremenu isporuke odgovora preko mreže. Predloženo je nekoliko metoda za određivanje sadržaja memorije s udaljenog glavnog računala analizom vremena izvršenja zahtjeva preko HTTP/1 i HTTP/2 protokola. Za spremanje odabranih predložaka koriste se standardne web aplikacije koje podatke primljene u zahtjevima spremaju u memoriju.

Općenito načelo napada svodi se na punjenje memorijske stranice na poslužitelju podacima koji potencijalno ponavljaju sadržaj memorijske stranice koja već postoji na poslužitelju. Napadač zatim čeka vrijeme potrebno da kernel deduplicira i spoji memorijsku stranicu, zatim modificira kontrolirane duple podatke i procjenjuje vrijeme odgovora kako bi utvrdio je li pogodak bio uspješan.

Predlaže se metoda napada za daljinsko određivanje fragmenata memorije na poslužitelju

Tijekom eksperimenata maksimalna brzina curenja informacija iznosila je 34.41 bajta po satu pri napadu putem globalne mreže i 302.16 bajta po satu pri napadu putem lokalne mreže, što je brže od drugih metoda izvlačenja podataka putem kanala trećih strana (na primjer, u NetSpectre napadu, brzina prijenosa podataka je 7.5 bajtova u jedan sat).

Predložene su tri radne opcije napada. Prva opcija omogućuje određivanje podataka u memoriji web poslužitelja koji koristi Memcached. Napad se svodi na učitavanje određenih skupova podataka u Memcached pohranu, brisanje dedupliciranog bloka, ponovno pisanje istog elementa i stvaranje uvjeta za COW kopiranje promjenom sadržaja bloka. Tijekom eksperimenta s Memcachedom bilo je moguće odrediti verziju libc-a instaliranu na sustavu koji radi u virtualnom stroju za 166.51 sekundu.

Druga opcija je omogućila pronalaženje sadržaja zapisa u MariaDB DBMS-u, kada se koristi InnoDB pohrana, ponovnim stvaranjem sadržaja bajt po bajt. Napad se izvodi slanjem posebno modificiranih zahtjeva, što rezultira neslaganjem jednog bajta u memorijskim stranicama i analizom vremena odgovora kako bi se utvrdilo je li nagađanje o sadržaju bajta bilo točno. Brzina takvog curenja je niska i iznosi 1.5 bajtova na sat kada se napada s lokalne mreže. Prednost metode je u tome što se može koristiti za oporavak nepoznatog sadržaja memorije.

Treća opcija omogućila je potpuno zaobilaženje KASLR zaštitnog mehanizma u 4 minute i dobivanje informacija o memorijskom offsetu slike jezgre virtualnog stroja, u situaciji kada je offset adresa u memorijskoj stranici u kojoj se ostali podaci ne mijenjaju. Napad je izveden s hosta koji se nalazi 14 skokova od napadnutog sustava. Obećano je da će primjeri koda za implementaciju predstavljenih napada biti objavljeni na GitHubu.

Izvor: opennet.ru

Dodajte komentar