Цөмийн эмзэг байдал Linux, энэ нь зөвхөн унших боломжтой файлуудыг эвдэх боломжийг танд олгоно

Гол цөмд Linux Зөвхөн унших горимд байгаа, O_RDONLY тугаар нээгдсэн эсвэл зөвхөн унших горимд холбогдсон файлын системүүд дээр байрласан файлуудыг оруулаад аливаа файлын хувьд хуудасны кэшийн агуулгыг дарж бичих боломжийг олгодог эмзэг байдал (CVE-2022-0847) илэрсэн. Практикт энэ эмзэг байдлыг дурын процесст код оруулах эсвэл нээгдсэн файлууд дахь эвдэрсэн өгөгдөлд ашиглахад ашиглаж болно. Жишээлбэл, sshd процессын authorized_keys файлын агуулгыг өөрчилж болно. Туршилтын туршилтын эксплойт боломжтой.

Энэ асуудлыг Dirty Pipe гэж кодчилсон бөгөөд энэ нь 2016 онд илрүүлсэн Dirty COW-ийн чухал эмзэг байдлыг харуулж байна. Dirty Pipe нь Dirty COW-той адил ноцтой боловч ашиглахад хамаагүй хялбар гэж тэмдэглэгдсэн. Энэхүү эмзэг байдлыг splice() үйлдэл болон нэргүй хоолой ашиглан бэлтгэсэн лог серверээс шахсан архивыг татаж буй систем дээрх сүлжээгээр татаж авсан файлуудын үе үе эвдэрсэн гомдлыг (завгүй систем дээр гурван сарын хугацаанд 37 удаа эвдэрсэн) шалгаж байх үед илрүүлсэн.

Эмзэг байдал нь цөмөөс эхлэн илэрдэг Linux 5.8, 2020 оны 8-р сард гарсан, өөрөөр хэлбэл энэ нь байгаа Debian 11 боловч үндсэн цөмд нөлөөлдөггүй Ubuntu 20.04 LTS. RHEL 8.x болон openSUSE/SUSE 15 цөмүүд нь анх хуучин салбарууд дээр суурилсан боловч асуудал тэнд буцаж байршуулагдсан байж болзошгүй (яг тодорхой мэдээлэл хараахан алга). Та эдгээр хуудсуудаас эдгээр түгээлтийн багцын шинэчлэлтүүдийг хянаж болно: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch LinuxЭмзэг байдлыг засах аргыг 5.16.11, 5.15.25, болон 5.10.102 хувилбаруудад санал болгосон. Засварыг мөн платформд ашигласан цөмд оруулсан болно. Android.

Энэхүү эмзэг байдал нь copy_page_to_iter_pipe() болон push_pipe() функцуудад "buf->flags" утгыг эхлүүлээгүйгээс үүдэлтэй юм. Бүтцийг хуваарилах үед санах ой цэвэрлэгдээгүй бөгөөд нэргүй хоолойнуудтай хийсэн зарим үйлдэл нь "buf->flags" нь өөр үйлдлийн утгыг агуулж болзошгүй юм. Энэ дутагдлыг ашигласнаар эрхгүй орон нутгийн хэрэглэгч нь тугийг PIPE_BUF_FLAG_CAN_MERGE утгад тохируулж болох бөгөөд энэ нь тусгайлан бэлтгэсэн нэргүй хоолой руу шинэ өгөгдөл бичих замаар хуудасны кэш дэх өгөгдлийг дарж бичих боломжийг олгодог.

Халдлага хийхийн тулд зорилтот файл уншигдахуйц байх ёстой. Хоолой руу бичих үед хандалтын эрхийг шалгадаггүй тул хуудасны кэшийг зөвхөн унших боломжтой хуваалтууд дээр байрлах файлууд дээр ч (жишээлбэл, CD-ROM-оос авсан файлууд) орлуулах боломжтой. Хуудасны кэш дэх мэдээллийг орлуулсны дараа файлаас өгөгдлийг унших үед процесс нь бодит өгөгдлийг биш, харин орлуулсан өгөгдлийг хүлээн авах болно.

Ашиглалт нь нэргүй хоолой үүсгэж, дурын өгөгдлөөр дүүргэж, холбогдох бүх цагираг бүтцэд PIPE_BUF_FLAG_CAN_MERGE тугийг тохируулахаас бүрдэнэ. Дараа нь өгөгдлийг хоолойноос уншдаг боловч pipe_inode_info цагираг бүтцэд байгаа pipe_buffer бүтцийн бүх тохиолдолд туг нь тохируулагдсан хэвээр байна. Дараа нь хүссэн офсетээс эхлэн зорилтот файлаас нэргүй хоолой руу өгөгдлийг уншихын тулд splice() дуудлагыг хийдэг. Энэхүү нэргүй хоолой руу өгөгдөл бичих үед PIPE_BUF_FLAG_CAN_MERGE туг нь хуудасны кэш өгөгдлийг pipe_buffer бүтцийн шинэ жишээ үүсгэхийн оронд дарж бичихээр тохируулдаг.

Эх сурвалж: opennet.ru

DDoS хамгаалалт, VPS VDS сервер бүхий сайтуудад найдвартай хостинг худалдаж аваарай 🔥 DDoS хамгаалалттай, VPS VDS сервертэй найдвартай вэбсайт хостинг худалдаж аваарай | ProHoster