Linuxi südamiku VFS haavatavus, mis võimaldab privileegide tõstmist

Linuxi tuumiku juures, mis pakub Filesystem Context API-d, on tuvastatud haavatavus (CVE-2022-0185), mis võimaldab kohalikul kasutajal saavutada root-õigusi süsteemis. Probleemi avastanud teadlane avaldas demonstrooimise, kuidas käivitada kood root-õigustes Ubuntu 20.04 vaikeseades. Kood, mis näitab, kuidas haavatavust ära kasutada, plaanitakse nädal jooksul avaldada GitHubis, pärast seda, kui distributsioonid väljastavad värskenduse haavatavuse parandamiseks.

Haavatavus esineb funktsioonis legacy_parse_param() VFS-is ning on põhjustatud piisava kontrolli puudumisest parameetrite maksimaalse suuruse üle, mida esitavad failisüsteemid, mis ei toeta Filesystem Context API-d. Liialt suure parameetri edastamine võib põhjustada täisarvu muutujate ülevoolu, mida kasutatakse kirjutatavate andmete suuruse arvutamiseks — koodis on olemas piirang Bufferi ületamise kontrollimiseks "if (len > PAGE_SIZE - 2 - size)", kuid see ei toimi, kui size väärtus ületab 4094, kuna toimub täisarvu ülevool madalamast piiri (integer underflow), mille tulemusena 4096 - 2 - 4095 konverteerimisel unsigned int-iks saame 2147483648).

Tuvastatud viga lubab spetsiaalselt vormindatud failisüsteemi pildi päringute korral põhjustada puhverülevoolu ja kirjutada üle tuuma andmed, mis järgivad reserveeritud mälu piirkonda. Haavatavuse ärakasutamiseks on vajalik CAP_SYS_ADMIN õiguste olemasolu ehk administraatori õigused. Probleem on selles, et selliseid õigusi saab mitterikastatud kasutaja saada isoleeritud konteineris, kui süsteemis on aktiveeritud kasutaja identifikaatorite ruumide (user namespaces) tugi. Näiteks on user namespaces vaikimisi aktiveeritud Ubuntu ja Fedora puhul, kuid mitte Debianis ja RHEL-is (kui konteinerite isoleerimise platvorme ei kasutata).

Probleem ilmneb alates Linuxi tuumast 5.1 ning on parandatud eilsete uuendustega 5.16.2, 5.15.16, 5.10.93, 5.4.173. Uuendused haavatavuse parandamiseks on juba välja antud RHEL, Debian, Fedora, Ubuntu jaoks. Parandus ei ole veel saadaval Arch Linuxis, Gentoo's, SUSE's ja openSUSE's. Kaitse kõrvalmeetmena süsteemidele, mis ei kasuta konteinerite isoleerimist, saab sysctl seadistada väärtusele 0: echo "user.max_user_namespaces=0" > /etc/sysctl.d/userns.conf # sysctl -p /etc/sysctl.d/userns.conf

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster