MartinPSDev/CVE-2026-0073-Android-ADBD-bypass-POC

GitHub: MartinPSDev/CVE-2026-0073-Android-ADBD-bypass-POC

利用Android adbd中EVP_PKEY_cmp的类型混淆缺陷,通过EC/Ed25519密钥与存储的RSA密钥不匹配实现TLS认证绕过,获取未授权ADB shell的PoC漏洞利用工具。

Stars: 10 | Forks: 3

# 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) [![License](https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge)](LICENSE)
## 🔥 概述 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`。 ``` // Vulnerable code pattern in daemon/auth.cpp if (EVP_PKEY_cmp(peer_key, stored_key)) { // ← BUG: -1 is truthy! authorized = true; } ``` | `EVP_PKEY_cmp()` 返回值 | 含义 | 在 C 中为真值? | 结果 | |:-:|---|:-:|---| | `1` | 密钥匹配 | ✅ | 已授权(正确) | | `0` | 密钥不同 | ❌ | 已拒绝(正确) | | **`-1`** | **类型不匹配** | **✅** | **已授权(BUG)** | ## ⚡ 快速开始 ### 安装依赖 ``` pip install cryptography ``` ### 运行漏洞利用 ``` # Interactive shell python adb_tls_auth_bypass.py # 执行单个命令 python adb_tls_auth_bypass.py 192.168.1.42 37521 --cmd "id" # Verbose 模式 (查看完整的协议跟踪) 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 ``` ## 🎯 漏洞利用流程 ``` Attacker Target (adbd) │ │ │──── TCP connect ──────────────────►│ │──── CNXN (cleartext) ────────────►│ │◄─── STLS (TLS upgrade request) ──│ │──── STLS reply ──────────────────►│ │ │ │════ TLS 1.3 Handshake ════════════│ │ (EC P-256 client cert presented) │ │ EVP_PKEY_cmp(EC, RSA) → -1 │ │ -1 is truthy → authorized=true │ │════════════════════════════════════│ │ │ │◄─── CNXN (device info) ──────────│ │──── OPEN "shell:" ───────────────►│ │◄─── OKAY ────────────────────────│ │◄──► WRTE/OKAY (shell I/O) ──────►│ │ │ [FULL SHELL ACCESS] │ ``` ## 📋 前置条件 | 要求 | 详情 | |---|---| | **开发者选项** | 在目标设备上已启用 | | **无线调试** | 已启用(或在端口 5555 上通过 TCP 进行 ADB) | | **已存储的 RSA 密钥** | 设备必须至少进行过一次 USB 配对 (`/data/misc/adb/adb_keys`) | | **网络访问权限** | 攻击者必须能够访问 adbd TCP 端口 | ## 🛡️ 受影响版本 - **Android 14** (AOSP) — ✅ 已确认存在漏洞 - **Android 15** (AOSP) — 可能存在漏洞(未打补丁的版本) - 特定供应商的版本可能有所不同(Samsung One UI、Pixel 等) ### 如何检查补丁级别 ``` adb shell getprop ro.build.version.security_patch ``` ## 🧪 测试环境 已测试并确认可运行于: ``` Kernel: 6.1.23-android14-4-00257-g7e35917775b8-ab9964412 Platform: Android 14 (Android Studio Emulator) ``` ## 🔧 相比原版的改进 此 fork 包含多项增强功能: - ✅ **多密钥回退** — 自动尝试 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 # Main exploit script └── README.md # This file ``` ## ⚠️ 免责声明 本工具仅供**授权的安全测试和教育目的**使用。未经授权访问计算机系统是违法行为。在测试前请务必获取适当的授权。作者不对本软件的滥用承担任何责任。 ## 📚 参考资料 - [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)
**如果这对你有所帮助,请点个 ⭐**
标签:0day, ADB, adbd, Android, C/C++, CISA项目, cryptography库, CSV导出, CVE-2026-0073, DSL, EC P-256, Ed25519, EVP_PKEY_cmp, Exploit, PE 加载器, PoC, Python, RSA密钥不匹配, TLS认证绕过, WiFi ADB, 事务性I/O, 安全测试工具, 提权, 无后门, 暴力破解, 未授权访问, 目录枚举, 移动安全, 类型混淆, 编程工具, 网络安全, 远程代码执行, 逆向工具, 隐私保护