漏洞概述
CVE-2026-32746 是一个存在于 GNU inetutils telnetd 中的 BSS-based buffer overflow 漏洞,允许攻击者篡改约400字节的相邻变量。该漏洞源于1994年,与经典电影《黑客》同年诞生!
核心发现: 漏洞存在于 LINEMODE SLC (Set Linemode Characters) 协商处理程序中,服务器将数据存储在固定大小的全局数组中,没有进行边界检查。
影响范围
该漏洞影响范围极其广泛,包括:
- Linux发行版: Ubuntu, Debian (已验证)
- BSD系统: FreeBSD 13/15, NetBSD 10.1, DragonFlyBSD
- 苹果系统: Apple Mac Tahoe
- 网络设备: Citrix NetScaler, TrueNAS Core
- 其他: Haiku, uCLinux, libmtev
历史背景
有趣的是,同一个漏洞在2005年(CVE-2005-0469)曾在Telnet客户端中被发现并修复。而服务端的问题则被忽略了长达30年!
Telnet协议的LINEMODE功能源自RFC 1184,设计目的是在慢速网络上减少流量——那个时代网络按数据包计费!
技术细节
Telnet连接建立后会进行"协商":
- 服务器发送
IAC DO LINEMODE(0xFF 0xFD 0x22) - 客户端响应
IAC WILL LINEMODE(0xFF 0xFB 0x22) - 服务器发送SLC字符定义的三字节组:
IAC SB LINEMODE LM_SLC <triplets> IAC SE
问题出在:服务器将客户端返回的值存储在没有边界检查的全局数组中。
为什么2026年还有Telnet?
Telnet在生产环境中仍然存在,原因包括:
- 老旧硬件只支持Telnet(如某些工业CNC机器)
- 嵌入式系统没有SSH客户端
- 遗留系统的兼容性要求
相关漏洞
- CVE-2026-24061: Telnet环境变量共享功能的RCE漏洞
- CVE-2005-0469: Telnet客户端的同源漏洞(2005年)