Vulnerabilidades Dirty Frag, que alteram o cache de páginas para obter acesso root em qualquer distribuição Linux

Duas vulnerabilidades foram identificadas no núcleo do Linux, que são essencialmente análogas à vulnerabilidade Copy Fail revelada alguns dias atrás, mas que se manifestam em subsistemas diferentes — xfrm-ESP e RxRPC. A série de vulnerabilidades recebeu o codinome Dirty Frag (também há menção a Copy Fail 2). As vulnerabilidades permitem que um usuário não privilegiado obtenha privilégios de root, sobrescrevendo dados do processo no cache de páginas. Um exploit está disponível, funcionando em todas as distribuições atuais do Linux. As informações sobre a vulnerabilidade foram divulgadas antes da publicação das correções, mas há um método alternativo para bloquear o problema.

Dirty Frag abrange duas vulnerabilidades diferentes: a primeira no módulo xfrm-ESP, utilizado para acelerar operações de criptografia em IPsec com o protocolo ESP (Encapsulating Security Payload), e a segunda no driver RxRPC, que implementa a família de sockets AF_RXRPC e o protocolo RPC homônimo, que opera sobre UDP. Cada uma das vulnerabilidades, por si só, permite obter privilégios de root. A vulnerabilidade no xfrm-ESP se manifesta no núcleo do Linux desde janeiro de 2017, enquanto a vulnerabilidade no RxRPC está presente desde junho de 2023. Ambos os problemas são causados por otimizações que permitem gravação direta no cache de páginas.

Para explorar a vulnerabilidade no xfrm-ESP, o usuário deve ter permissões para criar espaços de nomes, e para explorar a vulnerabilidade no RxRPC, deve ter a capacidade de carregar o módulo do núcleo rxrpc.ko. Por exemplo, no Ubuntu, as regras do AppArmor proíbem que um usuário não privilegiado crie espaços de nomes, mas por padrão o módulo rxrpc.ko é carregado. Em algumas distribuições, o módulo rxrpc.ko está ausente, mas não é bloqueada a criação de espaços de nomes. O pesquisador que identificou o problema preparou um exploit combinado, capaz de atacar o sistema através de ambas as vulnerabilidades, permitindo explorar o problema em todas as principais distribuições. A operação do exploit foi confirmada no Ubuntu 24.04.4 com o núcleo 6.17.0-23, RHEL 10.1 com o núcleo 6.12.0-124.49.1, openSUSE Tumbleweed com o núcleo 7.0.2-1, CentOS Stream 10 com o núcleo 6.12.0-224, AlmaLinux 10 com o núcleo 6.12.0-124.52.3 e Fedora 44 com o núcleo 6.19.14-300.

Assim como na vulnerabilidade Copy Fail, os problemas no xfrm-ESP e RxRPC são causados pela execução da descriptografia de dados no local, utilizando a função splice(), que transfere dados entre descritores de arquivos e pipes sem copiar, através da passagem de referências a elementos no cache de páginas. Os deslocamentos para a operação de gravação foram calculados sem as devidas verificações, que considerariam o uso de uma referência direta a elementos no cache de páginas, permitindo que, através do envio de solicitações especialmente formatadas, 4 bytes em um deslocamento escolhido fossem sobrescritos e o conteúdo do arquivo armazenado no cache de páginas fosse alterado.

Todas as operações de leitura de arquivos, em primeiro lugar, retornam o conteúdo do cache de páginas. No caso de modificação de dados no cache de páginas, as operações de leitura de arquivos resultarão na devolução não das informações que estão realmente armazenadas no dispositivo, mas de dados alterados. A exploração da vulnerabilidade se resume a alterar o cache de páginas para um arquivo executável com a flag suid root. Por exemplo, para obter direitos de root, pode-se ler o arquivo executável /usr/bin/su para colocá-lo no cache de páginas, e então conseguir a substituição do próprio código no conteúdo desse arquivo carregado no cache. A execução subsequente da ferramenta "su" resultará em carregar na memória não o arquivo executável original do dispositivo, mas uma cópia modificada do cache de páginas.

A divulgação de informações sobre vulnerabilidades e o lançamento coordenado de atualizações para resolver os problemas estavam previstos para 12 de maio, mas devido ao vazamento de informações, os detalhes sobre a vulnerabilidade tiveram que ser publicados antes da liberação das correções. No final de abril, patches para rxrpc, ipsec e xfrm foram publicados na lista de discussão pública netdev, sem mencionar que estavam relacionados à resolução da vulnerabilidade. Em 5 de maio, o mantenedor do subsistema IPsec aceitou em seu repositório git netdev uma alteração com uma correção proposta no módulo xfrm-esp, cuja descrição repetia em grande parte a descrição do problema que levou à vulnerabilidade Copy Fail no módulo algif_aead. Um dos pesquisadores de segurança se interessou por essa correção, conseguiu criar um exploit funcional e o publicou, sem saber que havia um embargo sobre a divulgação da questão até 12 de maio.

As atualizações com correções para o núcleo Linux e os pacotes do núcleo ainda não foram publicadas nas distribuições, mas estão disponíveis patches que resolvem problemas — xfrm-esp e rxrpc. Os identificadores CVE não foram atribuídos, o que complica o rastreamento das atualizações dos pacotes nas distribuições. Como uma medida de proteção alternativa, é possível bloquear o carregamento dos módulos do núcleo 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

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster