jeffaf/cve-2026-32746
GitHub: jeffaf/cve-2026-32746
针对 GNU InetUtils telnetd LINEMODE SLC 缓冲区溢出漏洞(CVE-2026-32746)的概念验证工具,提供检测脚本和实验环境以验证预认证远程代码执行漏洞。
Stars: 0 | Forks: 0
# CVE-2026-32746 - telnetd LINEMODE SLC 缓冲区溢出
通过 GNU InetUtils telnetd 的 LINEMODE SLC(设置本地字符)处理程序中的缓冲区溢出实现预认证远程代码执行。
**CVSS 3.1:** 9.8 (严重) | **CWE:** CWE-120, CWE-787
## 概述
`telnetd/slc.c` 中的 `add_slc()` 函数在向固定 108 字节的缓冲区 (`slcbuf`) 追加每个 SLC 三元组的 3 字节时,未进行边界检查。未经认证的攻击者可以在选项协商期间(在任何登录提示之前)发送一个包含 40 个以上三元组(功能代码 > 18/NSLC)的精心构造的 SLC 子选项,从而导致缓冲区溢出,破坏 BSS 中的 `slcptr` 指针,并在 `end_slc()` 使用被破坏的指针时实现任意写入。
## 受影响范围
- GNU InetUtils telnetd 2.7 及之前版本(所有版本)
- 任何源自 BSD SLC 代码库的 telnetd
- 预计将于 2026 年 4 月 1 日发布补丁
## 此 PoC 的功能
- ✅ 触发缓冲区溢出并导致 telnetd 崩溃(确认漏洞存在)
- ❌ 不能实现代码执行(无 shellcode/ROP 链)
## 快速开始
```
# 构建漏洞实验环境
docker compose up -d
# 检测(非破坏性)
python3 detect.py 127.0.0.1 2323
# 利用(导致 telnetd 崩溃 - 确认漏洞)
python3 exploit.py 127.0.0.1 2323
# 清理
docker compose down
```
## 实验环境
Docker 设置运行一个包含 `inetutils-telnetd` 2.4 的 Debian 容器,并在 `xinetd` 管理下暴露于 2323 端口。完全隔离 - 不会影响您的主机。
## 工作原理
1. 连接到 telnetd 并完成初始选项协商
2. 客户端主动发送 `WILL LINEMODE` 以触发 LINEMODE 协商
3. 服务器响应 `DO LINEMODE` 并进入 SLC 子选项处理流程
4. 客户端发送一个包含 40-60 个功能代码 > 18 (NSLC) 的三元组的精心构造的 SLC 子选项
5. `add_slc()` 将每个三元组的“不支持”回复(3 字节)排队存入一个 104 字节的缓冲区
6. 在约 35 个三元组之后,缓冲区溢出,破坏 `slcptr` 和相邻的 BSS 数据
7. `end_slc()` 通过被破坏的 `slcptr` 写入子选项结束标记(任意写入)
8. telnetd 崩溃(或根据溢出内容产生更严重的后果)
## 文件
| 文件 | 描述 |
|------|-------------|
| `exploit.py` | PoC 崩溃/DoS 漏洞利用 |
| `Dockerfile` | 易受攻击的 telnetd 实验环境 |
| `docker-compose.yml` | 一键部署实验环境 |
| `xinetd-telnet.conf` | xinetd 服务配置 |
| `detect.py` | 非破坏性版本检测脚本 |
## 开发 RCE 利用链
要超越 DoS 攻击,您需要:
1. 映射 BSS 布局(`slcbuf` → `slcptr` 偏移量)
2. 通过被破坏的 `slcptr` 控制 `end_slc()` 写入的值
3. 覆盖 GOT 条目或函数指针
4. 将执行流重定向到 shellcode 或 ROP 链
## 参考资料
- [Dream 公告](https://dreamgroup.com/vulnerability-advisory-pre-auth-remote-code-execution-via-buffer-overflow-in-telnetd-linemode-slc-handler/)
- [GNU bug-inetutils 披露](https://lists.gnu.org/archive/html/bug-inetutils/2026-03/msg00031.html)
- [The Hacker News](https://thehackernews.com/2026/03/critical-telnetd-flaw-cve-2026-32746.html)
- [NVD](https://nvd.nist.gov/vuln/detail/CVE-2026-32746)
## 免责声明
本工具仅用于授权的安全测试和教育目的。请勿对您不拥有或未获得明确测试许可的系统使用。作者不对滥用行为负责。
## 致谢
- 漏洞发现者:Adiel Sol, Arad Inbar, Erez Cohen, Nir Somech, Ben Grinberg, Daniel Lubel (DREAM 安全研究团队)
## 许可证
MIT
标签:CISA项目, CVE-2026-32746, CVSS 9.8, CWE-120, CWE-787, Docker, DoS, GNU InetUtils, LINEMODE, PoC, Python, RCE, SLC, Telnetd, 二进制安全, 任意写, 内存破坏, 安全防御评估, 拒绝服务, 无后门, 暴力破解, 概念验证, 漏洞分析, 缓冲区溢出, 编程工具, 网络安全, 请求拦截, 路径探测, 远程代码执行, 逆向工具, 配置错误, 隐私保护, 预认证, 高危漏洞