
CVE-2026-0073-Android-ADBD-bypass-POC汉化版
EVP_PKEY_cmp() → shell ADB non autoriséUne vulnérabilité critique de contournement de l'authentification existe dans le démon ADB d'Android (adbd), permettant à tout attaquant présent sur le réseau local d'obtenir un shell complet sur l'appareil cible, sans aucune autorisation de l'utilisateur.
La vulnérabilité se trouve dans la fonction adbd_tls_verify_cert() du fichier daemon/auth.cpp, où EVP_PKEY_cmp() est utilisée comme une valeur booléenne. Lorsque la clé stockée est une clé RSA et que le certificat client TLS fourni porte une clé non-RSA (EC P-256 ou Ed25519), EVP_PKEY_cmp() renvoie -1 (incompatibilité de type), ce qui est considéré comme vrai en C/C++, donc 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
Par défaut, le script essaie automatiquement EC P-256 → Ed25519 → EC/TLS 1.2 jusqu'à ce que cela réussisse.
攻击者目标(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 访问权限】
| Exigence |
|---|
⚠️ Remarque importante : la clé RSA doit se trouver dans le fichier /data/misc/adb/adb_keys, qui est rempli via l'appairage du débogage USB (en acceptant la boîte de dialogue « Autoriser le débogage USB ? »). L'appairage en débogage sans fil (adb pair) stocke la clé dans un emplacement différent (adb_known_hosts.pb), et ne répond donc pas à cette exigence.
adb shell getprop ro.build.version.security_patch
Testé et confirmé fonctionnel sur l'appareil suivant :
内核:6.1.23-android14-4-00257-g7e35917775b8-ab9964412
平台:Android 14(Android Studio 模拟器)
select() pour une prise en charge multiplateforme-vCVE-2026-0073-Android-ADBD-bypass-POC/
├── adb_tls_auth_bypass.py # 主漏洞利用脚本
└── README.md # 此文件
Cet outil est destiné uniquement à des tests de sécurité autorisés et à des fins éducatives. L'accès non autorisé à un système informatique est illégal. Assurez-vous d'obtenir une autorisation appropriée avant tout test. L'auteur décline toute responsabilité en cas d'utilisation abusive de ce logiciel.
EVP_PKEY_cmpSi ce projet vous a été utile pour vos recherches, merci de laisser une étoile ⭐
Valeur de retour de EVP_PKEY_cmp() | Signification | Vrai en C ? | Résultat |
|---|
1 | Les clés correspondent | ✅ | Autorisé (correct) |
0 | Les clés diffèrent | ❌ | Refusé (correct) |
-1 | Incompatibilité de type | ✅ | Autorisé (BUG) |
| Détails |
|---|
| Options de développement | Activées sur l'appareil cible |
| Débogage sans fil | Activé (ou ADB via le port TCP 5555) |
| Clé RSA stockée | L'appareil doit avoir été appairé au moins une fois via USB (/data/misc/adb/adb_keys) |
| Accès réseau | L'attaquant doit avoir accès au port TCP d'adbd |