S'han descobert dues vulnerabilitats al nucli de Linux. Aquestes vulnerabilitats són de naturalesa similar a la vulnerabilitat Copy Fail revelada fa uns dies, però afecten subsistemes diferents: xfrm-ESP i RxRPC. Aquesta sèrie de vulnerabilitats s'ha anomenat en clau Dirty Frag (també coneguda com a Copy Fail 2). Aquestes vulnerabilitats permeten a un usuari sense privilegis obtenir privilegis de root sobreescrivint les dades del procés a la memòria cau de la pàgina. Hi ha disponible un exploit que funciona a totes les distribucions actuals de Linux. La vulnerabilitat es va revelar abans que es publiquessin els pegats, però hi ha una solució alternativa disponible.
Dirty Frag cobreix dues vulnerabilitats diferents: la primera al mòdul xfrm-ESP, que s'utilitza per accelerar les operacions de xifratge IPsec mitjançant el protocol ESP (Encapsulating Security Payload), i la segona al controlador RxRPC, que implementa la família de sòcols AF_RXRPC i el protocol RPC del mateix nom, executant-se sobre UDP. Cada vulnerabilitat, considerada per separat, permet privilegis de root. La vulnerabilitat xfrm-ESP és present al nucli de Linux des del gener de 2017, i la vulnerabilitat RxRPC és present des del juny de 2023. Ambdós problemes són causats per optimitzacions que permeten escriptures directes a la memòria cau de la pàgina.
Per explotar la vulnerabilitat xfrm-ESP, l'usuari ha de tenir permís per crear espais de noms, i per explotar la vulnerabilitat RxRPC, cal carregar el mòdul del nucli rxrpc.ko. Per exemple, a Ubuntu, les regles d'AppArmor impedeixen que els usuaris sense privilegis creïn espais de noms, però el mòdul rxrpc.ko es carrega per defecte. Algunes distribucions no tenen el mòdul rxrpc.ko però no bloquegen la creació d'espais de noms. L'investigador que va descobrir el problema va desenvolupar un exploit combinat capaç d'atacar el sistema a través de les dues vulnerabilitats, cosa que permet explotar el problema en totes les distribucions principals. S'ha confirmat que l'exploit funciona a Ubuntu 24.04.4 amb el nucli 6.17.0-23, RHEL 10.1 amb el nucli 6.12.0-124.49.1, openSUSE Tumbleweed amb el nucli 7.0.2-1, CentOS Stream 10 amb el nucli 6.12.0-224, AlmaLinux 10 amb el nucli 6.12.0-124.52.3 i Fedora 44 amb el nucli 6.19.14-300.
Igual que amb la vulnerabilitat Copy Fail, els problemes a xfrm-ESP i RxRPC són causats pel desxifratge de dades in situ mitjançant la funció splice(), que transfereix dades entre descriptors de fitxers i canonades sense copiar, passant referències a elements de la memòria cau de la pàgina. Els desplaçaments d'escriptura es van calcular sense les comprovacions adequades per tenir en compte l'ús de referències directes a elements de la memòria cau de la pàgina, permetent que sol·licituds especialment dissenyades sobreescriguessin 4 bytes en un desplaçament determinat i modifiquessin el contingut de qualsevol fitxer de la memòria cau de la pàgina.
Totes les operacions de lectura de fitxers recuperen primer el contingut de la memòria cau de pàgines. Si es modifiquen les dades de la memòria cau de pàgines, les operacions de lectura de fitxers retornaran dades substituïdes, no la informació real emmagatzemada a la unitat. L'explotació de la vulnerabilitat es redueix a modificar la memòria cau de pàgines per a un fitxer executable amb el senyalador root suid. Per exemple, per obtenir privilegis de root, es podria llegir el fitxer executable /usr/bin/su per col·locar-lo a la memòria cau de pàgines i, a continuació, substituir el propi codi al contingut d'aquest fitxer carregat a la memòria cau de pàgines. L'execució posterior de la utilitat "su" farà que la còpia modificada de la memòria cau de pàgines es carregui a la memòria, no el fitxer executable original de la unitat.
La divulgació de vulnerabilitats i el llançament coordinat dels pegats estaven programats per al 12 de maig, però a causa d'una filtració, la informació sobre la vulnerabilitat s'havia de publicar abans que es publiquessin els pegats. A finals d'abril, els pegats per a rxrpc, ipsec i xfrm es van publicar a la llista de correu pública de netdev sense esmentar que estaven relacionats amb la vulnerabilitat. El 5 de maig, el mantenidor del subsistema IPsec va acceptar un canvi al repositori Git de netdev amb una proposta de correcció al mòdul xfrm-esp. La descripció del canvi era en gran part idèntica a la descripció del problema que va conduir a la vulnerabilitat Copy Fail al mòdul algif_aead. Un investigador de seguretat es va interessar per aquesta correcció, va aconseguir crear un exploit funcional i el va publicar, sense saber que s'havia imposat un embargament a la divulgació d'informació sobre el problema fins al 12 de maig.
Encara no s'han publicat actualitzacions amb correccions per al nucli de Linux i els paquets del nucli a les distribucions, però hi ha pegats disponibles que solucionen els problemes: xfrm-esp i rxrpc. No s'han assignat identificadors CVE, cosa que complica el seguiment de les actualitzacions de paquets a les distribucions. Com a solució alternativa, podeu bloquejar la càrrega dels mòduls del nucli esp4, esp6 i 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"
Font: opennet.ru
