← voltar
CVE-2026-24061criticalsob ataqueCWE-88

CVE-2026-24061

100Vexday Risk Score

Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.

ssvc Actcvss 9.8epss 98%
da publicação à arma0 dias
Publicada no NVD21 de jan.
1ª PoC3 de jul.
metasploit+5d
CISA KEV+5d
probabilidade de exploração
98%top 1% das CVEs
exploração observada
simCISA + VulnCheck
67 exploit(s) público(s)
Ação exigida pela CISAprazo federal: 2026-02-16

Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.

Resumo

O telnetd do GNU Inetutils (versões 1.9.3 até 2.7 inclusive) permite bypass completo de autenticação: um cliente telnet que envie a variável de ambiente USER com o valor "-f root" faz o servidor repassar esse valor para /usr/bin/login como argumento, e login(1) interpreta "-f" como login automático sem senha. O impacto é root remoto sem credenciais, mas a falha só existe onde telnetd está instalado, habilitado e acessível na rede — algo cada vez mais raro, exceto em appliances legados, dispositivos embarcados e infraestrutura industrial/educacional que ainda expõe telnet.

Detalhamento técnico

A causa é injeção de argumento (CWE-88) somada a bypass de autenticação (CWE-287). Em telnetd/telnetd.c, o daemon monta a linha de comando de login(1) a partir de um template com placeholders: em sistemas GNU/Linux o template é `PATH_LOGIN " -p -h %h %?u{-f %u}{%U}"`. O placeholder %u/%U é expandido em telnetd/utility.c pela função _var_short_name, que simplesmente lê a variável de ambiente USER recebida do cliente via a opção NEW-ENVIRON do protocolo telnet (RFC 1572) e a devolve sem nenhuma sanitização.

Se o cliente define USER='-f root', a expansão gera a linha de comando `login -p -h -f root`, e login(1) do shadow-utils trata "-f" como flag legítima para pular a autenticação e autenticar diretamente o usuário indicado — nesse caso root. O bug foi introduzido em 19/03/2015 (commit fa3245ac8c288b87139a0da8249d0a408c4dfb87) e entrou na release 1.9.3 (12/05/2015); esteve presente em todas as versões subsequentes até 2.7.

O próprio advisory do mantenedor (Simon Josefsson) nota que o problema é estrutural: qualquer campo expandido por _var_short_name que aceite dados não confiáveis é candidato a variante do mesmo bug — inclusive %h (remote_hostname), preenchido por getnameinfo()/gethostbyaddr(), cuja resposta também não é dado confiável em muitos ambientes.

Como é explorada

O vetor é a negociação da opção NEW-ENVIRON do protocolo telnet: o cliente `telnet` com a flag `-a` (ou `--login`) envia automaticamente o valor da variável de ambiente USER local para o servidor. Um atacante só precisa definir USER="-f root" no shell antes de conectar e usar essa flag ao chamar o cliente telnet contra o host-alvo — sem usuário, senha ou qualquer interação adicional. Isso casa com o vetor CVSS (AV:N/AC:L/PR:N/UI:N): nenhuma autenticação, nenhuma condição de rede além de alcançar a porta do telnetd (normalmente 23/tcp).

A única pré-condição relevante que a nota do CVSS não deixa óbvia é que o telnetd precisa estar instalado, habilitado (via inetd/xinetd ou standalone) e alcançável pela rede — coisa que não é padrão na maioria dos sistemas modernos, mas é comum em firmware de dispositivos, appliances de rede antigos, sistemas OT/ICS e distribuições que mantêm compatibilidade legada. login(1) também precisa suportar a flag -f com esse comportamento (típico do shadow-utils em GNU/Linux); a expansão do template varia em Solaris, onde o parâmetro -f não é usado da mesma forma.

A falha está no catálogo KEV da CISA, o que indica exploração confirmada em produção, e há módulo Metasploit e PoC pública — ou seja, a barreira técnica para exploração é mínima. O post do GreyNoise ("18 Hours of Unsolicited Houseguests") descreve varredura em massa na internet buscando telnetd exposto pouco depois da divulgação, sugerindo campanha oportunista de scanning e exploração automatizada, não ataque direcionado.

Versões

