Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-0073-Android-client-TLS-auth-bypass — Traduzione dell'exploit Python originale in C | Kitploit
Strumenti/GitHubGitHub/m00ddy/cve-2026-0073-android-client-tls-auth-bypass
Sicurezza AndroidAnalisi delle VulnerabilitàExploitPenetration TestingSviluppo PayloadBinary Exploitation
GitHubm00ddy/cve-2026-0073-android-client-tls-auth-bypass

CVE-2026-0073-Android-client-TLS-auth-bypass

Traduzione dell'exploit Python originale in C

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository
22 mesi faNon ancora revisionato

CVE‑2026‑0073 è un bug logico nel demone ADB di Android (adbd) che consente a un attaccante di bypassare l'autenticazione reciproca TLS e aprire una shell remota su un dispositivo che ha il debug wireless abilitato ed è stato accoppiato con qualsiasi computer almeno una volta. La causa principale è una singola API usata in modo improprio: il valore di ritorno di EVP_PKEY_cmp() di OpenSSL viene trattato come un booleano invece che come un risultato a tre valori.

Flusso di autenticazione normale con il debug wireless ADB

Quando abilitiamo il debug wireless dalle impostazioni sviluppatore di Android, il dispositivo avvia un'istanza adbd che rimane in ascolto su una porta TCP casuale. Nota: questa funzionalità è stata introdotta a partire da Android 11.

il protocollo ha due fasi:

  1. negoziazione in chiaro: l'host si connette via TCP e scambia un handshake CNXN/STLS per concordare l'aggiornamento a TLS.
  2. autenticazione reciproca TLS 1.3:
    • il server adbd richiede che il client presenti un certificato
    • adbd estrae la chiave pubblica da quel certificato
    • quindi confronta la chiave con tutte le chiavi RSA autorizzate memorizzate in /data/misc/adb/adb_keys. le chiavi vengono inserite lì durante gli accoppiamenti precedenti (l'exploit richiede che qui sia presente almeno una chiave)
    • se le chiavi corrispondono, l'handshake riesce e l'host può inviare comandi shell come utente shell

il confronto delle chiavi viene eseguito usando EVP_PKEY_cmp(key1, key2) di OPENSSL, che restituisce

  • 1 --> le chiavi sono uguali
  • 0 --> le chiavi non sono uguali
  • -1 --> i tipi di chiave differiscono oppure si è verificato un errore

Il bug

nel file daemon/auth.cpp la funzione vulnerabile adb_tls_verify_cert() assomiglia a questo:

root@kitploit:~
int cmp = EVP_PKEY_cmp(stored_rsa_key, peer_key);
if (cmp) {     
    authorised = true;
}

poiché if(cmp) restituisce vero finché cmp è diverso da zero, un valore di ritorno pari a -1 da EVP_PKEY_cmp() porta all'autorizzazione. questo significa che, poiché la chiave memorizzata è RSA, quando il client presenta un certificato EC o ed25519, la funzione restituisce -1 e l'attaccante ottiene accesso autorizzato.

Sequenza dell'attacco

  1. target: un dispositivo Android con debug wireless abilitato e almeno una chiave RSA nel suo keystore (è stato accoppiato una volta, da chiunque).

  2. handshake in chiaro: l'attaccante si connette alla porta TCP di adbd e scambia CNXN/STLS.

  3. handshake TLS con certificato EC: l'attaccante genera una chiave EC P‑256 effimera e un certificato autofirmato. questa chiave è deliberatamente non RSA.

  4. confronto difettoso: EVP_PKEY_cmp(RSA, EC) restituisce ‑1 → if (cmp) è vero → adbd contrassegna il transport come autorizzato.

  5. post‑TLS: l'attaccante evita di inviare una CNXN host (che resetterebbe il transport) e apre direttamente uno stream shell: con una grande finestra delayed_ack.

Risultato: shell remota come utente shell, senza interazione da parte dell'utente, senza notifiche e senza bisogno di possedere alcuna chiave privata legittima.

Perché tradurlo in C?

Lo script Python richiede un interprete Python 3 e la libreria cryptography installata sulla macchina dell'attaccante. Un'implementazione in C viene compilata in un binario autonomo senza dipendenze esterne oltre a OpenSSL/libssl di sistema, che è presente praticamente su ogni sistema Linux per impostazione predefinita. Questo abbassa notevolmente la barriera alla distribuzione. Inoltre, un programma C può essere cross-compilato per qualsiasi architettura di destinazione (x86_64, ARM, MIPS). Questo significa che l'exploit potrebbe essere compilato ed eseguito direttamente su dispositivi embedded come router, Raspberry Pi o persino un altro dispositivo Android che funge da attaccante, senza bisogno di un ambiente Python. E un binario C compilato può essere privato dei simboli, compattato (UPX) ed è opaco senza un disassembler, il che lo rende più furtivo di uno script Python.

Demo

esecuzione dell'exploit: fornisci IP e PORTA dell'interfaccia di debug wireless e ottieni una shell sul dispositivo.

root@kitploit:~
docker build -t adb_bypass .
docker run -it --network host adb_bypass <IP> <PORT>

far apparire una calcolatrice

root@kitploit:~
am start -n com.sec.android.app.popupcalculator/com.sec.android.app.popupcalculator.Calculator

Nota sull'uso degli LLM

È stato usato un LLM per tradurre l'exploit da Python a C; l'exploit originale è qui. la traduzione non era corretta 1:1 e abbiamo affrontato molti problemi; per questo è stato necessario un ciclo di analisi del codice e di conversazione avanti e indietro per correggere i bug nella traduzione e arrivare a un exploit completo e funzionante.

Scarica lo strumento