Ranjivost u podsistemu kernela Linux Netfilter

Ranjivost (CVE-2021-22555) je identifikovana u Netfilter-u, podsistemu Linux kernela koji se koristi za filtriranje i modifikovanje mrežnih paketa, koji omogućava lokalnom korisniku da dobije root privilegije na sistemu, uključujući i dok je u izolovanom kontejneru. Radni prototip eksploatacije koji zaobilazi zaštitne mehanizme KASLR, SMAP i SMEP je pripremljen za testiranje. Istraživač koji je otkrio ranjivost dobio je nagradu od 20 dolara od Gugla za identifikaciju metode za zaobilaženje izolacije Kubernetes kontejnera u kCTF klasteru.

Problem postoji još od kernela 2.6.19, objavljenog prije 15 godina, a uzrokovan je greškom u rukovateljima IPT_SO_SET_REPLACE i IP6T_SO_SET_REPLACE koja uzrokuje prelijevanje bafera prilikom slanja posebno formatiranih parametara putem setsockopt poziva u compat modu. U normalnim okolnostima, samo root korisnik može uputiti poziv compat_setsockopt(), ali privilegije potrebne za izvođenje napada može dobiti i neprivilegirani korisnik na sistemima sa omogućenom podrškom za korisničke prostore imena.

Korisnik može kreirati kontejner sa zasebnim root korisnikom i odatle iskoristiti ranjivost. Na primjer, "korisnički prostori imena" su po defaultu omogućeni na Ubuntu i Fedori, ali nisu omogućeni na Debianu i RHEL-u. Zakrpa koja popravlja ranjivost je usvojena u Linux kernel 13. aprila. Debian, Arch Linux i Fedora projekti su već generirali ažuriranja paketa. U Ubuntu, RHEL i SUSE, ažuriranja su u pripremi.

Problem se javlja u funkciji xt_compat_target_from_user() zbog pogrešne kalkulacije veličine memorije kada se spremaju strukture kernela nakon konverzije iz 32-bitnog u 64-bitni prikaz. Greška omogućava da se četiri nula bajta upišu na bilo koju poziciju izvan dodijeljenog bafera ograničenog pomakom 0x4C. Ispostavilo se da je ova funkcija dovoljna da se napravi exploit koji je omogućio stjecanje root prava – brisanjem pokazivača m_list->next u strukturi msg_msg stvoreni su uslovi za pristup podacima nakon oslobađanja memorije (use-after-free), što je zatim korišten za dobivanje informacija o adresama i promjenama u drugim strukturama kroz manipulaciju sistemskim pozivom msgsnd().

izvor: opennet.ru

Dodajte komentar