Vulnerabilidades no snapd e Rust Coreutils que permitem obter privilégios de root no Ubuntu

A empresa Qualys identificou uma vulnerabilidade (CVE-2026-3888) na interação entre snap-confine e systemd-tmpfiles no Ubuntu, permitindo que um usuário sem privilégios obtenha acesso root ao sistema. O problema se manifesta no Ubuntu na configuração padrão a partir da versão 24.04. No Ubuntu 16.04-22.04, a vulnerabilidade pode ser explorada em configurações não padrão que imitam o comportamento de versões mais recentes da distribuição. No Ubuntu, a correção está disponível na atualização de pacote snapd lançada ontem. No snapd, o problema foi resolvido na atualização 2.75.

A vulnerabilidade surge devido à interação inadequada entre as utilidades snap-confine e systemd-tmpfiles, executadas com privilégios elevados. A utilidade snap-confine configura um ambiente sandbox para a execução de aplicativos snap, enquanto o systemd-tmpfiles realiza a limpeza automática de arquivos e diretórios temporários. Por padrão, a utilidade systemd-tmpfiles está configurada para remover todos os arquivos e diretórios antigos em /tmp, o que pode ser explorado por um invasor para substituir o diretório /tmp/.snap no momento após sua remoção pela utilidade systemd-tmpfiles, mas antes de ser recriado pelo comando snap-confine.

O ataque consiste em aguardar o início do processo de limpeza de arquivos temporários, substituir o diretório /tmp/.snap após sua remoção e colocar uma cópia modificada das bibliotecas em /tmp/.snap/usr/lib/x86_64-linux-gnu.exchange. O invasor pode precisar de vários dias aguardando o início do systemd-tmpfiles, pois no Ubuntu 24.04 o processo de limpeza é iniciado uma vez a cada 10 dias, e nas versões mais recentes, uma vez a cada 30 dias. Após a substituição do diretório, o invasor consegue inicializar um novo ambiente sandbox usando o snap-confine.

Durante a formação do ambiente sandbox no diretório temporário /tmp/.snap, o invasor aguarda o momento certo e renomeia /tmp/.snap/usr/lib/x86_64-linux-gnu.exchange para /tmp/.snap/usr/lib/x86_64-linux-gnu, assim substituindo as bibliotecas e garantindo sua montagem bind com permissões de root. Assim, o invasor obtém controle sobre as bibliotecas compartilhadas e o carregador ld.so, executados no ambiente sandbox do snap, e pode executar código arbitrário com permissões de root ao iniciar qualquer programa suid que utilize ligação dinâmica.

Tendo acesso root em um ambiente sandbox isolado pelo AppArmor e um filtro de chamadas de sistema baseado em seccomp, um atacante pode copiar /bin/bash para o diretório /var/snap/$SNAP/common/ e definir suas permissões como "04755" (suid root). Apesar de as permissões serem alteradas dentro do ambiente sandbox, o arquivo com permissões modificadas está disponível também no sistema principal, portanto, para obter acesso root completo, basta executar /var/snap//common/bash como um usuário não privilegiado a partir do ambiente de sistema normal.

Foi identificada uma vulnerabilidade na ferramenta uutils coreutils (Rust Coreutils), equivalente ao pacote GNU Coreutils, escrito em Rust. A vulnerabilidade permite que um usuário não privilegiado obtenha permissões de root no sistema. O problema foi detectado durante a revisão de mudanças no Ubuntu 25.10 e foi contornado antes do lançamento do Ubuntu 25.10 através da entrega de /usr/bin/gnurm em vez de uutils rm. No pacote uutils, o problema foi resolvido na versão 0.3.0 do uutils coreutils, sem menção na lista de mudanças à correção da vulnerabilidade (foi indicado que rm, du, chmod e chgrp implementaram um método seguro de contorno de caminhos).

O problema é causado por uma condição de corrida na ferramenta 'rm', permitindo que um usuário local substitua o conteúdo de um diretório por um link simbólico durante a remoção de um arquivo controlado pelo usuário pelo processo 'rm' com permissões de root. Entre outras coisas, a vulnerabilidade pode ser explorada durante a execução diária de um script cron /etc/cron.daily/apport, que é executado com permissões de root e remove recursivamente o conteúdo do diretório /var/crash, que é gravável por todos os usuários do sistema.

Durante a remoção recursiva de diretórios, a ferramenta rm primeiro verifica todos os diretórios e depois os remove de forma sequencial na ordem inversa, chamando a função rmdir(). Se for realizada a substituição do diretório pai por um link simbólico imediatamente após a verificação desse diretório, mas antes da verificação dos diretórios filhos contidos nele, a operação resultará na remoção do diretório para o qual o link simbólico aponta. Dessa forma, é possível não apenas remover qualquer arquivo no sistema, mas também elevar privilégios através da remoção do diretório /tmp/snap-private-tmp/$SNAP/tmp/.snap para substituir o conteúdo do ambiente sandbox do pacote snap (o método de obtenção de root é semelhante à primeira vulnerabilidade).

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