Një cenueshmëri në VFS të kernelit Linux që ju lejon të përshkallëzoni privilegjet tuaja

Një dobësi (CVE-2022-0185) është identifikuar në API-në e kontekstit të skedarëve të ofruar nga kerneli Linux, i cili lejon një përdorues lokal të fitojë privilegje rrënjësore në sistem. Studiuesi që identifikoi problemin publikoi një demonstrim të një shfrytëzimi që ju lejon të ekzekutoni kodin si rrënjë në Ubuntu 20.04 në konfigurimin e paracaktuar. Kodi i shfrytëzimit është planifikuar të postohet në GitHub brenda një jave pasi shpërndarjet lëshojnë një përditësim që rregullon cenueshmërinë.

Dobësia ekziston në funksionin legacy_parse_param() në VFS dhe shkaktohet nga dështimi për të kontrolluar siç duhet madhësinë maksimale të parametrave të ofruar në sistemet e skedarëve që nuk mbështesin API-në e kontekstit të skedarëve. Kalimi i një parametri që është shumë i madh mund të shkaktojë një tejmbushje të ndryshores së numrit të plotë që përdoret për llogaritjen e madhësisë së të dhënave që do të shkruhet - kodi ka një kontroll mbi tejkalimin e buferit "if (len > PAGE_SIZE - 2 - madhësia)", e cila nuk ka punoni nëse vlera e madhësisë është më e madhe se 4094. për tejkalimin e numrit të plotë përmes kufirit të poshtëm (nënrrymë të plotë, kur hedhni 4096 - 2 - 4095 në int të panënshkruar, rezultati është 2147483648).

Ky gabim lejon, kur qaseni në një imazh të sistemit të skedarëve të krijuar posaçërisht, të shkaktojë një tejmbushje të buferit dhe të mbishkruajë të dhënat e kernelit pas zonës së caktuar të memories. Për të shfrytëzuar cenueshmërinë, duhet të keni të drejta CAP_SYS_ADMIN, d.m.th. kompetencat e administratorit. Problemi është se një përdorues i paprivilegjuar mund të marrë leje të tilla në një kontejner të izoluar nëse sistemi ka të aktivizuar mbështetjen për hapësirat e emrave të përdoruesve. Për shembull, hapësirat e emrave të përdoruesve aktivizohen si parazgjedhje në Ubuntu dhe Fedora, por nuk aktivizohen në Debian dhe RHEL (përveç nëse përdoren platformat e izolimit të kontejnerëve).

Problemi është shfaqur që nga kernel Linux 5.1 dhe është rregulluar në përditësimet e djeshme 5.16.2, 5.15.16, 5.10.93, 5.4.173. Përditësimet e paketës që rregullojnë cenueshmërinë tashmë janë lëshuar për RHEL, Debian, Fedora dhe Ubuntu. Rregullimi nuk është ende i disponueshëm në Arch Linux, Gentoo, SUSE dhe openSUSE. Si një zgjidhje sigurie për sistemet që nuk përdorin izolimin e kontejnerëve, mund të vendosni vlerën e sysctl "user.max_user_namespaces" në 0: echo "user.max_user_namespaces=0" > /etc/sysctl.d/userns.conf # sysctl -p /etc/ sysctl.d/userns.conf

Burimi: opennet.ru

Shto një koment