
Prova de conceito de exploit para um estouro de buffer pré-autenticação no telnetd do GNU InetUtils (CVE-2026-32746), incluindo um ambiente de laboratório Docker e script de detecção para testes de segurança autorizados.
Execução remota de código pré-autenticação via estouro de buffer no manipulador SLC (Set Local Characters) do LINEMODE do telnetd do GNU InetUtils.
CVSS 3.1: 9.8 (Crítico) | CWE: CWE-120, CWE-787
A função add_slc() em telnetd/slc.c anexa 3 bytes por trinca SLC a um buffer fixo de 108 bytes (slcbuf) sem verificação de limites. Um atacante não autenticado pode enviar uma subopção SLC manipulada com 40+ trincas (códigos de função > 18/NSLC) durante a negociação de opções - antes de qualquer prompt de login - estourando o buffer, corrompendo o ponteiro slcptr no BSS e alcançando uma escrita arbitrária quando end_slc() usa o ponteiro corrompido.
# Construir o ambiente de laboratório vulnerável
docker compose up -d
# Detectar (não destrutivo)
python3 detect.py 127.0.0.1 2323
# Explorar (derruba o telnetd - confirma a vulnerabilidade)
python3 exploit.py 127.0.0.1 2323
# Limpar
docker compose down
A configuração Docker executa um contêiner Debian com inetutils-telnetd 2.4 sob xinetd, exposto na porta 2323. Totalmente isolado - nada toca no seu host.
WILL LINEMODE para disparar a negociação do LINEMODEDO LINEMODE e entra no processamento da subopção SLCadd_slc() enfileira uma resposta "não suportado" (3 bytes) para cada trinca em um buffer de 104 bytesslcptr e dados BSS adjacentesend_slc() escreve o marcador de fim da subopção via slcptr corrompido (escrita arbitrária)| Arquivo | Descrição |
|---|---|
exploit.py | PoC de crash/DoS |
Dockerfile | Laboratório telnetd vulnerável |
docker-compose.yml | Configuração de laboratório em um comando |
xinetd-telnet.conf | Configuração do serviço xinetd |
detect.py | Script de detecção de versão não destrutivo |
Para ir além do DoS, você precisaria:
slcbuf → slcptr)end_slc() escreve via slcptr corrompidoEsta ferramenta é fornecida apenas para testes de segurança autorizados e fins educacionais. Não use contra sistemas que você não possui ou para os quais não tem permissão explícita para testar. O autor não é responsável pelo uso indevido.
MIT