
scripts de prova de conceito para 2 RCEs não autenticados no Samba (CVE-2026-4408 & CVE-2026-4480) e escalada local de privilégios no TelnetD (CVE-2026-28372)
Este repositório contém scripts de prova de conceito para as vulnerabilidades apresentadas na palestra "Esquecidos, mas Não Desaparecidos: RCEs e LPEs não autenticados em serviços Linux legados" da Black Hat USA 2026 e da DEF CON 34.
Escalação local de privilégios no TelnetD: Atacantes sem privilégios podem explorar o recurso de variáveis de ambiente do TelnetD para obter um shell com privilégios de root. Por design e de acordo com sua RFC, o protocolo Telnet permite que seus clientes definam variáveis de ambiente para a sessão do shell. Esse recurso foi mal projetado do ponto de vista de segurança. O serviço permitia que clientes não autenticados definissem variáveis de ambiente para o processo telnetd em si e para todos os seus subprocessos. Um de seus subprocessos é o /usr/bin/login. Definir variáveis de ambiente como um cliente telnet remoto nos permitiu executar /usr/bin/login com a variável de ambiente “CREDENTIALS_DIRECTORY”. Isso faz com que o processo de login procure um arquivo chamado “login.noauth” no diretório especificado por “CREDENTIALS_DIRECTORY”. Se o arquivo contiver a string “sim”, o processo de login ignora a autenticação e fornece um shell para o cliente, executando como o usuário que o cliente especificou. Pode ser qualquer usuário, até mesmo root.
Execução remota de código não autenticada no Samba via SAMR: O Samba depende de comandos shell definidos em seu arquivo de configuração (smb.conf) para executar várias operações solicitadas por seus clientes, como adicionar um novo compartilhamento de rede, adicionar uma nova impressora e mais. Alguns desses comandos shell recebem parâmetros com base na solicitação enviada pelo cliente. Na maioria das vezes, os parâmetros são sanitizados e caracteres especiais são escapados antes de executar o comando para prevenir injeção de shell.
A vulnerabilidade reside na função “check_password_complexity" que formata uma string especificada pelo cliente em um comando shell sem sanitizá-la. A vulnerabilidade requer duas condições:
Para configurar o daemon RPC do samba (samba-dcerpcd) para usar NCACN_IP_TCP, ele precisa ser iniciado como um serviço de sistema separado e não como parte do serviço principal do samba. Além disso, a opção "rpc start on demand helpers” no arquivo de configuração precisa ser definida como “no”.
Execução remota de código não autenticada no Samba via SPOOLSS: a função generic_job_submit também formata uma string controlada pelo cliente em um comando shell sem sanitizá-la. A combinação das seguintes configurações resulta nesta vulnerabilidade:
Um cliente não autenticado pode solicitar acesso a um compartilhamento de impressora por meio da interface RPC spoolss. Em seguida, um trabalho de impressão pode ser enviado por meio da função RpcStartDocPrinter. O nome do documento especificado na solicitação será usado como o nome do trabalho formatado no parâmetro “%J” do comando. Chamar hRpcEndDocPrinter aciona generic_job_submit, que executará o “print command” da configuração após formatar o nome do trabalho sem sanitização. O código enviado pelo exploit será executado como o usuário "nobody". Se a configuração "valid users = @users" for adicionada à seção do compartilhamento de impressora, a exploração ainda funciona, mas requer credenciais válidas. Se a autenticação for realizada, o código enviado pelo exploit será executado como o usuário autenticado e não como "nobody".