Kodola nodrošinātajā asinhronajā I/O saskarnē io_uring LinuxIr identificēta ievainojamība (CVE-2024-0582), kas ļauj neprivileģētam lietotājam iegūt root privilēģijas sistēmā. Lai izmantotu ievainojamību, ir nepieciešama vienkārša lokāla piekļuve sistēmai bez nepieciešamības veikt vārdtelpas manipulācijas. Pašlaik publiski ir pieejama funkcionējoša ievainojamība, un detalizēti ir aprakstīta arī otra izmantošanas metode.
Ievainojamību izraisa “use-after-free” piekļuve atmiņas blokam io_uring apakšsistēmā, kas rodas, reģistrējot un atbrīvojot gredzena buferi, kas izveidots ar karodziņu IORING_REGISTER_PBUF_RING. Kad buferim tiek piemērota mmap(), tas pēc IORING_UNREGISTER_PBUF_RING operācijas paliek piesaistīts lietotāja telpai. Izmantojot šo ievainojamību, uzbrucējs var lasīt un rakstīt datus atmiņas lapās, kas atgrieztas kodola atmiņas pārvaldības sistēmai.
Problēma pastāv kopš kodola izlaišanas. Linux 6.4 un izlabotas 6.7 un 6.6.5 versijās, kā arī 6.5.0-21 kodola pakotnē, kas sagatavota Ubuntu 22.04 un 23.10. Jāatzīmē, ka problēma tika novērsta galvenajā kodolā 2023. gada decembrī, Google Zero projekts kļūdas ziņojumu par ievainojamību publiskoja 8. janvārī, un pakotne ar laboto kodola 6.5 versiju... Ubuntu tika izveidota tikai 2024. gada 22. februārī. Citos izplatījumos labojumus un ievainojamību risku var izsekot šajās lapās: Debian, Gentoo, RHEL, SUSE, Fedora, Arch.
Pirmais izmantotājs manipulē ar liela skaita uzbrucēja kontrolētu atmiņas lapu izveidi, lai noteiktu kodola atmiņas izkārtojumu un piekļūtu blakus esošajām fiziskās atmiņas lapām, izmantojot speciāli aizpildītu tīkla ligzdu struktūru saturu kā bākas. Lai izpildītu kodu, izmantotājs izmanto "sīkrīku" (kodola instrukciju secību), kas izpilda funkciju call_usermodehelper_exec, kas paredzēta lietotāja telpas procesu palaišanai no kodola.
Otrais izmantošanas veids balstās uz faktu, ka, kad visi kešatmiņā esošie slab bloki ir izsmelti (piemēram, ja fails tiek atvērts vairākas reizes), atmiņas piešķiršanas sistēma izmanto uzbrucējam pieejamās brīvās atmiņas lapas, lai izveidotu jaunu slab bloku, un visas jaunās failu struktūras tiek piešķirtas šim blokam. Līdz ar to dažas failu struktūras nonāks atmiņas lapās, kuras uzbrucējs var lasīt un rakstīt. Izmantošana sastāv no vēlamā faila kešatmiņas saglabāšanas un f_mode lauka, kas nosaka piekļuves tiesības, aizstāšanas saistītajās failu struktūrās, padarot vēlamo sistēmas failu, piemēram, /etc/passwd, rakstāmu.
Avots: opennet.ru
