U Linux je otkriveno dvije ranjivosti koje su suštinski slične onoj ranjivosti Copy Fail otkrivenoj prije nekoliko dana, ali se manifestiraju u drugim pod-sustavima — xfrm-ESP i RxRPC. Seriji ranjivosti dodijeljeno je kodno ime Dirty Frag (također se spominje Copy Fail 2). Ranjivosti omogućuju privilegiranom korisniku da dobije root prava prepisujući podatke procesa u stranici keša. Eksploit je dostupan i radi na svim aktualnim Linux distribucijama. Informacije o ranjivosti su otkrivene prije nego što su objavljene ispravke, no postoji zaobilazna metoda za blokiranje problema.
Dirty Frag obuhvaća dvije različite ranjivosti: prva je u xfrm-ESP modulu, koji se koristi za ubrzanje operacija šifriranja u IPsec-u koristeći ESP (Encapsulating Security Payload) protokol, a druga u RxRPC drajveru, koji implementira obitelj soketa AF_RXRPC i odgovarajući RPC protokol koji radi iznad UDP-a. Svaka od ranjivosti pojedinačno omogućava postizanje root prava. Ranjivost u xfrm-ESP pojavila se u Linux jezgru od siječnja 2017. godine, dok ranjivost u RxRPC postoji od lipnja 2023. godine. Obje probleme uzrokovane su optimizacijama koje dopuštaju izravno pisanje u keš stranica.
Za eksploataciju ranjivosti u xfrm-ESP korisnik mora imati prava za stvaranje prostora imena, dok za eksploataciju ranjivosti u RxRPC mora postojati mogućnost učitavanja jezgrinog modula rxrpc.ko. Na primjer, u Ubuntu-u pravilima AppArmor-u nije dopušteno neprivilegiranom korisniku stvaranje prostora imena, dok se zadano učitava modul rxrpc.ko. U nekim distribucijama modul rxrpc.ko nedostaje, ali nisu blokirani prostori imena. Istraživač koji je otkrio problem pripremio je kombinirani eksploit koji može napasti sustav kroz obje ranjivosti, što omogućuje eksploataciju problema u svim velikim distribucijama. Rad eksploita potvrđen je u Ubuntu 24.04.4 s jezgrom 6.17.0-23, RHEL 10.1 s jezgrom 6.12.0-124.49.1, openSUSE Tumbleweed s jezgrom 7.0.2-1, CentOS Stream 10 s jezgrom 6.12.0-224, AlmaLinux 10 s jezgrom 6.12.0-124.52.3 i Fedora 44 s jezgrom 6.19.14-300.
Kao i kod ranjivosti Copy Fail, problemi u xfrm-ESP i RxRPC uzrokovani su izvršavanjem dešifriranja podataka na mjestu korištenjem funkcije splice(), koja prenosi podatke između datotečnih deskripcija i kanala (pipe) bez kopiranja, putem prijenosa referenci na elemente u memorijskom cacheu. Offseti za operaciju pisanja izračunavani su bez potrebnih provjera koje uzimaju u obzir korištenje izravnih referenci na elemente u memorijskom cacheu, što je omogućilo slanjem posebno oblikovanih zahtjeva da se prepišu 4 bajta na odabranom offsetu i promijeni sadržaj bilo kojeg datoteke u memorijskom cacheu.
Sve operacije čitanja iz datoteka prvenstveno vraćaju sadržaj iz memorijskog cachea. U slučaju izmjene podataka u memorijskom cacheu, operacije čitanja iz datoteka će rezultirati vraćanjem ne stvarno pohranjene informacije na uređaju, već zamijenjenih podataka. Iskorištavanje ranjivosti svodi se na izmjenu memorijskog cachea za izvršni datoteku s oznakom suid root. Na primjer, za dobivanje root prava, možete pročitati izvršni datoteku /usr/bin/su kako biste je smjestili u memorijski cache, nakon čega možete postići zamjenu vlastitog koda u učitanom sadržaju ovog datoteke iz memorijskog cachea. Sljedeće pokretanje alata „su“ rezultirat će time da će se u memoriju učitati neoriginalni izvršni datoteku s uređaja, već izmijenjena kopija iz memorijskog cachea.
Otkrivanje informacija o ranjivostima i koordinirano izdavanje ažuriranja za rješavanje problema bilo je planirano za 12. svibnja, ali zbog curenja informacija, podaci o ranjivosti morali su se objaviti prije objave ispravki. Krajem travnja u javnoj mailing listi netdev objavljeni su patch-evi za rxrpc, ipsec i xfrm, bez navođenja da su povezani s rješavanjem ranjivosti. 5. svibnja, održavatelj IPsec podskupine prihvatio je u git-repozitorij netdev promjenu s predloženim rješenjem u modulu xfrm-esp, čiji je opis u velikoj mjeri ponavljao opis problema koji je doveo do ranjivosti Copy Fail u modulu algif_aead. Jedan od istraživača sigurnosti bio je zainteresiran za ovo rješenje, uspio je stvoriti funkcionalni exploit i objavio ga, nesvjestan toga da je na otkrivanje podataka o problemu do 12. svibnja uvedena zabrana.
Ažuriranja s ispravcima za Linux kernel i pakete s kernelom još nisu objavljena u distribucijama, ali su dostupne ispravke za rješavanje problema — xfrm-esp i rxrpc. CVE identifikatori nisu dodijeljeni, što otežava praćenje ažuriranja paketa u distribucijama. Kao privremena zaštita može se blokirati učitavanje modula jezgre esp4, esp6 i rxrpc: sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; true"
Izvor: opennet.ru