Afetadas
GNU Inetutils desde a versão 1.9.3 até a versão 2.7 (inclusive), no componente telnetd.
Corrigidas em
Nenhuma release numerada oficial do GNU Inetutils incorporando a correção era conhecida no momento das fontes consultadas; a correção existe como dois commits no repositório (fd702c02497b2f398e739e3119bed0b23dd7aa7b e ccba9f748aa8d50a38d7748e2e60362edd6a32cc). Distribuições como Debian publicaram avisos e pacotes corrigidos por ramo via debian-lts-announce — verifique a versão específica do pacote da sua distro, já que o histórico do Debian mostra que uma correção de 2019 foi reintroduzida por outro patch em 2020.

Como se proteger

A correção do mantenedor consiste em dois patches que sanitizam todas as variáveis expandidas no template de invocação de login(1), não só USER: https://codeberg.org/inetutils/inetutils/commit/fd702c02497b2f398e739e3119bed0b23dd7aa7b e https://codeberg.org/inetutils/inetutils/commit/ccba9f748aa8d50a38d7748e2e60362edd6a32cc. Até a publicação do advisory, o projeto não havia cortado uma release numerada que já incorporasse esses patches — o que existe são os commits e correções aplicadas por distribuições em seus próprios pacotes (ver o anúncio da Debian LTS). Aplique esses patches ou acompanhe o pacote da sua distribuição para confirmar que a versão instalada os incorpora.

Histórico importante para quem confia em "já corrigi isso há anos": a Debian aplicou um patch equivalente (0028-telnetd-Scrub-USER-from-environment.patch) em inetutils 1.9.4-7 (fevereiro de 2019), mas a correção subsequente para CVE-2020-10188 (RCE em telnetd), lançada em 1.9.4-7+deb10u1 (setembro de 2020, Debian 10), reintroduziu o bug do USER/-f — e isso se propagou para Debian e Ubuntu posteriores. Ou seja, a mitigação aplicada em 2019 não protege builds baseadas nos pacotes derivados dessa correção de 2020 sem reverificação.

O paliativo mais eficaz e de menor custo é simplesmente não expor telnetd: desabilitar o serviço (remover a linha telnet do inetd.conf/xinetd.d ou desinstalar o pacote inetutils-telnetd) e restringir a porta 23/tcp a redes de gerência confiáveis via firewall. Como workaround alternativo quando telnetd precisa continuar rodando, o próprio advisory sugere substituir o login(1) usado pelo telnetd por uma variante que não aceite a flag -f — mas isso é um controle compensatório frágil, não uma correção. Trocar apenas a senha de root ou desabilitar login root via SSH não mitiga nada: o bug ocorre inteiramente dentro do fluxo de autenticação do telnetd/login, sem depender de credenciais.

Como detectar

Telnet é protocolo em texto claro, então a exploração é visível em captura de tráfego: procure na negociação NEW-ENVIRON (opção telnet) o envio da variável USER contendo a string "-f" seguida de um nome de usuário, tipicamente "-f root", logo após o handshake inicial na porta 23/tcp. No host, logs de login(1)/PAM podem registrar uma sessão autenticada via flag -f sem prompt de senha correspondente, e logs do inetd/xinetd mostrarão a invocação do processo login com argumentos anômalos.

Não há assinatura única confiável além dessa string, porque "-f " é também uso legítimo de login(1) em alguns fluxos administrativos locais — o sinal forte é a origem remota (conexão telnet externa) combinada com o valor da variável USER controlado pelo cliente. Dado o histórico de scanning em massa reportado, presença de qualquer telnetd exposto à internet já deve ser tratada como indicador de risco, independente de log de tentativa específica.

