GraoMelo/CVE-2026-TDES-Wrap-PoC
GitHub: GraoMelo/CVE-2026-TDES-Wrap-PoC
针对 OpenSSL 4.0.0 中 TDES Wrap 密码堆缓冲区溢出漏洞(CVE-2026 草案)的概念验证与修复补丁项目。
Stars: 0 | Forks: 0
# CVE-2026-TDES-Wrap-PoC
## OpenSSL 4.0.0 中的 TDES Wrap 密码堆缓冲区溢出
**CVSS 3.1:** 8.2 (高危) — `AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H`
### 根本原因
TDES Wrap 密码 (`des-ede3-wrap`) 将其输出计算为 `inl + 16`
(根据 RFC 3217,包含 8 字节 AIV + 8 字节 SHA-1 ICV),但是:
1. **EVP 层** (`crypto/evp/evp_enc.c:690,801`) 将 `outsize` 预估为 `inl + 8`
用于 WRAP 模式 — 少了 8 字节
2. **Provider 检查** (`cipher_tdes_wrap.c:139,159`) 验证的是 `outsize < inl`
而不是 `outsize < inl + 16`
最终结果:每次调用 `EVP_EncryptUpdate`
使用 `des-ede3-wrap` 时都会触发 **8 字节的固定堆缓冲区溢出**。
### 影响
- 堆元数据损坏 → tcache 投毒 → 潜在的 RCE
- 已确认会导致 glibc 堆损坏崩溃 (`double free`, `invalid size`)
- 可通过 PKCS#11/KMIP wrap 导出 (SoftHSM, Vault) 被远程触达
### CI 状态
| 架构 | 状态 |
|-------------|--------|
| amd64 (x86_64) | [](https://github.com/GraoMelo/CVE-2026-TDES-Wrap-PoC/actions/workflows/ci-amd64.yml) |
| arm64 (aarch64) | [](https://github.com/GraoMelo/CVE-2026-TDES-Wrap-PoC/actions/workflows/ci-arm64.yml) |
| i686 (32-bit) | [](https://github.com/GraoMelo/CVE-2026-TDES-Wrap-PoC/actions/workflows/ci-i686.yml) |
每个 CI 工作流:
1. 使用 ASan 构建 **vanilla** 版本的 OpenSSL 4.0.0
2. 运行 PoC → 确认发生 heap-buffer-overflow(保存为 artifact)
3. 应用补丁并重新构建
4. 再次运行 PoC → 确认溢出被阻止(保存为 artifact)
### 目录说明
| 目录 | 描述 |
|-----------|-------------|
| `PoC/` | PoC 源码 (`tdes_wrap_overflow.c`) + Makefile |
| `patches/` | 修复补丁 (provider + EVP 层) |
| `evidence/` | ASan 崩溃日志(由 CI 生成,包含 3 种架构) |
| `scripts/` | 构建编排脚本 |
| `reports/` | 漏洞总结 + CVSS 向量 |
### 本地构建
```
# 构建带有 ASan 的原生 OpenSSL 4.0.0
./scripts/build-openssl.sh --arch amd64
# 运行 PoC(预期 ASan crash)
./scripts/run-poc.sh --mode vanilla --arch amd64
# 应用补丁
./scripts/build-patched.sh --arch amd64
# 再次运行 PoC(预期 PROV_R_OUTPUT_BUFFER_TOO_SMALL)
./scripts/run-poc.sh --mode patched --arch amd64
```
### 姊妹漏洞
相同的 EVP 根本原因也会影响带有 Padding 的 AES Wrap (RFC 5649):
**[CVE-2026-AES-Wrap-PAD-PoC](https://github.com/GraoMelo/CVE-2026-AES-Wrap-PAD-PoC)**
*由 Everton Melo (独立研究员) 发现并报告 — forense.melo@protonmail.com*
标签:Cutter, OpenSSL, 堆溢出, 安全测试工具, 客户端加密, 密码学库, 漏洞验证(PoC)