Ranljivost v VFS jedra Linuxa, ki vam omogoča, da povečate svoje privilegije

Ranljivost (CVE-2022-0185) je bila ugotovljena v API-ju Filesystem Context, ki ga zagotavlja jedro Linuxa, ki lokalnemu uporabniku omogoča pridobitev korenskih pravic v sistemu. Raziskovalec, ki je odkril težavo, je objavil predstavitev izkoriščanja, ki vam omogoča izvajanje kode kot root v Ubuntu 20.04 v privzeti konfiguraciji. Koda izkoriščanja naj bi bila objavljena na GitHubu v enem tednu po izdaji posodobitve distribucij, ki odpravlja ranljivost.

Ranljivost obstaja v funkciji legacy_parse_param() v VFS in je posledica napake pri pravilnem preverjanju največje velikosti parametrov, podanih v datotečnih sistemih, ki ne podpirajo Filesystem Context API. Posredovanje prevelikega parametra lahko povzroči prekoračitev celoštevilske spremenljivke, ki se uporablja za izračun velikosti podatkov, ki jih je treba zapisati - koda ima preverjanje prekoračitve medpomnilnika "if (len > PAGE_SIZE - 2 - velikost)", ki ne deluje, če je vrednost velikosti večja od 4094. za celoštevilsko prelivanje skozi spodnjo mejo (celoštevilsko prelivanje, pri pretvorbi 4096 - 2 - 4095 v nepredznačeno int je rezultat 2147483648).

Ta napaka omogoča, da pri dostopu do posebej oblikovane slike datotečnega sistema povzroči prekoračitev medpomnilnika in prepiše podatke jedra, ki sledijo dodeljenemu pomnilniškemu območju. Če želite izkoristiti ranljivost, morate imeti pravice CAP_SYS_ADMIN, tj. skrbniška pooblastila. Težava je v tem, da lahko neprivilegirani uporabnik pridobi takšna dovoljenja v izoliranem vsebniku, če ima sistem omogočeno podporo za uporabniške imenske prostore. Uporabniški imenski prostori so na primer privzeto omogočeni v Ubuntuju in Fedori, niso pa omogočeni v Debianu in RHEL (razen če se uporabljajo platforme za izolacijo vsebnika).

Težava se pojavlja že od jedra Linuxa 5.1 in je bila odpravljena v včerajšnjih posodobitvah 5.16.2, 5.15.16, 5.10.93, 5.4.173. Posodobitve paketov, ki odpravljajo ranljivost, so bile že izdane za RHEL, Debian, Fedora in Ubuntu. Popravek še ni na voljo v Arch Linux, Gentoo, SUSE in openSUSE. Kot varnostno rešitev za sisteme, ki ne uporabljajo izolacije vsebnika, lahko nastavite vrednost sysctl "user.max_user_namespaces" na 0: echo "user.max_user_namespaces=0" > /etc/sysctl.d/userns.conf # sysctl -p /etc/ sysctl.d/userns.conf

Vir: opennet.ru

Dodaj komentar