GNU Inetutils 漏洞集
2026-01-23 16:43:52 阿炯

高危预警:一键直通 Root Telnetd 远程认证绕过漏洞分析


一键直通 Root Telnetd 远程认证绕过漏洞分析


GNU Inetutils Telnetd 远程认证绕过漏洞(CVE-2026-24061)于2026年1月21日被安全社区披露。该漏洞允许攻击者在无需任何凭证的情况下,通过精心构造的恶意环境变量,直接绕过身份验证并获取远程系统的 Root 权限。由于 GNU Inetutils 是众多 Linux 发行版(包括 Debian、Ubuntu、Kali Linux 等)的标准组件,且 CVSS 评分高达 9.8(Critical),该漏洞的影响范围极广,危害极大。对于仍在使用 Telnet 服务的遗留系统而言,这是一次“灭顶之灾”。

即使是存在了数十年的古老协议和工具依然可能隐藏着致命的逻辑漏洞。环境变量处理不当导致的参数注入是一个历史悠久的话题,但在 2026 年依然能击穿现代系统的防线。对于运维和安全人员来说,“最小化服务”原则永不过时——如果不再需要 Telnet 就彻底关掉它吧。

技术原理分析

这个漏洞的本质是一个经典的参数注入(Argument Injection)问题,发生在 telnetd 将用户输入传递给系统 login 程序的过程中。

1、环境变量传递
Telnet 协议(参考 RFC 1572)支持在连接建立阶段传递环境变量。客户端可以将本地的环境变量(如 USER, DISPLAY 等)发送给服务端。

2、漏洞触发点
在受影响的 GNU Inetutils 版本(1.9.3 <= v <= 2.7)中,telnetd 服务端程序在接收到客户端发送的 USER 环境变量后,没有进行足够的安全过滤或校验,就将其直接用于构建调用 /usr/bin/login 的参数列表。
通常情况下,login 程序的调用类似于:
execv("/bin/login", ["login", "-h", host, "-p", "--", user_provided_username, NULL]);

然而,/bin/login 程序支持一个特殊的参数 -f (force)。当指定 -f username 时,login 程序会跳过密码验证,直接以该用户身份登录(通常仅限 root 调用或特定配置下生效,但 telnetd 通常以 root 权限运行)。

3、注入机制
攻击者通过恶意构造 USER 环境变量,使其包含 -f root。
例如,如果攻击者将 USER 设置为 -f root,telnetd 可能会将其解析并传递给 login。
最终,telnetd 执行的命令实际上变成了:
/bin/login ... -f root

由于 telnetd 本身是以 root 权限运行的,它有权限告知 login 程序:“我已经验证过这个用户了,请让他强制登录为 root”。login 程序听从指令,从而导致了认证绕过。

影响范围

该漏洞影响 GNU Inetutils 的多个版本,具体如下:
影响版本:1.9.3 <= GNU Inetutils <= 2.7
受影响系统:
Debian 12 / 13
Ubuntu 24.04 及更高版本
Kali Linux
其他默认安装并启用了 GNU inetutils-telnetd 的 Linux 发行版

注意:使用 BSD 变体或其他非 GNU 实现的 telnetd 可能不受此特定漏洞影响。

漏洞复现(PoC)

利用该漏洞非常简单,甚至不需要编写复杂的 Exploit 代码,只需利用标准 Telnet 客户端的特性即可。
复现步骤:
环境准备:启动一个易受攻击的 inetutils-telnetd 服务。
攻击命令:在攻击机上执行以下命令:
# 设置 USER 环境变量为 '-f root' 并发起连接
# -a 选项尝试自动登录
USER='-f root' telnet -a <target_ip>

预期结果:
如果目标存在漏洞将不会看到常规的 Login: 或 Password: 提示符,而是直接进入目标系统的 Root Shell:
Trying 192.168.10.10...
Connected to 192.168.10.100.
Escape character is '^]'.
root@vulnerable-server:~# id
uid=0(root) gid=0(root) groups=0(root)

防护与加固建议

鉴于漏洞利用门槛极低且危害巨大,建议管理员立即采取以下措施:
1、优先方案:停止使用 Telnet
Telnet 是明文传输协议,本质上是不安全的。无论是否存在此 CVE,都应彻底弃用。
动作:关闭并卸载 telnetd 服务。
替代:全面迁移至 SSH (OpenSSH)。

2、临时方案:升级补丁
如果业务必须依赖 Telnet,请立即升级 GNU Inetutils 至安全版本。
修复版本:GNU Inetutils > 2.7
操作:apt-get update && apt-getinstall inetutils-telnetd

# 验证版本
telnetd --version

3、网络层阻断
在防火墙层面禁止外部 IP 对 23 端口(Telnet 默认端口)的访问,仅允许受信任的内网 IP 访问,以降低攻击面。