Në ndërfaqen e hyrjes/kalimit asinkron io_uring, e siguruar nga bërthama Linux, është zbuluar një dobësi (CVE-2024-0582), e cila lejon një përdorues pa privilegje të fitojë të drejtat root në sistem. Për të shfrytëzuar këtë dobësi, mjafton një akses lokal i zakonshëm në sistem, pa pasur nevojë për manipulime me hapësirat e emrave. Aktualisht është në dispozicion publik një shfrytëzim aktiv, si dhe një përshkrim i detajuar i një teknike të dytë për shfrytëzimin e dobësisë.
Dobësia shkaktohet nga një qasje në një bllok memorie të liruar tashmë (use-after-free) në nën-sistemin io_uring, që ndodh gjatë regjistrimit dhe lirimit të një blloku rrethor, të krijuar me flagun IORING_REGISTER_PBUF_RING. Në situatën e përdorimit të operacionit mmap() në bllok, ai mbetet i reflektuar në hapësirën e përdoruesit pas përfundimit të operacionit të lirimit (IORING_UNREGISTER_PBUF_RING). Duke shfrytëzuar këtë veçori, një sulmues mund të lexojë dhe shkruajë të dhëna në faqet e memories të kthyer nga sistemi i shpërndarjes së memories së bërthamës.
Problemi shfaqet që nga lëshimi i bërthamës Linux 6.4 dhe është korrigjuar në lëshimet 6.7 dhe 6.6.5, si dhe në paketën e bërthamës 6.5.0-21, të përgatitur për Ubuntu 22.04 dhe 23.10. E veçantë është se në bërthamën kryesore problemi u korrigjua në dhjetor 2023, projekti Google Zero bëri të ditur një mesazh të gabimit për praninë e dobësisë më 8 janar, dhe paketa me bërthamën e korrigjuar 6.5 për Ubuntu u formua vetëm më 22 shkurt 2024. Në shpërndarje të tjera, ndjekja e korrigjimit dhe përfshirjes në dobësi mund të bëhet në faqet: Debian, Gentoo, RHEL, SUSE, Fedora, Arch.
Eksploit i parë manipulohet me krijimin e një numri të madh faqesh memorie që kontrollohen nga sulmuesi për të përcaktuar dispozitën e memories në bërthamë dhe aksesin në faqet e tjera fizike të memories, duke përdorur si sinjale përmbajtjen e strukturave të soketeve rrjetësisht të mbushura në një mënyrë specifike. Për të ekzekutuar kodin në eksploit, përdoret një "gadgets" (sekuencë instruksionesh ekzistuese në bërthamë), që çon në realizimin e funksionit call_usermodehelper_exec, i cili është menduar për të nisur procese në hapësirën e përdoruesit nga bërthama.
Eksploiti i dytë bazohet në faktin se, kur të gjitha slab-blloqet në cache janë shteruar (p.sh., kur një skedar hapet shumë herë), faqet e lira të memories, të cilat sulmuesi ka qasje, përdoren nga sistemi i shpërndarjes së memories për të krijuar një slab-bllok të ri dhe të gjitha strukturat e reja të skedareve fillojnë të vendosen në këtë bllok. Si rrjedhojë, disa struktura skedari do të përfundojnë në faqet e memories që sulmuesi mund t'i lexojë dhe të shkruajë. Shfrytëzimi përfshin organizimin e vendosjes së skedarit të nevojshëm në cache-n e skedareve dhe zëvendësimin në strukturat e lidhura me të të fushës f_mode, e cila përcakton të drejtat e aksesit, duke e bërë të mundshëm aksesin për të shkruar skedarin sistemik të nevojshëm, p.sh., /etc/passwd.
Burimi: opennet.ru
