Linuxi tuuma kaudu pakutud API Filesystem Contextis on avastatud kahjustus (CVE-2022-0185), mis vĂ”imaldab kohalikel kasutajatel saada root-Ă”igusi sĂŒsteemis. Probleemi avastanud teadlane on avaldanud tĂ”endi, mis demonstreerib exploiti, mille abil on vĂ”imalik tĂ€ita koodi root-Ă”igustes Ubuntu 20.04 vaikeseades. Exploiti plaanitakse paigutada GitHubi nĂ€dal jooksul pĂ€rast seda, kui distributsioonid vabastavad vĂ€rskenduse turvaaugu kohandamiseks.
Kahjustus on olemas funktsioonis legacy_parse_param() VFS-is ja see on pĂ”hjustatud nĂ”rkade kontrollide puudumisest failisĂŒsteemide poolt esitatud parameetrite maksimaalse suuruse kohta, mis ei toeta API Filesystem Contexti. Liialt suure parameetri edastamisel on vĂ”imalik pĂ”hjustada tĂ€isarvu muutujate ĂŒlevoolu, mis on kasutatud kirjutatavate andmete suuruse arvutamiseks â koodis on olemas piirangu kontroll âif (len > PAGE_SIZE â 2 â size)â, mis ei toimi, kui size vÀÀrtus ĂŒletab 4094, tulenevalt tĂ€isarvu ĂŒlevoolust (kui 4096 â 2 â 4095 konverteerida unsigned intâiks, on tulemuseks 2147483648).
Antud viga vĂ”imaldab juurdepÀÀsul spetsiaalselt vormindatud failisĂŒsteemile pĂ”hjustada pufferi ĂŒlevoolu ja kirjutada ĂŒle tuuma andmed, mis jĂ€rgivad eraldatud mĂ€lu piirkonda. Kahjustuse Ă€rakasutamiseks on vajalik CAP_SYS_ADMIN Ă”iguste olemasolu, s.t. administraatori volitused. Probleem on, et sarnaseid volitusi vĂ”ib mitteprivilegeeritud kasutaja saada isoleeritud konteineris, kui sĂŒsteemis on aktiivne kasutaja nime ruumide (user namespaces) toetus. NĂ€iteks on user namespaces vaikimisi aktiveeritud Ubuntus ja Fedoras, kuid ei ole lubatud Debiani ja RHEL-i puhul (kui ei kasutata konteinerite isoleerimise platvorme).
Probleem ilmneb alates Linuxi tuumast 5.1 ja on lahendatud eilsete vĂ€rskendustega 5.16.2, 5.15.16, 5.10.93, 5.4.173. Pakettide vĂ€rskendused, mis kĂ”rvaldavad kahjustuse, on juba vĂ€lja antud RHEL-i, Debiani, Fedora ja Ubuntu jaoks. Parandus ei ole veel saadaval Arch Linuxis, Gentoo-s, SUSE-s ja openSUSE-s. Kaitsestrateegiana sĂŒsteemide jaoks, mis ei kasuta konteinerite isoleerimist, saab seada sysctl âuser.max_user_namespacesâ vÀÀrtuseks 0: echo âuser.max_user_namespaces=0â > /etc/sysctl.d/userns.conf # sysctl -p /etc/sysctl.d/userns.conf
Allikas: opennet.ru
