Në ndërfaqen e hyrjes/daljes asinkrone io_uring, e ofruar nga bërthama Linux, është zbuluar një dobësi (CVE-2024-0582) që lejon një përdorues të paprivilegjuar të fitojë të drejtat root në sistem. Për të shfrytëzuar këtë dobësi, mjafton të ketë qasje lokale normale në sistem, pa nevojën për manipulime me hapësirat e emrave. Aktualisht, një shfrytëzim funksional është në dispozicion publik, si dhe një teknikë e dytë shfrytëzimi e dobësisë është përshkruar në detaje.
Dobësia shkaktohet nga referimi në një bllok të liruar tashmë të memories (use-after-free) në nën-sistemin io_uring, që ndodh gjatë regjistrimit dhe lirimit të një unazë buferi, e krijuar me flamurin IORING_REGISTER_PBUF_RING. Në situatën e aplikimit të operacionit mmap() në bufer, ai mbetet i reflektuar në hapësirën e përdoruesit pas përfundimit të operacionit të lirimit të tij (IORING_UNREGISTER_PBUF_RING). Duke përdorur këtë karakteristikë, një sulmues mund të lexojë dhe shkruaj të dhëna në faqet e memories, të cilat kthehen 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ë rregulluar 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 rëndësishme është se problemi në bërthamën kryesore është rregulluar në dhjetor 2023, projekti Google Zero shpërndau mesazhin për praninë e dobësisë më 8 janar, dhe paketa me bërthamën e rregulluar 6.5 për Ubuntu u formua vetëm më 22 shkurt 2024. Në shpërndarje të tjera, mund të ndjekni rregullimin dhe ekspozueshmërinë e dobësisë në faqet: Debian, Gentoo, RHEL, SUSE, Fedora, Arch.
Eksploitimi i parë manipuluar krijon një numër të madh faqesh memories të kontrolluara nga sulmuesi për të përcaktuar renditjen e memories në bërthamë dhe qasjen në faqet përkatëse fizike të memories, duke përdorur si majë përmbajtjen e strukturave të caktuar të mbushura të soketëve të rrjetit. Për të ekzekutuar kodin në eksploit, përdoret një "gadget" (sekuencë instrukcionesh të pranishme në bërthamë) që çon në ekzekutimin e funksionit call_usermodehelper_exec, i destinuar për të nisur procese në hapësirën e përdoruesit nga bërthama.
Eksploitimi i dytë bazohet në faktin se kur të gjitha blloqet slab në cache janë shteruar (p.sh., kur një skedar hapet shumë herë) faqet e lira të memories, të cilat mbeten të qasshme për sulmuesin, përdoren nga sistemi i shpërndarjes së memories për të krijuar një bllok të ri slab dhe të gjitha strukturat e reja të skedarëve fillojnë të vendosjen në këtë bllok. Prandaj, disa struktura skedarësh do të bjerë në faqet e memories që sulmuesi mund të lexojë dhe shkruajë. Shfrytëzimi përfshin organizimin e përfshirjes në cache-n e skedarëve të nevojshëm dhe zëvendësimin në struktura të lidhura të skedarëve të fushës f_mode, që përcakton të drejtat e aksesit, duke lejuar aksesin për të shkruar një skedar sistemor të nevojshëm, për shembull, /etc/passwd.
Burimi: opennet.ru
