
Arma de prueba de concepto para CVE-2026-0073, una omisión de autenticación de adbd en Android que permite acceso root remoto de cero clics a través de ADB inalámbrico, con módulos de post-explotación para perfilado, extracción y persistencia.
Prueba de Concepto Armada para la vulnerabilidad de Bypass de Autenticación TLS de ADB Inalámbrico. Descubierta por Barghest, PoC Armado por devtint.
CVE-2026-0073 es un fallo crítico de lógica criptográfica en el daemon del Android Debug Bridge (adbd) que otorga a un atacante no autenticado en la misma red local acceso root remoto Zero-Click.
Este repositorio contiene:
adb_tls_auth_bypass.py — PoC limpio e independiente para el bypass de autenticación STLS/TLS.main.py — Marco de explotación maximizado con perfilado automatizado, extracción de artefactos e inyección de persistencia.La vulnerabilidad existe dentro de daemon/auth.cpp en la función adbd_tls_verify_cert(). Cuando un cliente se conecta mediante ADB Inalámbrico (ruta STLS), se produce un handshake mutuo TLS 1.3. El dispositivo compara la clave pública del cliente con las claves autorizadas almacenadas usando EVP_PKEY_cmp() de OpenSSL.
// daemon/auth.cpp — La Lógica Vulnerable
if (EVP_PKEY_cmp(stored_key, client_key)) {
// EVP_PKEY_cmp devuelve:
// 1 = las claves coinciden
// 0 = las claves difieren
// -1 = discrepancia de tipo (RSA vs EC) ← ERROR: verdadero en C++
authorized = true;
}
EVP_PKEY_cmp() devuelve -1 (discrepancia de tipo).-1 se evalúa como true.adbd interpreta este -1 como una coincidencia perfecta.Este exploit solo funciona en la ruta STLS de Depuración Inalámbrica, no en la ruta heredada adb tcpip.
| Modo de Conexión |
|---|
192.168.1.34:38741)Esto significa que te estás conectando a un puerto TCP ADB heredado (normalmente 5555). La ruta heredada usa el antiguo handshake RSA AUTH — una ruta de código completamente diferente en adbd que no está afectada por este CVE. Debes conectarte al puerto de Depuración Inalámbrica en su lugar.
El marco (main.py) extiende el bypass TLS central a un kit de herramientas modular de post-explotación:
uid=0(root).--profile): Identifica al instante el SO objetivo, el nivel de parche de seguridad, la aplicación de SELinux y las tablas de enrutamiento activas para el pivoteo en la red interna.--extract): Exfiltra automáticamente archivos de sistema altamente sensibles (p. ej., /data/misc/adb/adb_keys, /system/build.prop) directamente a través del socket de bypass.--persist): Inyecta una clave pública RSA falsa en el archivo de claves autorizadas del objetivo. Una vez inyectada, el atacante conserva acceso permanente y totalmente autenticado incluso si el CVE se parchea posteriormente.Instalar Dependencias:
pip install cryptography
Localizar el Objetivo: Encuentra un dispositivo Android con Depuración Inalámbrica habilitada en tu subred local. Anota el puerto dinámico desde la pantalla de Opciones de Desarrollador del dispositivo.
Ejecutar el Marco de Explotación:
# Shell Interactivo (Predeterminado)
python main.py <IP> <PUERTO>
# Ejecución de Comando Único
python main.py <IP> <PUERTO> --cmd "id"
# Perfilado Automatizado del Sistema
python main.py <IP> <PUERTO> --profile
# Extracción Sigilosa de Artefactos
python main.py <IP> <PUERTO> --extract
# Inyectar Clave de Puerta Trasera Permanente
python main.py <IP> <PUERTO> --persist
PoC Independiente (mínimo):
python adb_tls_auth_bypass.py <IP> <PUERTO> --cmd "id; whoami"
Este repositorio es estrictamente para fines educativos, de red teaming y de pruebas de seguridad autorizadas únicamente. El acceso no autorizado a sistemas informáticos es ilegal. El autor no asume ninguna responsabilidad por el mal uso de esta información.
| Puerto |
|---|
| Protocolo |
|---|
| ¿Vulnerable? |
|---|
adb tcpip 5555 (heredado) | 5555 (fijo) | AUTH (desafío RSA) | ❌ No |
| Depuración Inalámbrica (Android 11+) | Aleatorio (30000–50000) | STLS → TLS 1.3 | ✅ Sí |
| Error | Causa | Solución |
|---|
Connection refused | El puerto está cerrado / La Depuración Inalámbrica está DESACTIVADA | Habilita la Depuración Inalámbrica, usa el puerto dinámico correcto |
AUTH instead of STLS | Conexión al TCP ADB heredado (puerto 5555) | Usa el puerto de Depuración Inalámbrica, no el 5555 |
SSLV3_ALERT_CERTIFICATE_UNKNOWN | El dispositivo está parcheado (mayo de 2026+) | El objetivo no es vulnerable — la corrección está funcionando |
timed out | El puerto está abierto pero no responde correctamente | Verifica el puerto, reinicia la Depuración Inalámbrica en el dispositivo |