Pesquisado e redigido com IA a partir do advisory do fornecedor e de análises públicas, com as fontes acima. Confira sempre a versão corrigida no advisory oficial antes de agir.
telnetd in GNU Inetutils through 2.7 allows remote authentication bypass via a "-f root" value for the USER environment variable.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Produtos afetados
GNU · Inetutils
PoCs públicas encontradas67
exploitdbwww.exploit-db.com/exploits/52524não verificadogithubgithub.com/jacubes/CVE-2026-24061191githubgithub.com/ekomsSavior/telnet_scan10githubgithub.com/tc4dy/CVE-2026-24061-PoC-Exploit6githubgithub.com/sh4den/CVE-2026-240616githubgithub.com/K3ysTr0K3R/CVE-2026-240611githubgithub.com/0xBlackash/CVE-2026-240611githubgithub.com/kyukazamiqq/CVE-2026-240610githubgithub.com/harygovind/CVE-2026-240610githubgithub.com/stoerti2/Abyssal0githubgithub.com/s-vx/CVE-2026-240610githubgithub.com/obrunolima1910/CVE-2026-240610githubgithub.com/athack-ctf/chall2026-telneted0githubgithub.com/ahmadsadeeq/TelnetdBypass-0githubgithub.com/anxs3c/CVE-2026-24061-GNU-InetUtils-telnetd0githubgithub.com/akpmarcelin/CVE-2026-24061-lab0githubgithub.com/Cosm3No1de/htb-orion-writeup0vulncheckvulncheck.com/xdb/ac3246834fa8não verificadovulncheckvulncheck.com/xdb/05724362c1bdnão verificadovulncheckvulncheck.com/xdb/07cf2b439a9dnão verificadovulncheckvulncheck.com/xdb/a4bd074b1edcnão verificadovulncheckvulncheck.com/xdb/df7878b9e432não verificadovulncheckvulncheck.com/xdb/cbd3b8d0a002não verificadovulncheckvulncheck.com/xdb/8036e0e4aba4não verificadovulncheckvulncheck.com/xdb/e8d1ce668bd6não verificadovulncheckvulncheck.com/xdb/36c2b1e5c7dcnão verificadovulncheckvulncheck.com/xdb/107b81fce065não verificadovulncheckvulncheck.com/xdb/e03fbca3008cnão verificadovulncheckvulncheck.com/xdb/fe99751b4742não verificadovulncheckvulncheck.com/xdb/4fa764154266não verificadovulncheckvulncheck.com/xdb/960fcc9bd89cnão verificadovulncheckvulncheck.com/xdb/e97f97610013não verificadovulncheckvulncheck.com/xdb/febad18902a8não verificadovulncheckvulncheck.com/xdb/5026f54ecaaenão verificadovulncheckvulncheck.com/xdb/f1b5a45051d3não verificadovulncheckvulncheck.com/xdb/a4152661a60cnão verificadovulncheckvulncheck.com/xdb/156d503457bcnão verificadovulncheckvulncheck.com/xdb/9f3ce3e6ca21não verificadovulncheckvulncheck.com/xdb/0736e00f5acenão verificadovulncheckvulncheck.com/xdb/f05b1fb3f5a1não verificadovulncheckvulncheck.com/xdb/0bab298804b5não verificadovulncheckvulncheck.com/xdb/e90c23bb7208não verificadovulncheckvulncheck.com/xdb/a7890dd1271enão verificadovulncheckvulncheck.com/xdb/193b14870c6cnão verificadovulncheckvulncheck.com/xdb/4a52280d4be4não verificadovulncheckvulncheck.com/xdb/eb6ce1666294não verificadovulncheckvulncheck.com/xdb/0ecc49d5a1f0não verificadovulncheckvulncheck.com/xdb/57ee6813a50enão verificadovulncheckvulncheck.com/xdb/bd5639365990não verificadovulncheckvulncheck.com/xdb/ec801fb614c1não verificadovulncheckvulncheck.com/xdb/53db998fa024não verificadocve_referencewww.openwall.com/lists/oss-security/2026/01/20/2#:~:text=root@...a%3A~%20USER='não verificadovulncheckvulncheck.com/xdb/01bf6bfce293não verificadovulncheckvulncheck.com/xdb/e14b60108668não verificadovulncheckvulncheck.com/xdb/037f09ac8bd2não verificadovulncheckvulncheck.com/xdb/281c93516f03não verificadovulncheckvulncheck.com/xdb/4fe4957aaafenão verificadovulncheckvulncheck.com/xdb/e8b0b325123fnão verificadovulncheckvulncheck.com/xdb/cdc425361e5anão verificadovulncheckvulncheck.com/xdb/ce38d836a6d4não verificadovulncheckvulncheck.com/xdb/6c64eec2246fnão verificadovulncheckvulncheck.com/xdb/2095407cd24enão verificadovulncheckvulncheck.com/xdb/1965f3150b25não verificadovulncheckvulncheck.com/xdb/9d90ab411f9cnão verificadovulncheckvulncheck.com/xdb/089b79c9b65cnão verificadovulncheckvulncheck.com/xdb/14ec796d456enão verificadovulncheckvulncheck.com/xdb/45d6d2515c7enão verificado
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.