安全研究团队(Dream Security)近期公开了 GNU InetUtils telnetd 服务的一个底层缓冲区溢出漏洞。该漏洞被追踪为 CVE-2026-32746,CVSS 评分高达 9.8。它允许攻击者在无需登录的情况下,直接获取系统的 Root 权限。
一、 漏洞核心:LINEMODE SLC 处理器溢出
该漏洞存在于 telnetd 处理 LINEMODE Set Local Characters (SLC) 选项协商的逻辑中。
-
触发点: 位于
telnetd/slc.c源码中的add_slc()函数。 -
原理: 当服务器接收到特制的、包含大量三元组(triplets)的 SLC 子选项请求时,程序未能对目标缓冲区(
slcbuf)进行边界检查。 -
后果: 攻击者可以通过发送大约 35 个以上“不支持”的 SLC 三元组,填满并溢出这个 104 字节的全局缓冲区,进而覆盖内存中的邻近变量,实现任意内存写入。
二、 为什么它是“毁灭性”的?
-
预认证攻击 (Pre-authentication): 漏洞发生在 Telnet 协议握手阶段。这意味着攻击者只需连接到 TCP 23 端口并发送特定载荷,在看到登录提示符(Login Prompt)之前就已经完成了攻击。
-
默认 Root 权限: 由于
telnetd通常由inetd或xinetd启动,且需要处理登录逻辑,它默认以 Root 身份运行。一旦溢出成功,攻击者将直接接管整个系统。 -
零交互: 攻击过程不需要任何用户操作,也不需要有效的账号密码。
三、 攻击链梳理
-
Step 1: 建立 TCP 连接(Port 23)。
-
Step 2: 发送精心构造的 SLC 选项协商包。
-
Step 3: 触发
add_slc函数中的缓冲区溢出。 -
Step 4: 劫持程序执行流,获取 Root Shell。
🛡️ 修复与建议
-
受影响版本: GNU InetUtils 所有版本(直至 2.7)。
-
处置方案:
-
最优先: 彻底禁用 Telnet 服务,切换到 SSH。
-
临时加固: 如果必须使用,请通过防火墙限制访问源 IP,或部署能够识别 SLC 子选项异常流量的 IPS 签名。
-
更新: 官方已于 2026 年 4 月初发布修复补丁,请务必更新到最新版本。
-














暂无评论内容