franckferman/CVE_2026_24061
GitHub: franckferman/CVE_2026_24061
针对 GNU InetUtils telnetd 的 NEW-ENVIRON 注入漏洞,提供无认证远程 Root 提权的 PoC 脚本及配套的检测规则与威胁情报生成工具。
Stars: 1 | Forks: 0
## 漏洞概述 **CVE-2026-24061** 是 **GNU InetUtils** 附带的 `telnetd` 守护进程中的一个严重认证绕过漏洞。该缺陷存在于初始协议握手期间对 Telnet `NEW-ENVIRON` 选项([RFC 1572](https://datatracker.ietf.org/doc/html/rfc1572))的处理中。 根本原因是在将客户端提供的环境变量传递给 `login(1)` 程序之前,未能对其进行清洗。当 Telnet 守护进程收到一个 `NEW-ENVIRON IS` 子协商数据包,其中包含值为 `-f root` 的变量 `USER` 时,它会将此未清洗的值直接传递给系统 `login` 二进制文件。 在 `login` 接受 `-f` 标志(强制登录而不进行密码验证)的系统上,这将导致向远程攻击者授予未经认证的 root 会话。 此类漏洞具有历史先例:SysV telnetd 中的 CVE-2001-0797 以及 1994 年著名的 Linux telnetd `-f` 绕过都利用了同样的根本性失误,即未能清洗传递给特权二进制文件的环境源参数。 **无需凭据。无需事先访问。单个网络数据包序列即可获取 root。** ## 技术分析 ### 根本原因 GNU InetUtils `telnetd` 处理 `NEW-ENVIRON`(选项代码 `0x27`,根据 RFC 1572)子协商以收集客户端提供的环境变量。这些变量被组装成参数向量,并在生成 `login(1)` 时传递给 `execve(2)`。 漏洞触发方式如下: 1. 服务器发送 `IAC DO NEW-ENVIRON`,向客户端请求环境变量。 2. 恶意客户端回复 `IAC WILL NEW-ENVIRON`。 3. 服务器接着发送 `IAC SB NEW-ENVIRON SEND IAC SE`。 4. 客户端发送注入的 payload: ``` IAC SB NEW-ENVIRON IS VAR "USER" VALUE "-f root" IAC SE ``` 5. `telnetd` 将 `login` 调用构造为 `login -f root`。 6. `login(1)` 将 `-f` 解释为“强制登录,跳过认证”,并在不需要密码的情况下登录指定用户(`root`)。 ### 协议层分解 | 步骤 | 方向 | Telnet 字节 (hex) | 含义 | |------|-----------|--------------------|---------| | 1 | S -> C | `FF FD 27` | IAC DO NEW-ENVIRON | | 2 | C -> S | `FF FB 27` | IAC WILL NEW-ENVIRON | | 3 | S -> C | `FF FA 27 01 FF F0` | IAC SB NEW-ENVIRON SEND IAC SE | | 4 | C -> S | `FF FA 27 00 00 55 53 45 52 01 2D 66 20 72 6F 6F 74 FF F0` | IAC SB NEW-ENVIRON IS VAR "USER" VALUE "-f root" IAC SE | ### 为什么 `-f root` 有效 许多 Linux 系统上的 `login(1)` 二进制文件接受 `-f
标签:CISA项目, CVE-2026-24061, GNU, InetUtils, POC, Python, RCE, Root权限, Telnet, Web报告查看器, 威胁模拟, 提权, 无后门, 无服务器架构, 未授权访问, 环境变量注入, 编程工具, 网络安全, 认证绕过, 远程代码执行, 逆向工具, 隐私保护