Kerentanan dina kernel Linux anu tiasa ngarobih file ngan ukur dibaca

Kerentanan parantos diidentifikasi dina kernel Linux (CVE-2022-0847) anu ngamungkinkeun eusi cache halaman ditimpa pikeun file naon waé, kalebet dina modeu baca wungkul, dibuka nganggo bandéra O_RDONLY, atanapi ayana dina sistem file. dipasang dina mode baca wungkul. Dina istilah praktis, kerentanan bisa dipaké pikeun nyuntik kode kana prosés sawenang-wenang atawa ngaruksak data dina file dibuka. Salaku conto, anjeun tiasa ngarobih eusi file authorized_keys pikeun prosés sshd. Prototipe eksploitasi sayogi pikeun diuji.

Masalahna parantos namina Dirty Pipe, sami sareng kerentanan kritis Dirty COW anu diidentifikasi dina 2016. Perhatikeun yén tina segi tingkat bahaya, Dirty Pipe aya dina tingkat anu sami sareng Dirty COW, tapi langkung gampang dioperasikeun. Kerentanan diidentifikasi nalika analisa keluhan ngeunaan korupsi périodik file anu diunduh dina jaringan dina sistem anu ngaunduh arsip anu dikomprés tina server log (37 korupsi dina 3 bulan dina sistem anu dimuat), persiapan anu dianggo splice () operasi. jeung pipa unnamed.

Kerentanan muncul dimimitian ku kernel Linux 5.8, dirilis dina Agustus 2020, nyaéta. hadir dina Debian 11, tapi henteu mangaruhan kernel dasar dina Ubuntu 20.04 LTS. Kernel RHEL 8.x sareng openSUSE / SUSE 15 mimitina dumasar kana cabang-cabang anu lami, tapi kamungkinan parobihan anu nyababkeun masalahna di-backport kana aranjeunna (teu aya data pasti). Anjeun tiasa ngalacak publikasi apdet pakét dina distribusi dina kaca ieu: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux. A fix pikeun kerentanan ieu diajukeun dina release 5.16.11, 5.15.25 jeung 5.10.102. Perbaikan ogé kalebet dina kernel anu dianggo dina platform Android.

Kerentanan disababkeun ku kurangna initialization tina nilai "buf-> flags" dina kode fungsi copy_page_to_iter_pipe () sarta push_pipe (), sanajan kanyataan yén mémori teu diberesihan nalika allocating struktur jeung salila manipulasi tangtu kalawan. pipa unnamed, nilai tina operasi sejen. Ngagunakeun fitur ieu, pamaké lokal unprivileged bisa ngahontal penampilan nilai PIPE_BUF_FLAG_CAN_MERGE dina bandéra, nu ngidinan Anjeun pikeun ngatur overwriting data dina cache kaca ku saukur nulis data anyar dina pipe unnamed husus disiapkeun.

Pikeun serangan, file target kedah tiasa dibaca, sareng kumargi hak aksés henteu dipariksa nalika nyerat kana pipa, ngagantian dina cache halaman ogé tiasa dilakukeun pikeun file anu aya dina partisi anu dipasang ngan ukur dibaca (contona, pikeun file c CD- ROM). Saatos ngagentos inpormasi dina cache halaman, nalika maca data tina file, prosésna moal nampi data anu saleresna, tapi data anu diganti.

Operasi asalna handap pikeun nyieun hiji channel unnamed sarta ngeusian eta kalawan data sawenang guna mastikeun yén PIPE_BUF_FLAG_CAN_MERGE bandéra diatur dina sakabéh struktur ring pakait sareng eta. Salajengna, data dibaca tina saluran, tapi bandéra tetep disetél dina sagala instansi struktur pipe_buffer dina struktur ring pipe_inode_info. A panggero splice () lajeng dilakukeun pikeun maca data tina file target kana pipe unnamed, dimimitian dina offset dipikahoyong. Nalika nyerat data kana pipa anu henteu namina ieu, kusabab bendera PIPE_BUF_FLAG_CAN_MERGE disetél, data dina cache halaman bakal ditimpa tibatan nyiptakeun conto anyar tina struktur pipe_buffer.

sumber: opennet.ru

Tambahkeun komentar