Ranjivosti Dirty Frag koje mijenjaju predmemoriju stranice kako bi se dobio root pristup u svim Linux distribucijama

U Linux kernelu otkrivene su dvije ranjivosti. Ove ranjivosti slične su prirode ranjivosti Copy Fail otkrivenoj prije nekoliko dana, ali utječu na različite podsustave - xfrm-ESP i RxRPC. Ova serija ranjivosti kodnog je naziva Dirty Frag (također se naziva Copy Fail 2). Ove ranjivosti omogućuju neprivilegiranom korisniku da dobije root privilegije prepisivanjem podataka procesa u predmemoriji stranica. Dostupan je iskorištavajući program koji radi na svim trenutnim Linux distribucijama. Ranjivost je otkrivena prije objavljivanja zakrpa, ali dostupno je zaobilazno rješenje.

Dirty Frag pokriva dvije različite ranjivosti: prvu u modulu xfrm-ESP, koji se koristi za ubrzavanje IPsec operacija šifriranja pomoću ESP (Encapsulating Security Payload) protokola, i drugu u RxRPC upravljačkom programu, koji implementira obitelj utičnica AF_RXRPC i istoimeni RPC protokol, koji se izvodi preko UDP-a. Svaka ranjivost, zasebno, omogućuje root privilegije. Ranjivost xfrm-ESP prisutna je u Linux kernelu od siječnja 2017., a ranjivost RxRPC prisutna je od lipnja 2023. Oba problema uzrokovana su optimizacijama koje omogućuju izravno pisanje u predmemoriju stranice.

Da bi iskoristio ranjivost xfrm-ESP, korisnik mora imati dopuštenje za stvaranje imenskih prostora, a da bi iskoristio ranjivost RxRPC, mora biti učitan modul kernela rxrpc.ko. Na primjer, u Ubuntuu, AppArmor pravila sprječavaju neprivilegirane korisnike da stvaraju imenske prostore, ali modul rxrpc.ko se učita prema zadanim postavkama. Nekim distribucijama nedostaje modul rxrpc.ko, ali ne blokiraju stvaranje imenskih prostora. Istraživač koji je otkrio problem razvio je kombinirani iskorištavajući program sposoban za napad na sustav putem obje ranjivosti, što omogućuje iskorištavanje problema na svim glavnim distribucijama. Potvrđeno je da exploit radi na Ubuntu 24.04.4 s kernelom 6.17.0-23, RHEL 10.1 s kernelom 6.12.0-124.49.1, openSUSE Tumbleweed s kernelom 7.0.2-1, CentOS Stream 10 s kernelom 6.12.0-224, AlmaLinux 10 s kernelom 6.12.0-124.52.3 i Fedora 44 s kernelom 6.19.14-300.

Kao i kod ranjivosti Copy Fail, problemi u xfrm-ESP i RxRPC uzrokovani su dešifriranjem podataka na mjestu pomoću funkcije splice(), koja prenosi podatke između deskriptora datoteka i cijevi bez kopiranja, prosljeđivanjem referenci na elemente u predmemoriji stranice. Pomaci pisanja izračunati su bez odgovarajućih provjera kako bi se uzela u obzir upotreba izravnih referenci na elemente u predmemoriji stranice, što je omogućilo posebno izrađenim zahtjevima da prepišu 4 bajta na zadanom pomaku i izmijene sadržaj bilo koje datoteke u predmemoriji stranice.

Sve operacije čitanja datoteka prvo dohvaćaju sadržaj iz predmemorije stranice. Ako se podaci u predmemoriji stranice modificiraju, operacije čitanja datoteka vratit će zamijenjene podatke, a ne stvarne informacije pohranjene na disku. Iskorištavanje ranjivosti svodi se na modificiranje predmemorije stranice za izvršnu datoteku sa suid root zastavom. Na primjer, za dobivanje root privilegija, netko može pročitati izvršnu datoteku /usr/bin/su kako bi je smjestio u predmemoriju stranice, a zatim zamijeniti vlastiti kod u sadržaj ove datoteke učitane u predmemoriju stranice. Naknadno izvršavanje uslužnog programa "su" rezultirat će učitavanjem modificirane kopije iz predmemorije stranice u memoriju, a ne izvorne izvršne datoteke s diska.

Otkrivanje ranjivosti i koordinirano izdavanje zakrpa bilo je zakazano za 12. svibnja, ali zbog curenja informacija, informacije o ranjivosti morale su biti objavljene prije izdavanja zakrpa. Krajem travnja, zakrpe za rxrpc, ipsec i xfrm objavljene su na javnoj mailing listi netdev-a bez spomena da su povezane s ranjivošću. Dana 5. svibnja, održavatelj IPsec podsustava prihvatio je promjenu u netdev Git repozitoriju s predloženim popravkom u modulu xfrm-esp. Opis promjene bio je uglavnom identičan opisu problema koji je doveo do ranjivosti Copy Fail u modulu algif_aead. Istraživač sigurnosti zainteresirao se za ovaj popravak, uspio je stvoriti funkcionalni exploit i objavio ga, nesvjestan da je nametnut embargo na otkrivanje informacija o problemu do 12. svibnja.

Ažuriranja s ispravcima za Linux kernel i pakete kernela u distribucijama još nisu objavljena, ali dostupni su zakrpe koje rješavaju probleme - xfrm-esp i rxrpc. CVE identifikatori nisu dodijeljeni, što komplicira praćenje ažuriranja paketa u distribucijama. Kao zaobilazno rješenje, možete blokirati učitavanje modula kernela 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