
Weaponized proof-of-concept for CVE-2026-0073, an Android adbd authentication bypass enabling zero-click remote root access via Wireless ADB, with post-exploitation modules for profiling, extraction, and persistence.
Weaponized Proof of Concept for the Wireless ADB TLS Auth Bypass vulnerability. Discovered by Barghest, Weaponized PoC by devtint.
CVE-2026-0073 is a critical cryptographic logic failure in the Android Debug Bridge daemon (adbd) that grants an unauthenticated attacker on the same local network Zero-Click remote root access.
This repository contains:
adb_tls_auth_bypass.py — Clean, standalone PoC for the STLS/TLS authentication bypass.main.py — Maximized exploitation framework with automated profiling, artifact extraction, and persistence injection.The vulnerability exists within daemon/auth.cpp inside the adbd_tls_verify_cert() function. When a client connects via Wireless ADB (STLS path), a mutual TLS 1.3 handshake occurs. The device compares the client's public key against stored authorized keys using OpenSSL's EVP_PKEY_cmp().
// daemon/auth.cpp — The Vulnerable Logic
if (EVP_PKEY_cmp(stored_key, client_key)) {
// EVP_PKEY_cmp returns:
// 1 = keys match
// 0 = keys differ
// -1 = type mismatch (RSA vs EC) ← BUG: truthy in C++
authorized = true;
}
EVP_PKEY_cmp() returns -1 (type mismatch).-1 evaluates to true.adbd logic interprets this -1 as a perfect match.This exploit only works on the Wireless Debugging STLS path, not the legacy adb tcpip path.
| Connection Mode |
|---|
192.168.1.34:38741)This means you are connecting to a legacy ADB TCP port (typically 5555). The legacy path uses the old RSA AUTH handshake — a completely different code path in adbd that is not affected by this CVE. You must connect to the Wireless Debugging port instead.
The framework (main.py) extends the core TLS bypass into a modular post-exploitation toolkit:
uid=0(root) pseudo-terminal.--profile): Instantly fingerprints the target OS, security patch level, SELinux enforcement, and active routing tables for internal network pivoting.--extract): Automatically exfiltrates highly sensitive system files (e.g., /data/misc/adb/adb_keys, /system/build.prop) directly over the bypass socket.--persist): Injects a rogue RSA public key into the target's authorized keys file. Once injected, the attacker retains permanent, fully authenticated access even if the CVE is later patched.Install Dependencies:
pip install cryptography
Locate Target: Find an Android device with Wireless Debugging enabled on your local subnet. Note the dynamic port from the device's Developer Options screen.
Execute the Exploit Framework:
# Interactive Shell (Default)
python main.py <IP> <PORT>
# Single Command Execution
python main.py <IP> <PORT> --cmd "id"
# Automated System Profiling
python main.py <IP> <PORT> --profile
# Stealth Artifact Extraction
python main.py <IP> <PORT> --extract
# Inject Permanent Backdoor Key
python main.py <IP> <PORT> --persist
Standalone PoC (minimal):
python adb_tls_auth_bypass.py <IP> <PORT> --cmd "id; whoami"
This repository is strictly for educational, red teaming, and authorized security testing purposes only. Unauthorized access to computer systems is illegal. The author assumes no liability for misuse of this information.
| Port |
|---|
| Protocol |
|---|
| Vulnerable? |
|---|
adb tcpip 5555 (legacy) | 5555 (fixed) | AUTH (RSA challenge) | ❌ No |
| Wireless Debugging (Android 11+) | Random (30000–50000) | STLS → TLS 1.3 | ✅ Yes |
| Error | Cause | Fix |
|---|
Connection refused | Port is closed / Wireless Debugging is OFF | Enable Wireless Debugging, use the correct dynamic port |
AUTH instead of STLS | Connected to legacy ADB TCP (port 5555) | Use the Wireless Debugging port, not 5555 |
SSLV3_ALERT_CERTIFICATE_UNKNOWN | Device is patched (May 2026+) | Target is not vulnerable — the fix is working |
timed out | Port is open but not responding correctly | Verify port, restart Wireless Debugging on device |