Ao amin'ny fotony Linux Hita fa misy fahalemena (CVE-2022-0847) izay ahafahana manoratra indray ny votoatin'ny cache pejy ho an'ny rakitra rehetra, anisan'izany ireo amin'ny fomba famakiana-ihany, nosokafana tamin'ny marika O_RDONLY, na hita ao amin'ny rafitra rakitra napetraka amin'ny fomba famakiana-ihany. Raha lazaina amin'ny teny azo ampiharina, ity fahalemena ity dia azo ampiasaina hampidirana kaody amin'ny dingana tsy ara-dalàna na hanimba ny angona ao amin'ny rakitra nosokafana. Ohatra, azo ovaina ny votoatin'ny rakitra authorized_keys ho an'ny dingana sshd. Misy exploit prototype azo andramana.
Ny olana dia nomena anarana hoe Dirty Pipe, mitovy amin'ny vulnerability Dirty COW fantatra tamin'ny taona 2016. Marihina fa amin’ny lafiny loza dia mitovy lenta amin’ny Dirty COW ny Dirty Pipe, saingy mora kokoa ny miasa. Ny vulnerability dia fantatra nandritra ny famakafakana ny fitarainana momba ny kolikoly tsindraindray amin'ny rakitra alaina amin'ny tambajotra amin'ny rafitra iray misintona arisiva voatsindry avy amin'ny server log (kolikoly 37 ao anatin'ny 3 volana amin'ny rafitra feno entana), ny fanomanana azy dia nampiasa ny splice() asa. ary fantsona tsy fantatra anarana.
Ny fahalemena dia miseho manomboka amin'ny kernel Linux 5.8, navoaka tamin'ny Aogositra 2020, izany hoe misy ao amin'ny Debian 11, saingy tsy misy fiantraikany amin'ny fotony fototra ao amin'ny Ubuntu 20.04 LTS. Ny kernel RHEL 8.x sy openSUSE/SUSE 15 dia miorina amin'ny sampana tranainy kokoa tamin'ny voalohany, saingy mety ho naverina nalefa tany amin'ny solosaina ilay olana (mbola tsy misy antsipiriany marina). Azonao arahina ny famoahana ireo fanavaozana fonosana amin'ireo fizarana ireo amin'ireto pejy ireto: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch LinuxMisy fanamboarana ny fahalemena atolotra ao amin'ny famoahana 5.16.11, 5.15.25, ary 5.10.102. Tafiditra ao amin'ny kernel ampiasaina ao amin'ny sehatra ihany koa ny fanamboarana. Android.
Ny vulnerability dia vokatry ny tsy fisian'ny fanombohana ny sandan'ny "buf-> flags" ao amin'ny code of functions copy_page_to_iter_pipe() sy push_pipe(), na dia eo aza ny hoe tsy voavaha ny fahatsiarovana rehefa mizara rafitra ary mandritra ny fanodinkodinana sasany fantsona tsy fantatra anarana, sanda avy amin'ny asa hafa. Amin'ny fampiasana an'io endri-javatra io, ny mpampiasa eo an-toerana tsy manana tombontsoa dia afaka mahazo ny endriky ny sanda PIPE_BUF_FLAG_CAN_MERGE ao amin'ny saina, izay ahafahanao mandamina ny fanonerana ny angona ao amin'ny cache pejy amin'ny fanoratana angon-drakitra vaovao amin'ny fantsona tsy voaomana manokana.
Ho an'ny fanafihana, ny rakitra kendrena dia tsy maintsy azo vakiana, ary satria tsy voamarina ny zon'ny fidirana rehefa manoratra amin'ny fantsona, dia azo atao ihany koa ny fanoloana ny cache pejy ho an'ny rakitra hita ao amin'ny fizarazarana mipetaka mamaky fotsiny (ohatra, ho an'ny rakitra c CD- ROM). Aorian'ny fanoloana ny fampahalalana ao amin'ny cache pejy, rehefa mamaky angon-drakitra avy amin'ny rakitra iray, ny dingana dia tsy handray ny angon-drakitra marina, fa ny angon-drakitra nosoloina.
Ny fandidiana dia tonga amin'ny famoronana fantsona tsy fantatra anarana ary mameno izany amin'ny angon-drakitra tsy misy dikany mba hahazoana antoka fa ny saina PIPE_BUF_FLAG_CAN_MERGE dia napetraka amin'ny rafitra peratra rehetra mifandraika amin'izany. Avy eo, ny angona dia vakiana avy amin'ny fantsona, fa ny saina dia mijanona amin'ny toe-javatra rehetra amin'ny rafitra pipe_buffer ao amin'ny rafitra peratra pipe_inode_info. Ny antso ho amin'ny splice() dia atao mba hamakiana ny angona avy amin'ny rakitra kendrena ho fantsona tsy fantatra anarana, manomboka amin'ny offset tiana. Rehefa manoratra angona amin'ity fantsona tsy fantatra anarana ity, noho ny fametrahana ny saina PIPE_BUF_FLAG_CAN_MERGE, ny angona ao amin'ny cache pejy dia hosoloina fa tsy hamorona ohatra vaovao momba ny rafitra pipe_buffer.
Source: opennet.ru
