Vulnerabilidades no PAM e libblockdev que permitem obter permissões de root no sistema

A Qualys identificou uma vulnerabilidade (CVE-2025-6019) na biblioteca libblockdev, que permite, por meio de manipulações do processo em segundo plano udisks, obter direitos de root no sistema. Um protótipo do exploit foi demonstrado no Ubuntu, Debian, Fedora e openSUSE Leap 15.

O processo udisks é utilizado na prática em todas as distribuições Linux e fornece uma interface D-Bus para realizar operações com unidades de armazenamento, como montagem e formatação. Para realizar ações com as unidades, o udisks chama funções da biblioteca libblockdev. O acesso ao udisks é, por padrão, permitido apenas a usuários que operam no contexto 'allow_active', ou seja, que têm acesso físico ao computador e estão conectados através do console local ou iniciaram uma sessão gráfica. Usuários que se conectam remotamente, por exemplo, via SSH, não estão nesse contexto e não podem explorar diretamente a vulnerabilidade.

Para contornar essa limitação, pode-se usar um truque que eleva o nível de autenticação para 'allow_active' através da manipulação do início de um serviço de usuário com a ferramenta systemctl, que o polkitd interpretará como um sinal de sessão local. A essência do método é que o polkitd determina a presença de acesso físico e atribui o nível 'allow_active' com base em indícios indiretos que podem ser influenciados. As limitações do método são que, para enganar o polkitd, é necessário que já exista uma sessão local de usuário ativo com acesso físico ao sistema.

O segundo método para obter direitos 'allow_active' é explorar a vulnerabilidade (CVE-2025-6018) nos PAM (Módulos de Autenticação Pluggable), que pesquisadores da Qualys identificaram ao analisar a vulnerabilidade no libblockdev. A vulnerabilidade permite que qualquer usuário, inclusive aqueles conectados via SSH, execute operações no contexto 'allow_active'. O problema é específico para as configurações do PAM no openSUSE Leap 15 e no SUSE Linux Enterprise 15, e se manifesta apenas nessas distribuições.

O módulo pam_env no openSUSE e SUSE tem a leitura do arquivo ~/.pam_environment ativada por padrão. Através deste arquivo, o usuário pode definir variáveis de ambiente XDG_SEAT=seat0 e XDG_VTNR=1, que serão interpretadas como um sinal de presença física do usuário, mesmo que o login seja realizado via SSH. O módulo pam_env também é chamado ao conectar via SSH no Debian 12 e Ubuntu 24.04 (no Debian 13 e Ubuntu 24.10+ ele é desativado), mas a definição de variáveis de ambiente nesses sistemas não pode ser usada para elevar o nível de acesso a “allow_active”, já que o pam_env é acionado na etapa final após o carregamento do módulo pam_systemd, e as variáveis de ambiente definidas não podem influenciar os parâmetros da sessão.

Quanto à vulnerabilidade no libblockdev, um invasor pode montar uma imagem de um sistema de arquivos arbitrário em modo loop, colocando um arquivo executável com a flag SUID root ou um dispositivo especial (/dev/mem) para acesso de baixo nível aos discos ou à memória. Para bloquear esses ataques, as imagens do sistema de arquivos são montadas pelo sistema com as flags nosuid e nodev, mas a vulnerabilidade no libblockdev permite montar a imagem sem as flags nosuid e nodev. A essência da vulnerabilidade é que o udisks permite que um usuário com nível de acesso “allow_active” altere o tamanho de seus sistemas de arquivos e o libblockdev, durante a execução dessa operação, monta temporariamente o sistema de arquivos sem definir as flags nosuid e nodev.

Assim, o ataque se resume à criação de um dispositivo loop a partir da imagem do sistema de arquivos XFS, que contém um arquivo suid root, iniciando a operação de alteração do tamanho do dispositivo loop e monitorando o momento em que ele é montado no diretório /tmp/blockdev*: victim> killall -KILL gvfs-udisks2-volume-monitor victim> udisksctl loop-setup --file ./xfs.image --no-user-interaction Arquivo mapeado ./xfs.image como /dev/loop0. victim> while true; do /tmp/blockdev*/bash -c ‘sleep 10; ls -l /tmp/blockdev*/bash’ && break; done 2>/dev/null & victim> gdbus call --system --dest org.freedesktop.UDisks2 --object-path /org/freedesktop/UDisks2/block_devices/loop0 --method org.freedesktop.UDisks2.Filesystem.Resize 0 ‘{}’ Erro: GDBus.Error:org.freedesktop.UDisks2.Error.Failed: Erro ao redimensionar o sistema de arquivos em /dev/loop0: Falha ao desmontar ‘/dev/loop0’ após redimensioná-lo: o alvo está ocupado -r-sr-xr-x. 1 root root 1406608 Jun 18 09:42 /tmp/blockdev.RSM429/bash victim> /tmp/blockdev*/bash -p victim# id uid=65534(nobody) gid=65534(nobody) euid=0(root) grupos=65534(nobody)

A vulnerabilidade no libblockdev foi corrigida até agora apenas na forma de patches. É possível verificar o estado da nova versão do pacote ou a preparação de uma correção nas distribuições nas seguintes páginas (se a página não estiver acessível, significa que os desenvolvedores da distribuição ainda não começaram a analisar o problema): Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo e Arch (1, 2). Como uma solução alternativa para bloquear a vulnerabilidade, é possível modificar a regra de acesso à operação "org.freedesktop.udisks2.modify-device" no polkit, alterando o valor do parâmetro "allow_active" de "yes" para "auth_admin" no arquivo /usr/share/polkit-1/actions/org.freedesktop.UDisks2.policy.

Além disso, pode-se destacar a vulnerabilidade revelada há algumas horas (CVE-2025-6020) no pacote linux-pam, que permite a um usuário local obter privilégios de root. O módulo pam_namespace não verificava adequadamente os caminhos de arquivo controlados pelo usuário, o que permitia, por meio de manipulações com links simbólicos e a criação de uma condição de corrida, conseguir a sobrescrição de arquivos privilegiados no sistema. A vulnerabilidade foi corrigida na versão linux-pam 1.7.1. É possível verificar o estado da nova versão do pacote ou a preparação de uma correção nas distribuições nas seguintes páginas: Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo e Arch (1, 2).

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