漏洞概况
| 属性 | 信息 |
|---|---|
| CVE编号 | CVE-2026-24061 |
| CVSS 3.1评分 | 9.8(严重) |
| 向量字符串 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 影响组件 | GNU InetUtils telnetd |
| 影响版本 | 1.9.3 ~ 2.7 |
| 修复版本 | 2.7-2 |
| 发现者 | Kyu Neushwaistein(Carlos Cortes Alvarez) |
| 披露时间 | 2026年1月20日 |
| 补丁发布 | 2026年1月20日 |
| CISA KEV | 已收录(存在活跃利用) |
CVE-2026-24061是一个影响GNU InetUtils telnetd服务的认证绕过漏洞。该漏洞允许未经认证的远程攻击者,通过向Telnet服务发送特制的环境变量,完全绕过认证机制并直接获取Root Shell。漏洞利用无需任何认证凭据、无需用户交互,且攻击复杂度极低。
该漏洞的根本原因可以追溯到2015年的一次代码提交,意味着这个严重级别的认证绕过在GNU telnetd中潜伏了超过11年才被发现。
漏洞原理
根因分析
漏洞的根本原因在于GNU telnetd处理USER环境变量时缺少输入验证。Telnet协议支持通过NEW_ENVIRON选项在客户端和服务端之间传递环境变量,其中包括USER变量用于标识连接用户。
telnetd在接收到USER环境变量后,会将其直接拼接到调用/usr/bin/login的命令行参数中,而没有对变量内容做任何清洗或校验。
正常流程中,telnetd会执行类似如下的命令来启动认证:
/usr/bin/login username
其中username来自客户端通过NEW_ENVIRON选项传递的USER变量值。
利用方式
攻击者通过Telnet客户端在NEW_ENVIRON协商阶段,将USER变量的值设置为-f root。telnetd接收后会构造如下命令:
/usr/bin/login -f root
login命令的-f参数的含义是"免认证登录"(fast login),用于受信任的程序绕过密码验证直接登录指定用户。这是login的合法功能,但被telnetd的输入处理缺陷间接触发了。
最终效果:攻击者无需输入任何密码,即获得目标系统的Root Shell,拥有完整的系统控制权。
攻击过程
整个攻击链可以简化为三步:
- 攻击者向目标的Telnet端口(默认TCP 23)发起连接
- 在Telnet协议的NEW_ENVIRON选项协商阶段,将USER变量设置为
-f root - telnetd将该值直接传递给
/usr/bin/login,触发免认证登录,攻击者获得Root Shell
从攻击者视角看,这是一个单步远程Root利用,不需要任何前置条件。
影响面评估
受影响系统
根据Shodan数据,全球约有21万台设备运行Telnet服务并暴露在互联网上。受影响的典型场景包括:
- 运行GNU InetUtils的Linux服务器
- 嵌入式系统和网络设备(路由器、交换机等)
- 工业控制系统和OT环境中的设备
- 老旧的开发、测试及备份服务器
- 长期未维护的遗留系统
利用后果
成功利用CVE-2026-24061后,攻击者可以:
- 以Root权限完全控制目标系统
- 窃取系统上的敏感数据和凭据
- 植入持久化后门
- 以被控主机为跳板横向渗透内网
- 造成服务中断或系统破坏
在野利用情况
CISA已将CVE-2026-24061列入其已知被利用漏洞目录(KEV)。GreyNoise监测到多个IP地址正在尝试利用该漏洞,攻击载荷中包含特征性的-f rootUSER环境变量注入。已知威胁组织"rwxrwx"被报告与该漏洞的活跃利用有关。
检测方法
版本确认
# 检查是否安装了 inetutils-telnetd
dpkg -l | grep inetutils-telnetd # Debian/Ubuntu
rpm -qa | grep inetutils # CentOS/RHEL
# 查看版本
telnetd --version 2>&1 | head -1
如果版本在1.9.3到2.7之间,且telnetd服务处于运行状态,则受此漏洞影响。
网络层检测
# 检查Telnet服务是否在运行
netstat -tlnp | grep :23
ss -tlnp | grep :23
# 使用Nmap扫描
nmap -sV -p 23 target_ip
日志分析
由于该漏洞绕过了正常认证流程,传统的认证失败日志可能不会产生告警。检查重点包括:
- 出现Root Shell会话但没有对应认证事件的Telnet连接
- 异常来源IP的Telnet会话记录
- 系统中新增的可疑用户、crontab任务或SSH密钥
需要注意的是,该攻击利用的是正常的进程执行路径,如果没有专门的Telnet会话监控,可能在日志中不会留下明显痕迹。缺少告警不等于没有被入侵。
主动验证
安全团队可使用公开的PoC工具对自有资产进行验证测试,但务必在授权范围内执行:
# 仅用于授权测试环境
python3 main.py -u target_ip -p 23
修复与加固
立即修复
将GNU InetUtils升级到2.7-2或更高版本,该版本对环境变量展开逻辑进行了清洗,阻止了恶意命令行参数的注入:
# Debian/Ubuntu
sudo apt update && sudo apt upgrade inetutils-telnetd
# CentOS/RHEL
sudo yum update inetutils
临时缓解
如果无法立即打补丁:
- 首选方案:直接禁用telnetd服务
- 使用防火墙限制Telnet端口的访问源IP
- 在网络层面阻断对TCP 23端口的入站连接
- 监控telnetd进程的login调用参数,对包含
-f参数的调用进行告警
长期建议
- 在所有环境中用SSH替代Telnet
- 对网络资产进行全面排查,识别所有暴露的Telnet服务(包括非标准端口)
- 嵌入式设备和IoT产品在出厂前审计是否残留Telnet调试接口
- 建立遗留协议的监控告警机制
总结
CVE-2026-24061是一个教科书式的输入验证缺失漏洞。一个未经清洗的环境变量,经过11年才被发现,却能直接导致远程免认证Root访问。这个案例再次说明:遗留协议和老旧组件中的安全债务,其风险往往被严重低估。
对于仍在使用Telnet的组织,建议将此漏洞作为推动协议迁移的契机。即使已经打补丁,暴露在网络上的Telnet服务本身就是一个高风险攻击面。