Nuglaanta xididka kernel-ka Linux iyo diidmada adeegga systemd

Baarayaasha amniga ee Qualys ayaa daaha ka qaaday faahfaahinta laba dayacan oo saameeya kernel Linux iyo maamulaha nidaamka habaysan. Nuglaanta ku jirta kernel-ka (CVE-2021-33909) waxay u ogolaataa isticmaale maxalli ah inuu gaaro fulinta koodka ee xuquuqda xididka iyada oo la adeegsanayo hagayaal aadka u buul-kacsan.

Khatarta nuglaanta waxaa sii xumeynaya xaqiiqda ah in cilmi-baarayaashu ay awoodeen inay diyaariyaan faa'iidooyin shaqo oo ka shaqeeya Ubuntu 20.04/20.10/21.04, Debian 11 iyo Fedora 34 ee qaabka caadiga ah. Waxaa la xusay in qaybinta kale aan la tijaabin, laakiin aragti ahaan ay sidoo kale u nugul yihiin dhibaatada oo la weeraro. Koodhka buuxa ee ka faa'iidaysiga ayaa loo ballan qaaday in la daabici doono ka dib marka dhibaatada laga saaro meel kasta, laakiin hadda kaliya nooc ka mid ah shaqeynta xaddidan ayaa la heli karaa, taasoo keenaysa in nidaamka burburo. Dhibaatadu waxay jirtay ilaa Juulaay 2014 waxayna saamaysaa sii daynta kernel-ka laga bilaabo 3.16. Hagaajinta nuglaanta waxaa la isku duba ridey bulshada waxaana la aqbaley kernel-ka Luulyo 19-keedii. Qaybinta ugu muhiimsan waxay horey u soo saartay cusbooneysiin ku saabsan xirmooyinkooda kernel (Debian, Ubuntu, Fedora, RHEL, SUSE, Arch).

Nuglaanta waxaa sababa guuldarada si loo hubiyo natiijada cabbirka_t ee beddelka int ka hor inta aan la samayn hawlgallada koodka seq_file, kaas oo ka abuuraya faylal taxane ah. Ku guuldaraysiga in la hubiyo waxa laga yaabaa in ay keento qoraal ka baxsan xadka marka la abuurayo, la saarayo, oo la tirtirayo qaab dhismeedka hagaha oo aad u buul leh (xajmiga dariiqa ka weyn 1 GB). Natiijo ahaan, weeraryahanku wuxuu gaari karaa xarig 10-byte ah "// tirtiray" oo ku qoran meel ka baxsan "-2 GB - 10 bytes" isagoo tilmaamaya aagga isla markiiba ka horreeya kaydka loo qoondeeyay.

Ka faa'iidaysiga la diyaariyey wuxuu u baahan yahay 5 GB oo xusuusta ah iyo 1 milyan oo inodes bilaash ah si loo shaqeeyo. Ka faa'iidaysigu wuxuu u shaqeeyaa isagoo wacaya mkdir() si loo abuuro kala sareyn ah ilaa hal milyan oo buug-hoosaadyo ah si loo gaaro cabbirka dariiqa faylka oo ka badan 1 GB. Hagahan waxa lagu rakibay iyada oo loo marayo bind-mount meel magac adeegsi oo gaar ah, ka dib shaqada rmdir() ayaa la ordayaa si meesha looga saaro. Si barbar socda, dunta ayaa la sameeyay oo raraya barnaamij yar oo eBPF ah, kaas oo la xannibay marxaladda ka dib markii la hubiyo eBPF pseudocode, laakiin ka hor inta aan la ururin JIT.

Meesha magaca isticmaale ee aan mudnayn, faylka /proc/self/mountinfo waa la furay waxaana la akhriyay dariiqa dheer ee hagaha xidhxidhan, taas oo keentay in xadhigga "// la tirtiro" loo qoro aagga ka hor inta aan la bilaabin kaydinta. Booska qorista xariiqda ayaa la doortay si ay dib ugu qorto tilmaanta ku jirta barnaamijkii hore ee la tijaabiyay balse aan wali la soo diyaarin eBPF.

