Två sårbarheter har identifierats i Linux-kärnan, som i sin natur liknar sårbarheten Copy Fail som avslöjades för några dagar sedan, men som uppträder i andra delsystem — xfrm-ESP och RxRPC. Sårbarheterna har fått kodnamnet Dirty Frag (det förekommer också referenser till Copy Fail 2). Sårbarheterna gör det möjligt för en icke-privilegerad användare att få root-åtkomst genom att skriva över processdata i sidcache. En exploit som fungerar i alla aktuella Linux-distributioner är tillgänglig. Informationen om sårbarheten offentliggjordes före publiceringen av korrigeringar, men det finns en workaround för att blockera problemet.
Dirty Frag omfattar två olika sårbarheter: den första i xfrm-ESP-modulen, som används för att påskynda krypteringsoperationer i IPsec med hjälp av ESP-protokollet (Encapsulating Security Payload), och den andra i RxRPC-drivrutinen, som implementerar AF_RXRPC socket-familjen och den namngivna RPC-protokollet som arbetar ovanpå UDP. Var och en av sårbarheterna i sig kan ge root-åtkomst. Sårbarheten i xfrm-ESP har funnits i Linux-kärnan sedan januari 2017, medan sårbarheten i RxRPC har funnits sedan juni 2023. Båda problemen orsakas av optimeringar som tillåter direkt skrivning till sidcache.
För att exploatera sårbarheten i xfrm-ESP måste användaren ha rätt att skapa namnrymder, medan för att utnyttja sårbarheten i RxRPC måste modulen rxrpc.ko kunna laddas. Till exempel är det i Ubuntu förbjudet för en icke-privilegerad användare att skapa namnrymder enligt AppArmor-reglerna, men modulen rxrpc.ko laddas som standard. Vissa distributioner saknar modulen rxrpc.ko, men blockerar inte skapandet av namnrymder. Forskaren som identifierade problemet har tagit fram en kombinerad exploit som kan attackera systemet via båda sårbarheterna, vilket möjliggör exploatering av problemet i alla stora distributioner. Exploitens funktion har bekräftats i Ubuntu 24.04.4 med kärna 6.17.0-23, RHEL 10.1 med kärna 6.12.0-124.49.1, openSUSE Tumbleweed med kärna 7.0.2-1, CentOS Stream 10 med kärna 6.12.0-224, AlmaLinux 10 med kärna 6.12.0-124.52.3 och Fedora 44 med kärna 6.19.14-300.
Liksom i fallet med sårbarheten Copy Fail, orsakades problemen i xfrm-ESP och RxRPC av att avkryptering av data utfördes på plats med hjälp av funktionen splice(), som överför data mellan filbeskrivare och rörledningar (pipe) utan att kopiera, genom att skicka referenser till element i sidcache. Offset för skrivoperationen beräknades utan lämpliga kontroller som tar hänsyn till användningen av direktreferenser till element i sidcache, vilket möjliggjorde att genom att skicka speciellt utformade förfrågningar skriva över 4 byte på det valda offsetet och ändra innehållet i vilken fil som helst i sidcache.
Alla läsoperationer från filer ger först innehållet från sidcache. Om data ändras i sidcache kommer läsoperationer från filen att returnera inte den verkliga informationen som lagras på enheten, utan modifierade data. Utnyttjandet av sårbarheten går ut på att förändra sidcache för en körbar fil med suid-root-flaggan. Till exempel, för att få root-rättigheter kan man läsa den körbara filen /usr/bin/su för att placera den i sidcache, efter vilket man kan få sin egen kod insatt i det innehåll från filen som har laddats i sidcache. En efterföljande körning av verktyget "su" kommer att resultera i att det inte är den original körbara filen från lagringen som laddas in i minnet, utan en modifierad kopia från sidcache.
Information om sårbarheter och koordinerad release av uppdateringar för att åtgärda problemen var planerad till den 12 maj, men på grund av en informationsläcka var man tvungen att offentliggöra informationen om sårbarheten innan korrigeringarna publicerades. I slutet av april publicerades patchar för rxrpc, ipsec och xfrm på den offentliga mailinglistan netdev, utan att nämna att de var relaterade till åtgärdandet av sårbarheten. Den 5 maj accepterade underhållaren för IPsec-subsystemet en ändring med den föreslagna korrigeringen i modulen xfrm-esp i git-repositoriet netdev, där beskrivningen i hög grad var en upprepning av beskrivningen av problemet som ledde till sårbarheten Copy Fail i modulen algif_aead. En av säkerhetsforskare blev intresserad av detta fix, lyckades skapa en fungerande exploit och publicerade den, utan att veta att det fanns en embargo mot att avslöja informationen om problemet före den 12 maj.
Uppdateringar med korrigeringar för Linux-kärnan och kärnpaket i distributioner har ännu inte publicerats, men problemrelaterade patchar är tillgängliga – xfrm-esp och rxrpc. CVE-identifierare har inte tilldelats, vilket gör det svårare att spåra uppdateringen av paket i distributionerna. Som en workaround för skydd kan du blockera inladdning av kärnmodulerna esp4, esp6 och 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"
Källa: opennet.ru
