
Arma de prova de conceito para CVE-2026-0073, uma bypass de autenticação do adbd no Android que permite acesso root remoto zero-click via ADB sem fio, com módulos de pós-exploração para perfilamento, extração e persistência.
Prova de Conceito Armada para a vulnerabilidade de bypass de autenticação TLS do ADB sem fio. Descoberta por Barghest, PoC armada por devtint.
A CVE-2026-0073 é uma falha crítica de lógica criptográfica no daemon do Android Debug Bridge (adbd) que concede a um atacante não autenticado na mesma rede local acesso root remoto Zero-Click.
Este repositório contém:
adb_tls_auth_bypass.py — PoC limpa e autônoma para o bypass de autenticação STLS/TLS.main.py — Framework de exploração maximizado com perfilamento automatizado, extração de artefatos e injeção de persistência.A vulnerabilidade existe em daemon/auth.cpp dentro da função adbd_tls_verify_cert(). Quando um cliente se conecta via ADB sem fio (caminho STLS), ocorre um handshake TLS 1.3 mútuo. O dispositivo compara a chave pública do cliente com as chaves autorizadas armazenadas usando EVP_PKEY_cmp() do OpenSSL.
// daemon/auth.cpp — A Lógica Vulnerável
if (EVP_PKEY_cmp(stored_key, client_key)) {
// EVP_PKEY_cmp retorna:
// 1 = chaves correspondem
// 0 = chaves diferem
// -1 = incompatibilidade de tipo (RSA vs EC) ← BUG: verdadeiro em C++
authorized = true;
}
EVP_PKEY_cmp() retorna -1 (incompatibilidade de tipo).-1 é avaliado como true.adbd interpreta esse -1 como uma correspondência perfeita.Este exploit funciona apenas no caminho STLS do Wireless Debugging, não no caminho legado adb tcpip.
| Modo de Conexão |
|---|
192.168.1.34:38741)Isso significa que você está se conectando a uma porta TCP ADB legada (normalmente 5555). O caminho legado usa o antigo handshake RSA AUTH — um caminho de código completamente diferente no adbd que não é afetado por esta CVE. Você deve se conectar à porta do Wireless Debugging.
O framework (main.py) estende o bypass TLS principal em um kit de ferramentas modular de pós-exploração:
uid=0(root).--profile): Identifica instantaneamente o SO alvo, nível de patch de segurança, aplicação do SELinux e tabelas de roteamento ativas para pivô em rede interna.--extract): Exfiltra automaticamente arquivos de sistema altamente sensíveis (ex.: /data/misc/adb/adb_keys, /system/build.prop) diretamente pelo socket de bypass.--persist): Injeta uma chave pública RSA maliciosa no arquivo de chaves autorizadas do alvo. Uma vez injetada, o atacante mantém acesso permanente e totalmente autenticado, mesmo que a CVE seja corrigida posteriormente.Instalar Dependências:
pip install cryptography
Localizar o Alvo: Encontre um dispositivo Android com Wireless Debugging habilitado na sua sub-rede local. Anote a porta dinâmica na tela de Opções do desenvolvedor do dispositivo.
Executar o Framework de Exploração:
# Shell Interativo (Padrão)
python main.py <IP> <PORTA>
# Execução de Comando Único
python main.py <IP> <PORTA> --cmd "id"
# Perfilamento Automatizado do Sistema
python main.py <IP> <PORTA> --profile
# Extração Furtiva de Artefatos
python main.py <IP> <PORTA> --extract
# Injetar Chave de Backdoor Permanente
python main.py <IP> <PORTA> --persist
PoC Autônoma (mínima):
python adb_tls_auth_bypass.py <IP> <PORTA> --cmd "id; whoami"
Este repositório é estritamente para fins de educação, red teaming e testes de segurança autorizados. O acesso não autorizado a sistemas de computador é ilegal. O autor não assume responsabilidade pelo uso indevido destas informações.
| Porta |
|---|
| Protocolo |
|---|
| Vulnerável? |
|---|
adb tcpip 5555 (legado) | 5555 (fixa) | AUTH (desafio RSA) | ❌ Não |
| Wireless Debugging (Android 11+) | Aleatória (30000–50000) | STLS → TLS 1.3 | ✅ Sim |
| Erro | Causa | Correção |
|---|
Connection refused | Porta fechada / Wireless Debugging DESATIVADO | Habilite o Wireless Debugging, use a porta dinâmica correta |
AUTH instead of STLS | Conectado ao TCP ADB legado (porta 5555) | Use a porta do Wireless Debugging, não 5555 |
SSLV3_ALERT_CERTIFICATE_UNKNOWN | Dispositivo corrigido (maio de 2026+) | O alvo não é vulnerável — a correção está funcionando |
timed out | Porta aberta, mas não respondendo corretamente | Verifique a porta, reinicie o Wireless Debugging no dispositivo |