Marka xigta, heerka barnaamijka eBPF, qorista ka baxsan kaydka ee aan la koontaroolin ayaa loo beddelaa awoodda la kontoroolo ee wax lagu akhriyo laguna qoro dhismooyinka kale ee kernel iyada oo la adeegsanayo hab-dhismeedka btf iyo map_push_elem. Natiijo ahaan, ka faa'iidaysigu wuxuu go'aamiyaa meesha modprobe_path[] buffer ee xusuusta kernel wuxuuna ku beddelaa dariiqa "/ sbin / modprobe" ee ku dhex jira, kaas oo kuu oggolaanaya inaad bilowdo bilawga fayl kasta oo la fulin karo oo leh xuquuqaha xididka haddii ay dhacdo request_module() wac, kaas oo la fuliyo, tusaale ahaan, marka la abuurayo socket netlink.

Cilmi-baarayaashu waxay bixiyaan dhowr habab oo wax ku ool ah oo keliya ka faa'iidaysi gaar ah, laakiin ma baabi'iyaan dhibaatada lafteeda. Waxaa lagu talinayaa in la dejiyo "/proc/sys/kernel/unprivileged_userns_clone" ilaa 0 si loo joojiyo tusaha ku rakibidda meel gaar ah oo aqoonsi isticmaale ah, iyo "/proc/sys/kernel/unprivileged_bpf_disabled" ilaa 1 si loo joojiyo raritaanka barnaamijyada eBPF ee kernel-ka.

Waxaa xusid mudan in iyada oo la falanqeynayo weerar kale oo ku lug leh isticmaalka habka FUSE halkii ay ku xidhi lahaayeen si ay ugu dhejiyaan buug weyn, cilmi-baarayaashu waxay la kulmeen nuglaan kale (CVE-2021-33910) oo saameeya maamulaha nidaamka. Waxay soo baxday in marka la isku dayo in lagu dhejiyo tusaha leh cabbirka dariiqa ka badan 8 MB iyada oo loo marayo FUSE, habka kontoroolka bilawga ah (PID1) wuxuu ka baxayaa xusuusta kaydka iyo shilalka, taas oo nidaamka gelinaysa xaalad "argagax".

Dhibaatadu waxay tahay in nidaamka habaysan oo kala qaybiyo waxa ku jira /proc/self/mountinfo, oo socodsiiya dhibic kasta oo buur ah oo ku jirta unit_name_path_escape () function, kaas oo fuliya hawlgalka strdupa () kaas oo dhigaya xogta kaydka halkii ay ka ahaan lahayd xusuusta firfircoon ee loo qoondeeyey. . Maadaama cabbirka ugu badnaan uu ku xaddidan yahay RLIMIT_STACK, habaynta dariiqa aad u weyn ee loo maro barta buurtu waxay sababtaa in nidaamka PID1 uu shil galo oo uu joojiyo nidaamka. Weerarka, waxaad isticmaali kartaa moduleka FUSE-ga ugu fudud marka lagu daro isticmaalka hagaha aadka u buulsan sida barta buurta, cabbirka dariiqa kaas oo ka badan 8 MB.

Dhibaatadu waxay soo ifbaxday tan iyo nidaamka 220 (Abriil 2015), ayaa mar hore lagu hagaajiyay kaydka ugu weyn ee nidaamka oo lagu hagaajiyay qaybinta (Debian, Ubuntu, Fedora, RHEL, SUSE, Arch). Waxaa xusid mudan, siidaynta systemd 248 ka faa'iidaysigu ma shaqeeyo sababtoo ah cilad ku jirta koodka habaysan ee sababa habaynta/proc/self/mountinfo inay fashilanto. Waxa kale oo xiiso leh in 2018, xaalad la mid ah ay kacday oo markii la isku dayay in la qoro ka faa'iidaysiga u nuglaanta CVE-2018-14634 ee kernel Linux, cilmi-baarayaasha Qualys waxay la kulmeen saddex baylahda muhiimka ah ee nidaamka.

Source: opennet.ru

Add a comment