Nuglaanta ku jirta kernel Linux kaas oo faragalin kara faylalka akhrinta kaliya

Nuglaanta ayaa lagu aqoonsaday kernel-ka Linux (CVE-2022-0847) taas oo u oggolaanaysa in lagu beddelo waxa ku jira khasnadda bogga faylal kasta, oo ay ku jiraan kuwa ku jira qaabka akhrinta-keliya, oo lagu furay calanka O_RDONLY, ama ku yaal nidaamyada faylalka ku dhejisan qaabka akhris-kaliya. Dhanka wax ku oolka ah, nuglaanshaha waxaa loo isticmaali karaa in lagu duro koodka habraacyada aan sharciga ahayn ama xogta musuqmaasuqa ee faylasha furan. Tusaale ahaan, waxaad bedeli kartaa waxa ku jira faylka idman_keys ee habka sshd. Ka faa'iidaysiga tusaalaha ayaa diyaar u ah baaritaanka.

Dhibaatada waxaa la siiyay magaca koodka Dirty Pipe, iyadoo la barbardhigayo U nugulnaanta halista ah ee COW ee lagu aqoonsaday 2016. Waxaa la xusay in Dirty Pipe ay la mid tahay heerka wasakhda lo'da ee khatarta ah, laakiin ay aad u fududahay in la shaqeeyo. Nuglaanta ayaa la aqoonsaday inta lagu guda jiro falanqaynta cabashooyinka ku saabsan waxyeelada xilliyeed ee faylalka lagu soo dejiyo shabakada iyadoo la raacayo nidaamka ka soo dejinaya kaydadka ciriiriga ah ee server-ka log (37 khasaare ah 3 bilood gudahood nidaamka raran), kaas oo la diyaariyey iyadoo la adeegsanayo hawlgalka () iyo tuubooyinka aan la magacaabin.

Nuglaanta ayaa soo ifbaxday tan iyo Linux 5.8 kernel, oo la sii daayay Agoosto 2020, i.e. wuxuu joogaa Debian 11 laakiin ma saameeyo kernel-ka aasaasiga ah ee Ubuntu 20.04 LTS. RHEL 8.x iyo openSUSE/SUSE 15 kernels waxay asal ahaan ku salaysan yihiin laamo hore, laakiin waxaa suurtogal ah in isbeddelka dhibaatada keenay dib loogu celiyo iyaga (wali xog sax ah lama hayo). Waxaad raaci kartaa daabacaadda cusboonaysiinta xirmada ee qaybinta boggagan: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux. Hagaajinta nuglaanta ayaa lagu soo jeediyay siidaynta 5.16.11, 5.15.25, iyo 5.10.102. Hagaajinta sidoo kale waxaa lagu daray kernel-ka loo isticmaalo aaladda Android.

Nuglaanta waxaa sababa la'aanta bilowga ah ee "buf-> calanka" qiimaha code ee copy_page_to_iter_pipe () iyo push_pipe () hawlaha, inkastoo xaqiiqda ah in xusuusta aan la nadiifin marka qaab-dhismeedka la qoondeeyey, iyo qaar ka mid ah wax-ka-beddelka tuubooyinka aan la magacaabin, "buf->calanka" waxaa laga yaabaa inay ku jiraan qiimaha hawlgal kale. Isticmaalka sifadan, isticmaale maxalli ah oo aan mudnayn waxa uu gaadhi karaa muuqaalka PIPE_BUF_FLAG_CAN_MERGE ee qiimaha calanka, kaas oo kuu ogolaanaya inaad ku dul qorto xogta khasnadda bogga adigoo si fudud ugu qoraya xog cusub tuubo si gaar ah loo diyaariyey (tuubo).

Weerarka, faylka bartilmaameedku waa inuu noqdaa mid la akhriyi karo, iyo maadaama aan xuquuqaha gelitaanka aan la hubin marka wax lagu qorayo tuubada, beddelka khasnadda bogga waa la samayn karaa, oo ay ku jiraan faylalka ku yaal qaybo ku rakiban akhri-kaliya (tusaale, faylasha c CD-ROM). Ka dib marka la beddelo macluumaadka ku jira khasnadda bogga, habka, marka la akhriyo xogta faylka, ma heli doono xaqiiqda dhabta ah, laakiin xogta la beddelay.

Hawlgalku wuxuu hoos ugu soo dhacayaa abuurista tuubo aan la magacaabin oo lagu buuxiyo xog aan sabab lahayn si loo gaaro dejinta calanka PIPE_BUF_FLAG_CAN_MERGE ee dhammaan qaab dhismeedka giraanta ee la xidhiidha. Marka xigta, xogta waxaa laga akhriyaa tuubada, laakiin calanku wuxuu ahaanayaa mid la dejiyay dhammaan xaaladaha qaab dhismeedka pipe_buffer ee dhismayaasha giraanta pipe_inode_info. Dabadeed wicitaan () qayb ayaa la sameeyaa si loo akhriyo xogta faylka la beegsaday oo la geliyay tuubo aan la magacaabin, laga bilaabo kabitaanka loo baahan yahay. Marka xogta loo qoro dhuuntan aan la magacaabin, PIPE_BUF_FLAG_CAN_MERGE calanka ayaa ku qori doona xogta ku jirta khasnadda bogga halkii laga abuuri lahaa tusaale cusub oo ah qaab dhismeedka pipe_buffer.

Source: opennet.ru

Add a comment