Vulnerabilidades de Dirty Frag que modifican a caché da páxina para obter acceso root en todas as distribucións de Linux.

Descubríronse dúas vulnerabilidades no kernel de Linux. Estas vulnerabilidades son de natureza similar á vulnerabilidade Copy Fail divulgada hai uns días, pero afectan a subsistemas diferentes: xfrm-ESP e RxRPC. Esta serie de vulnerabilidades recibiu o nome en clave Dirty Frag (tamén coñecida como Copy Fail 2). Estas vulnerabilidades permiten que un usuario sen privilexios obteña privilexios de root sobrescribindo os datos do proceso na caché da páxina. Hai dispoñible unha vulnerabilidade que funciona en todas as distribucións actuais de Linux. A vulnerabilidade divulgouse antes de que se publicasen os parches, pero hai unha solución alternativa.

Dirty Frag abrangue dúas vulnerabilidades diferentes: a primeira no módulo xfrm-ESP, usado para acelerar as operacións de cifrado IPsec usando o protocolo ESP (Encapsulating Security Payload), e a segunda no controlador RxRPC, que implementa a familia de sockets AF_RXRPC e o protocolo RPC do mesmo nome, executándose sobre UDP. Cada vulnerabilidade, tomada por separado, permite privilexios de root. A vulnerabilidade xfrm-ESP está presente no kernel de Linux desde xaneiro de 2017, e a vulnerabilidade RxRPC está presente desde xuño de 2023. Ambos problemas están causados ​​por optimizacións que permiten escrituras directas na caché da páxina.

Para aproveitar a vulnerabilidade xfrm-ESP, o usuario debe ter permiso para crear espazos de nomes e, para aproveitar a vulnerabilidade RxRPC, debe estar cargado o módulo do kernel rxrpc.ko. Por exemplo, en Ubuntu, as regras de AppArmor impiden que os usuarios sen privilexios creen espazos de nomes, pero o módulo rxrpc.ko cárgase por defecto. Algunhas distribucións carecen do módulo rxrpc.ko pero non bloquean a creación de espazos de nomes. O investigador que descubriu o problema desenvolveu unha vulnerabilidade combinada capaz de atacar o sistema a través de ambas vulnerabilidades, o que fai posible aproveitar o problema en todas as distribucións principais. Confirmouse que o exploit funciona en Ubuntu 24.04.4 co kernel 6.17.0-23, RHEL 10.1 co kernel 6.12.0-124.49.1, openSUSE Tumbleweed co kernel 7.0.2-1, CentOS Stream 10 co kernel 6.12.0-224, AlmaLinux 10 co kernel 6.12.0-124.52.3 e Fedora 44 co kernel 6.19.14-300.

Do mesmo xeito que coa vulnerabilidade Copy Fail, os problemas en xfrm-ESP e RxRPC débense ao descifrado de datos in situ mediante a función splice(), que transfire datos entre descritores de ficheiros e canalizacións sen copiar, pasando referencias a elementos na caché da páxina. Os desprazamentos de escritura calculáronse sen as comprobacións axeitadas para ter en conta o uso de referencias directas a elementos na caché da páxina, o que permite que solicitudes especialmente deseñadas sobrescriban 4 bytes nun desprazamento determinado e modifiquen o contido de calquera ficheiro na caché da páxina.

Todas as operacións de lectura de ficheiros recuperan primeiro o contido da caché da páxina. Se se modifican os datos da caché da páxina, as operacións de lectura de ficheiros devolverán datos substituídos, non a información real almacenada na unidade. A explotación da vulnerabilidade redúcese á modificación da caché da páxina para un ficheiro executable co indicador de root suid. Por exemplo, para obter privilexios de root, poderíase ler o ficheiro executable /usr/bin/su para colocalo na caché da páxina e, a seguir, substituír o seu propio código no contido deste ficheiro cargado na caché da páxina. A execución posterior da utilidade "su" fará que a copia modificada da caché da páxina se cargue na memoria, non o ficheiro executable orixinal da unidade.

A divulgación da vulnerabilidade e o lanzamento coordinado dos parches estaban programados para o 12 de maio, pero debido a unha filtración, a información sobre a vulnerabilidade tivo que publicarse antes de que se lanzasen os parches. A finais de abril, os parches para rxrpc, ipsec e xfrm publicáronse na lista de correo pública de netdev sen mencionar que estaban relacionados coa vulnerabilidade. O 5 de maio, o responsable do mantemento do subsistema IPsec aceptou un cambio no repositorio Git de netdev cunha proposta de corrección no módulo xfrm-esp. A descrición do cambio era en gran medida idéntica á descrición do problema que levou á vulnerabilidade Copy Fail no módulo algif_aead. Un investigador de seguridade interesouse nesta corrección, conseguiu crear un exploit funcional e publicouno, sen saber que se impuxera un embargo sobre a divulgación de información sobre o problema ata o 12 de maio.

Aínda non se publicaron actualizacións con correccións para o kernel de Linux e os paquetes do kernel nas distribucións, pero hai parches dispoñibles que solucionan os problemas: xfrm-esp e rxrpc. Non se asignaron identificadores CVE, o que complica o seguimento das actualizacións de paquetes nas distribucións. Como solución alternativa, podes bloquear a carga dos módulos do kernel esp4, esp6 e 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"

Fonte: opennet.ru