Ny vulnerability ao amin'ny kernel Linux izay mamela ny kolikoly amin'ny rakitra vakiana fotsiny

Misy vulnerable hita ao amin'ny kernel Linux (CVE-2022-0847) izay mamela ny votoatin'ny cache pejy hosoloina ho an'ny rakitra rehetra, anisan'izany ireo amin'ny fomba vakiana fotsiny, nosokafana tamin'ny saina O_RDONLY, na hita ao amin'ny rafitra rakitra. napetraka amin'ny fomba vakiana fotsiny. Amin'ny teny azo ampiharina, ny vulnerability dia azo ampiasaina hanindrona kaody amin'ny dingana tsy manara-penitra na angon-drakitra manimba amin'ny rakitra misokatra. Ohatra, azonao atao ny manova ny votoatin'ny rakitra authorized_keys ho an'ny fizotry ny sshd. Misy prototype amin'ny fitrandrahana azo atao fitiliana.

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 vulnerability dia miseho manomboka amin'ny Linux kernel 5.8, navoaka tamin'ny Aogositra 2020, i.e. misy ao amin'ny Debian 11, fa tsy misy fiantraikany amin'ny kernel fototra ao amin'ny Ubuntu 20.04 LTS. Ny kernel RHEL 8.x sy openSUSE/SUSE 15 dia mifototra amin'ny sampana taloha, saingy azo inoana fa ny fanovana nahatonga ny olana dia naverina tao anatiny (mbola tsy misy angon-drakitra marina). Azonao atao ny manara-maso ny famoahana ny fanavaozana fonosana amin'ny fizarana amin'ireto pejy ireto: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux. Ny fanamboarana ny vulnerability dia natolotra tamin'ny famoahana 5.16.11, 5.15.25 ary 5.10.102. Ny fanamboarana dia tafiditra ao amin'ny kernel ampiasaina amin'ny sehatra 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

Add a comment