Vulnerabbiltà fil-kernel tal-Linux li tippermetti li fajls li jinqraw biss jiġu korrotta

Ġiet identifikata vulnerabbiltà fil-kernel tal-Linux (CVE-2022-0847) li tippermetti li l-kontenut tal-cache tal-paġna jinkiteb fuq kwalunkwe fajl, inklużi dawk fil-modalità ta’ qari biss, miftuħa bil-bandiera O_RDONLY, jew li jinsabu fuq sistemi ta’ fajls immuntat fil-modalità ta' qari biss. F'termini prattiċi, il-vulnerabbiltà tista' tintuża biex tinjetta kodiċi fi proċessi arbitrarji jew dejta korrotta f'fajls miftuħa. Pereżempju, tista' tbiddel il-kontenut tal-fajl authorized_keys għall-proċess sshd. Prototip tal-isfruttament huwa disponibbli għall-ittestjar.

Il-problema ngħatat l-isem ta' kodiċi Dirty Pipe, simili għall-vulnerabbiltà kritika Dirty COW identifikata fl-2016. Huwa nnutat li f'termini ta 'livell ta' periklu, Dirty Pipe huwa fuq l-istess livell bħal Dirty COW, iżda huwa ħafna aktar faċli biex topera. Il-vulnerabbiltà ġiet identifikata waqt l-analiżi tal-ilmenti dwar il-korruzzjoni perjodika ta’ fajls imniżżla fuq in-netwerk f’sistema li tniżżel arkivji kkompressati minn log server (37 korruzzjoni f’3 xhur fuq sistema mgħobbija), li l-preparazzjoni tagħhom użat l-operazzjoni splice() u pajpijiet bla isem.

Il-vulnerabbiltà tidher li tibda bil-kernel Linux 5.8, rilaxxat f'Awwissu 2020, i.e. preżenti f'Debian 11, iżda ma jaffettwax il-qalba bażi f'Ubuntu 20.04 LTS. Il-kernels RHEL 8.x u openSUSE/SUSE 15 huma inizjalment ibbażati fuq fergħat qodma, iżda huwa possibbli li l-bidla li tikkawża l-problema ġiet backported fihom (għad m'hemm l-ebda data eżatta). Tista 'ssegwi l-pubblikazzjoni ta' aġġornamenti tal-pakketti fid-distribuzzjonijiet f'dawn il-paġni: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux. Soluzzjoni għall-vulnerabbiltà ġiet proposta fir-rilaxxi 5.16.11, 5.15.25 u 5.10.102. It-tiswija hija inkluża wkoll fil-qalba użata fil-pjattaforma Android.

Il-vulnerabbiltà hija kkawżata min-nuqqas ta 'inizjalizzazzjoni tal-valur "buf->flags" fil-kodiċi tal-funzjonijiet copy_page_to_iter_pipe() u push_pipe(), minkejja l-fatt li l-memorja ma titnaddafx meta tiġi allokata struttura u waqt ċerti manipulazzjonijiet b' pajpijiet bla isem, valur minn operazzjoni oħra. Bl-użu ta 'din il-karatteristika, utent lokali mhux privileġġjat jista' jikseb id-dehra tal-valur PIPE_BUF_FLAG_CAN_MERGE fil-bandiera, li jippermettilek li torganizza l-kitba fuq id-dejta fil-cache tal-paġna billi sempliċement tikteb dejta ġdida f'pajp bla isem ippreparat apposta.

Għal attakk, il-fajl fil-mira għandu jkun jista’ jinqara, u peress li d-drittijiet ta’ aċċess ma jiġux iċċekkjati meta tikteb fuq il-pipe, is-sostituzzjoni fil-cache tal-paġna tista’ ssir ukoll għal fajls li jinsabu f’diviżorji immuntati b’qari biss (pereżempju, għal fajls c CD- ROM). Wara li tissostitwixxi l-informazzjoni fil-cache tal-paġna, meta taqra dejta minn fajl, il-proċess mhux se jirċievi d-dejta attwali, iżda d-dejta sostitwita.

It-tħaddim jasal għall-ħolqien ta 'kanal bla isem u l-mili tiegħu b'dejta arbitrarja sabiex jiġi żgurat li l-bandiera PIPE_BUF_FLAG_CAN_MERGE tkun issettjata fl-istrutturi taċ-ċirku kollha assoċjati magħha. Sussegwentement, id-dejta tinqara mill-pajp, iżda l-bandiera tibqa 'settjata fil-każijiet kollha tal-istruttura pipe_buffer fl-istrutturi taċ-ċirku pipe_inode_info. Imbagħad issir sejħa għal splice() biex taqra d-dejta mill-fajl fil-mira f'pajp bla isem, li jibda mill-offset mixtieq. Meta tikteb dejta f'dan il-pajp bla isem, minħabba li l-bandiera PIPE_BUF_FLAG_CAN_MERGE tkun qed tiġi ssettjata, id-dejta fil-cache tal-paġna tinkiteb fuqu minflok ma tinħoloq każ ġdid tal-istruttura pipe_buffer.

Sors: opennet.ru

Żid kumment