DirtyDecrypt — mais uma vulnerabilidade da classe Copy Fail, que concede privilégios de root no Linux

Uma vulnerabilidade foi identificada no núcleo do Linux, semelhante às vulnerabilidades Copy Fail, Dirty Frag e Fragnesia, permitindo que um usuário não privilegiado obtenha privilégios de root, reescrevendo dados no cache de páginas. A vulnerabilidade recebeu o codinome DirtyDecrypt (o problema também é mencionado como DirtyCBC). Um protótipo do exploit está disponível.

O identificador CVE não é mencionado na nota do exploit, é informado apenas que os pesquisadores descobriram o problema em 9 de maio, após o que informaram os desenvolvedores do núcleo, que responderam que a descoberta deles duplicava outro relatório sobre uma vulnerabilidade já corrigida. Como o patch com a correção já foi incluído no núcleo, os pesquisadores decidiram publicar o exploit que desenvolveram. Pelo que pode ser descrito no exploit, ele utiliza a vulnerabilidade CVE-2026-31635, cuja correção foi aceita no núcleo em abril e faz parte da versão 7.0.0, lançada em 18 de abril na versão 6.18.23. O problema se manifesta a partir do núcleo 6.16.

Assim como na série de vulnerabilidades Dirty Frag, a nova vulnerabilidade está presente no driver RxRPC, que implementa a família de sockets AF_RXRPC e o protocolo RPC homônimo, operando sobre UDP. O problema foi causado por um erro na verificação do tamanho dos dados na função rxgk_verify_response() — em vez de verificar "if (auth_len > len)" o código afirmou "if (auth_len < len)", resultando na passagem de dados com tamanho superior ao permitido para a função rxgk_decrypt_skb(). Ao executar a função rxgk_decrypt_skb(), a decodificação dos dados era realizada substituindo as alterações diretamente no cache de páginas para evitar buffers desnecessários. Devido à verificação incorreta do tamanho, havia a possibilidade de sobrescrever dados no cache de páginas na posição escolhida.

A exploração da vulnerabilidade consiste em ler um arquivo de programa com a flag suid root (para que ele seja mantido no cache de páginas) e substituir parte do código do programa no cache de páginas pelo código para executar /usr/bin/sh. A execução subsequente do programa fará com que o arquivo executável original não seja carregado da mídia, mas sim uma cópia modificada do cache de páginas. Como programas suid, o exploit permite o uso de "/usr/bin/su", "/bin/su", "/usr/bin/mount", "/usr/bin/passwd" e "/usr/bin/chsh".

Para explorar a vulnerabilidade, a opção CONFIG_RXGK deve estar ativada na configuração do kernel, e o módulo do kernel rxrpc.ko deve estar disponível para inicialização automática (em alguns sistemas, ele não é compilado). O status de correção de vulnerabilidades nas distribuições pode ser avaliado nas seguintes páginas: Debian, Ubuntu, SUSE/openSUSE, RHEL, Arch, Fedora. Como medida de proteção alternativa, você pode bloquear a carga do módulo do kernel rxrpc:

sh -c "printf 'install rxrpc /bin/false\n' > /etc/modprobe.d/dirtydecrypt.conf; rmmod rxrpc 2>/dev/null; true"

Além disso, vale ressaltar a publicação na lista de discussão dos desenvolvedores do kernel Linux de patches que desativam completamente as otimizações no crypto API (AF_ALG), que utilizam acesso direto ao cache de páginas ao descriptografar usando os algoritmos "skcipher" e "aead". As otimizações eliminam o buffer excessivo de dados, mas criam riscos de sérias vulnerabilidades. Acredita-se que sua desativação resultará em uma redução de desempenho apenas ligeiramente significativa devido à inclusão de uma operação de cópia adicional para um buffer separado. Os patches foram aceitos pelo mantenedor da subsistema crypto API e incluídos na branch "cryptodev", onde são desenvolvidas funcionalidades para integrar nas futuras versões principais do kernel Linux.

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