Kotsi ho Linux kernel e lumellang lifaele tse baloang feela hore li senyehe

Ho khethiloe ho ba kotsing ho Linux kernel (CVE-2022-0847) e lumellang likahare tsa cache ea leqephe hore li ngoloe bakeng sa lifaele life kapa life, ho kenyeletsoa le tse maemong a ho bala feela, tse butsoeng ka folakha ea O_RDONLY, kapa tse fumanehang lits'ebetsong tsa lifaele. e kentsweng ka mokgwa wa ho bala feela. Ka mantsoe a sebetsang, ho ba kotsing ho ka sebelisoa ho kenya khoutu lits'ebetsong tse sa reroang kapa ho senya data lifaeleng tse butsoeng. Mohlala, o ka fetola litaba tsa faele ea authorized_keys bakeng sa ts'ebetso ea sshd. Mohlala oa ts'ebetso o teng bakeng sa tlhahlobo.

Bothata bo 'nile ba bitsoa Dirty Pipe, e ts'oanang le ts'oaetso e kholo ea Dirty COW e khethiloeng ka 2016. Hoa hlokomeloa hore ho latela boemo ba kotsi, Pipe e Dirty e boemong bo lekanang le ba Dirty COW, empa ho bonolo haholo ho e sebetsa. Kotsi e ile ea bonoa nakong ea tlhahlobo ea litletlebo mabapi le bobolu ba nako le nako ba lifaele tse jarollotsoeng marang-rang ka har'a sistimi e jarollang li-archives tse hatelletsoeng ho tsoa ho seva sa log (bobolu ba 37 ka likhoeli tse 3 ho sistimi e laetsoeng), tokisetso ea eona e sebelisitseng ts'ebetso ea splice() le liphaephe tse sa boleloang ka mabitso.

Ho ba kotsing ho bonahala ho qala ka Linux kernel 5.8, e lokollotsoeng ka Phato 2020, ke hore e teng ho Debian 11, empa ha e ame kernel ea motheo ho Ubuntu 20.04 LTS. Lithollo tsa RHEL 8.x le openSUSE/SUSE 15 qalong li thehiloe makaleng a khale, empa ho ka etsahala hore phetoho e bakileng bothata e khutlisetsoe ho tsona (ha ho na data e nepahetseng hajoale). U ka latela phatlalatso ea lintlafatso tsa liphutheloana kabong maqepheng ana: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux. Tokiso bakeng sa ho ba kotsing e hlahisitsoe ho litokollo tsa 5.16.11, 5.15.25 le 5.10.102. Tokiso e boetse e kenyelelitsoe ho kernel e sebelisoang sethaleng sa Android.

Kotsi e bakoa ke khaello ea ho qala ha boleng ba "buf-> lifolakha" ho khoutu ea mesebetsi copy_page_to_iter_pipe() le push_pipe(), ho sa tsotellehe taba ea hore memori ha e hlakoloe ha ho ajoa sebopeho le nakong ea manipulations tse itseng. liphaephe tse sa boleloang ka mabitso, boleng bo tsoang ts'ebetsong e 'ngoe. U sebelisa tšobotsi ena, mosebelisi ea se nang tokelo ea lehae a ka fihlela ponahalo ea boleng ba PIPE_BUF_FLAG_CAN_MERGE folakhang, e u lumellang ho hlophisa ho ngolisoa ha data ka har'a cache ea leqephe ka ho ngola lintlha tse ncha ho phaephe e lokiselitsoeng ka ho khetheha e sa boleloang ka lebitso.

Bakeng sa tlhaselo, faele e shebiloeng e tlameha ho baloa, 'me kaha litokelo tsa phihlello ha li hlahlojoe ha u ngolla pipe, phetisetso e ka har'a cache ea leqephe le eona e ka etsoa bakeng sa lifaele tse fumanehang likarolong tse baloang feela (mohlala, bakeng sa lifaele c CD- ROM). Kamora ho khutlisa tlhahisoleseling ho cache ea leqephe, ha u bala data ho tsoa faeleng, ts'ebetso e ke ke ea amohela data ea nnete, empa data e nkeloang sebaka.

Ts'ebetso e tla ho theha mocha o sa boleloang ka mabitso le ho o tlatsa ka data e sa reroang ho netefatsa hore folakha ea PIPE_BUF_FLAG_CAN_MERGE e behiloe mecheng eohle ea mehele e amanang le eona. Ka mor'a moo, lintlha li baloa ho tloha mocha, empa folakha e sala e behiloe maemong ohle a pipe_buffer sebopeho sa pipe_inode_info ring rings. Pitso ho splice() e ntan'o etsoa ho bala data ho tsoa faeleng e lebisitsoeng ho phala e sa boleloang ka lebitso, ho qala ka tsela eo u e batlang. Ha u ngola lintlha ho phaephe ena e sa boleloang ka lebitso, ka lebaka la folakha ea PIPE_BUF_FLAG_CAN_MERGE e setiloe, lintlha tse leng ho cache ea leqephe li tla hlakoloa ho fapana le ho theha mohlala o mocha oa sebopeho sa pipe_buffer.

Source: opennet.ru

Eketsa ka tlhaloso