Në kernelin e Linux janë identifikuar dy vulnerabilitete, të cilat janë në thelb të ngjashme me vulnerabilitetin Copy Fail, i zbuluar disa ditë më parë, por shfaqen në subsistemat e tjera - xfrm-ESP dhe RxRPC. Seritë e vulnerabiliteteve kanë marrë emrin kodor Dirty Frag (po ashtu përmendet edhe Copy Fail 2). Vulnerabilitetet lejojnë një përdorues të padrejtuar të fitojë të drejtat root duke shkruar të dhëna të procesit në cache-n e faqeve. Një exploit është në dispozicion, i cili funksionon në të gjitha distro të fundit të Linux. Informacioni mbi vulnerabilitetin është zbuluar para publikimit të njohurive përkatëse, por ekziston një metodë për të anashkaluar këtë problem.
Dirty Frag përfshin dy vulnerabilitete të ndryshme: e para në modul xfrm-ESP, i përdorur për të përshpejtuar operacionet e enkriptimit në IPsec duke përdorur protokollin ESP (Encapsulating Security Payload), dhe e dyta në driverin RxRPC, që implementon familjen e soketeve AF_RXRPC dhe protokollin RPC të njëjtë që funksionon mbi UDP. Çdo vulnerabilitet veçmas lejon arritjen e të drejtave root. Vulnerabiliteti në xfrm-ESP është shfaqur në kernelin e Linux që nga janari 2017, ndërsa vulnerabiliteti në RxRPC është shfaqur që nga qershori 2023. Të dy problemet janë shkaktuar nga optimizimet që lejojnë shkruan të drejtpërdrejt në cache-n e faqeve.
Për të shfrytëzuar vulnerabilitetin në xfrm-ESP, përdoruesi duhet të ketë të drejtat për të krijuar hapësira emrash, ndërsa për të shfrytëzuar vulnerabilitetin në RxRPC, duhet të ketë mundësinë për të ngarkuar modulin e kernelit rxrpc.ko. Për shembull, në Ubuntu në rregullat e AppArmor një përdorues i padrejtuar ndalohet të krijojë hapësira emrash, por moduli rxrpc.ko ngarkohet automatikisht. Në disa distro mungon moduli rxrpc.ko, por nuk pengohet krijimi i hapësirave emrash. Kërkuesi që zbuloi problemin përgatiti një exploit të kombinuar, i cili është në gjendje të sulmojë sistemin përmes të dy vulnerabiliteteve, duke lejuar shfrytëzimin e problemit në të gjitha distro kryesore. Funksionimi i exploit-it është konfirmuar në Ubuntu 24.04.4 me kernel 6.17.0-23, RHEL 10.1 me kernel 6.12.0-124.49.1, openSUSE Tumbleweed me kernel 7.0.2-1, CentOS Stream 10 me kernel 6.12.0-224, AlmaLinux 10 me kernel 6.12.0-124.52.3 dhe Fedora 44 me kernel 6.19.14-300.
Si në rastin e të çarës Copy Fail, problemet në xfrm-ESP dhe RxRPC shkaktohen nga ekzekutimi i dekriptimit të të dhënave në vend me përdorimin e funksionit splice(), i cili përshkruan të dhënat midis descriptorëve të skedarëve dhe kanaleve (pipe) pa kopjim, përmes kalimit të referencave në elementët në cache-në e faqeve. Offsetet për operacionin e shkrimit u llogaritën pa kontrollime të nevojshme, që merreshin parasysh përdorimi i referencës direkte në elementët në cache-në e faqeve, duke lejuar që përmes dërgimit të kërkesave të formatizuara, të merren 4 byte në offsetin e zgjedhur dhe të ndyshojë përmbajtjen në cache-në e faqeve të çdo skedari.
Të gjitha operacionet e leximit nga skedarët fillimisht japin përmbajtjen nga cache-ja e faqeve. Në rast të modifikimit të të dhënave në cache-në e faqeve, operacionet e leximit nga skedari do të sjellin jo informacione reale që ruhet në njësinë përkatëse, por të dhëna të zëvendësuara. Shfrytëzimi i disa të çara shkon në ndryshimin e cache-së për skedarin ekzekutiv me flamurin suid root. Për shembull, për të marrë të drejtat e root-it, mund të lexohet skedari ekzekutiv /usr/bin/su për ta vendosur në cache-në e faqeve, pas së cilës mund të sigurohet zëvendësimi i kodit tuaj në përmbajtjen e ngarkuar në cache-në e këtij skedari. Nxjerrja e mjetit "su" do të çojë në ngarkimin në memorie të skedarit ekzekutiv origjinal nga njësia përkatëse, por një kopje të ndryshuar nga cache-ja e faqeve.
Zbulimi i informacionit mbi të çarët dhe lëshimi i koordinuar i azhurnimeve për zgjidhjen e problemeve ishte planifikuar për 12 maj, por për shkak të rrjedhjes së informacionit, detajet mbi të çarën duhej të publikoheshin para publikimit të rregullimeve. Në fund të prillit, në listën publike të korrespondencës netdev u publikuan patch-a për rxrpc, ipsec dhe xfrm, pa përmendjen se ato ishin të lidhura me zgjidhjen e të çarës. Më 5 maj, mbajtësi i nën-sistemit IPsec pranoi në git-repozitorin netdev një ndryshim me një rregullim të propozuar në modulin xfrm-esp, përshkrimi i të cilit përsëriste në masë të madhe përshkrimin e problemit që çoi në të çarën Copy Fail në modulin algif_aead. Një nga kërkuesit e sigurisë shfaqi interes për këtë rregullim, arriti të krijonte një exploit funksional dhe e publikoi, pa ditur se informacioni mbi problemin do të publikoheshin para 12 majit.
Përditësimet me rregullime për bërthamën Linux dhe paketat e bërthamës në shpërndarjet nuk janë publikuar ende, por janë në dispozicion patches që zgjidhin problemet — xfrm-esp dhe rxrpc. CVE-identifikuesit nuk janë caktuar, çka e vështirëson ndjekjen e përditësimit të paketave në shpërndarje. Si një zgjidhje për mbrojtje, mund të bllokoni ngarkimin e moduleve të bërthamës esp4, esp6 dhe 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»
Burimi: opennet.ru
