Линукс цөмд хоёр эмзэг байдал илэрсэн. Эдгээр эмзэг байдал нь хэд хоногийн өмнө илэрсэн Copy Fail эмзэг байдалтай төстэй боловч xfrm-ESP болон RxRPC гэсэн өөр өөр дэд системүүдэд нөлөөлдөг. Энэ цуврал эмзэг байдлыг Dirty Frag (Copy Fail 2 гэж нэрлэдэг) гэж кодчилсон. Эдгээр эмзэг байдал нь эрхгүй хэрэглэгчдэд хуудасны кэш дэх процессын өгөгдлийг дарж бичих замаар root эрхийг авах боломжийг олгодог. Одоогийн бүх Линуксийн тархацууд дээр ажилладаг эксплойт боломжтой. Эмзэг байдлыг нөхөөсүүд нийтлэгдэхээс өмнө илчилсэн боловч тойрон гарах арга зам байгаа.
Dirty Frag нь хоёр өөр эмзэг байдлыг хамардаг: эхнийх нь xfrm-ESP модуль дахь бөгөөд ESP (Encapsulating Security Payload) протоколыг ашиглан IPsec шифрлэлтийн үйлдлүүдийг хурдасгахад ашиглагддаг, хоёр дахь нь AF_RXRPC сокет гэр бүл болон UDP дээр ажилладаг ижил нэртэй RPC протоколыг хэрэгжүүлдэг RxRPC драйвер дахь эмзэг байдал. Эмзэг байдал бүрийг тусад нь авч үзвэл root эрхийг олгодог. xfrm-ESP эмзэг байдал нь Linux цөмд 2017 оны 1-р сараас хойш, RxRPC эмзэг байдал нь 2023 оны 6-р сараас хойш байгаа. Хоёр асуудал хоёулаа хуудасны кэш рүү шууд бичих боломжийг олгодог оновчлолоос үүдэлтэй.
xfrm-ESP эмзэг байдлыг ашиглахын тулд хэрэглэгч нэрийн зай үүсгэх зөвшөөрөлтэй байх ёстой бөгөөд RxRPC эмзэг байдлыг ашиглахын тулд rxrpc.ko цөмийн модулийг ачаалах ёстой. Жишээлбэл, Ubuntu дээр AppArmor дүрмүүд нь эрхгүй хэрэглэгчдийг нэрийн зай үүсгэхээс сэргийлдэг боловч rxrpc.ko модулийг анхдагчаар ачаалдаг. Зарим тархалтууд нь rxrpc.ko модульгүй боловч нэрийн зай үүсгэхийг хаахгүй. Асуудлыг илрүүлсэн судлаач хоёр эмзэг байдлаар дамжуулан системд халдах чадвартай хосолсон эксплойт боловсруулсан бөгөөд энэ нь асуудлыг бүх томоохон тархалтууд дээр ашиглах боломжтой болгосон. Энэхүү exploit нь 6.17.0-23 цөмтэй Ubuntu 24.04.4, 6.12.0-124.49.1 цөмтэй RHEL 10.1, 7.0.2-1 цөмтэй openSUSE Tumbleweed, 6.12.0-224 цөмтэй CentOS Stream 10, 6.12.0-124.52.3 цөмтэй AlmaLinux 10, болон 6.19.14-300 цөмтэй Fedora 44 дээр ажилладаг болох нь батлагдсан.
Copy Fail эмзэг байдлын нэгэн адил xfrm-ESP болон RxRPC дахь асуудлууд нь splice() функцийг ашиглан байранд нь өгөгдлийг тайлснаас үүдэлтэй бөгөөд энэ нь хуудасны кэш дэх элементүүд рүү лавлагаа дамжуулах замаар файлын тодорхойлогч болон хоолойн хооронд өгөгдлийг хуулбарлахгүйгээр дамжуулдаг. Хуудасны кэш дэх элементүүд рүү шууд лавлагаа ашиглахыг харгалзан бичих офсетийг зохих шалгалтгүйгээр тооцоолсон бөгөөд энэ нь тусгайлан боловсруулсан хүсэлтүүдэд өгөгдсөн офсет дээр 4 байтыг дарж бичих, хуудасны кэш дэх аливаа файлын агуулгыг өөрчлөх боломжийг олгодог.
Бүх файл унших үйлдлүүд нь хуудасны кэшээс эхлээд агуулгыг авдаг. Хэрэв хуудасны кэш дэх өгөгдлийг өөрчилсөн бол файл унших үйлдлүүд нь диск дээр хадгалагдсан бодит мэдээллийг биш харин орлуулсан өгөгдлийг буцаана. Эмзэг байдлыг ашиглах нь suid root тугтай гүйцэтгэгдэж болох файлын хуудасны кэшийг өөрчлөхөд чиглэгддэг. Жишээлбэл, root эрхийг авахын тулд /usr/bin/su гүйцэтгэгдэж болох файлыг хуудасны кэшэд байрлуулж, дараа нь өөрийн кодыг хуудасны кэшэд ачаалагдсан энэ файлын агуулгад орлуулж болно. Дараа нь "su" хэрэгслийг ажиллуулахад хуудасны кэшээс өөрчлөгдсөн хуулбар нь дискнээс анхны гүйцэтгэгдэж болох файлыг биш харин санах ойд ачаалагдах болно.
Эмзэг байдлын талаарх мэдээлэл болон нөхөөсийг зохицуулалттайгаар гаргах ажлыг 5-р сарын 12-нд хийхээр төлөвлөсөн байсан ч мэдээлэл алдагдсаны улмаас нөхөөсийг гаргахаас өмнө эмзэг байдлын мэдээллийг нийтлэх шаардлагатай болсон. Дөрөвдүгээр сарын сүүлээр rxrpc, ipsec, xfrm-ийн нөхөөсийг эмзэг байдалтай холбоотой гэж дурдалгүйгээр netdev-ийн олон нийтийн имэйл жагсаалтад байршуулсан. 5-р сарын 5-нд IPsec дэд системийн засварлагч нь xfrm-esp модульд санал болгосон засвартай netdev Git репозиторт өөрчлөлт оруулахыг хүлээн зөвшөөрсөн. Өөрчлөлтийн тайлбар нь algif_aead модульд Copy Fail эмзэг байдалд хүргэсэн асуудлын тайлбартай бараг ижил байв. Аюулгүй байдлын судлаач энэ засварт сонирхолтой болж, ажиллаж буй exploit үүсгэж, 5-р сарын 12 хүртэл асуудлын талаарх мэдээллийг задруулахыг хориглосон гэдгийг мэдээгүй байсан ч нийтэлсэн.
Линукс цөм болон дистрибьютер дэх цөмийн багцуудын засвартай шинэчлэлтүүд хараахан нийтлэгдээгүй байгаа боловч асуудлыг шийдвэрлэх засварууд - xfrm-esp болон rxrpc - боломжтой байна. CVE танигчийг оноож өгөөгүй байгаа нь дистрибьютер дэх багцын шинэчлэлтийг хянах ажлыг хүндрүүлдэг. Тойрог замд та esp4, esp6 болон rxrpc цөмийн модулиудын ачааллыг хааж болно: sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; true"
Эх сурвалж: opennet.ru
