
Arme de preuve de concept pour CVE-2026-0073, un contournement d'authentification adbd sous Android permettant un accès root à distance sans clic via ADB sans fil, avec des modules de post-exploitation pour le profilage, l'extraction et la persistance.
Preuve de concept armée pour la vulnérabilité de contournement de l'authentification TLS ADB sans fil. Découverte par Barghest, PoC armé par devtint.
CVE-2026-0073 est une défaillance critique de logique cryptographique dans le démon Android Debug Bridge (adbd) qui accorde à un attaquant non authentifié sur le même réseau local un accès root à distance Zero-Click.
Ce dépôt contient :
adb_tls_auth_bypass.py — PoC propre et autonome pour le contournement de l'authentification STLS/TLS.main.py — Framework d'exploitation maximisé avec profilage automatisé, extraction d'artefacts et injection de persistance.La vulnérabilité existe dans daemon/auth.cpp au sein de la fonction adbd_tls_verify_cert(). Lorsqu'un client se connecte via ADB sans fil (chemin STLS), une poignée de main TLS 1.3 mutuelle se produit. L'appareil compare la clé publique du client aux clés autorisées stockées à l'aide de EVP_PKEY_cmp() d'OpenSSL.
// daemon/auth.cpp — La logique vulnérable
if (EVP_PKEY_cmp(stored_key, client_key)) {
// EVP_PKEY_cmp retourne :
// 1 = les clés correspondent
// 0 = les clés diffèrent
// -1 = incompatibilité de type (RSA vs EC) ← BUG : vrai en C++
authorized = true;
}
EVP_PKEY_cmp() retourne -1 (incompatibilité de type).-1 est évalué comme true.adbd interprète ce -1 comme une correspondance parfaite.Cette exploitation fonctionne uniquement sur le chemin STLS du débogage sans fil, pas sur le chemin hérité adb tcpip.
| Mode de connexion |
|---|
192.168.1.34:38741)Cela signifie que vous vous connectez à un port TCP ADB hérité (généralement 5555). Le chemin hérité utilise l'ancienne poignée de main RSA AUTH — un chemin de code complètement différent dans adbd qui n'est pas affecté par cette CVE. Vous devez vous connecter au port de débogage sans fil à la place.
Le framework (main.py) étend le contournement TLS de base en une boîte à outils modulaire de post-exploitation :
uid=0(root).--profile): Identifie instantanément le système d'exploitation cible, le niveau de correctif de sécurité, l'application de SELinux et les tables de routage actives pour le pivotement réseau interne.--extract): Exfiltre automatiquement les fichiers système hautement sensibles (par exemple, /data/misc/adb/adb_keys, /system/build.prop) directement via le socket de contournement.--persist): Injecte une clé publique RSA frauduleuse dans le fichier des clés autorisées de la cible. Une fois injectée, l'attaquant conserve un accès permanent et entièrement authentifié même si la CVE est corrigée ultérieurement.Installer les dépendances :
pip install cryptography
Localiser la cible : Trouvez un appareil Android avec le débogage sans fil activé sur votre sous-réseau local. Notez le port dynamique depuis l'écran Options pour développeurs de l'appareil.
Exécuter le framework d'exploitation :
# Shell interactif (par défaut)
python main.py <IP> <PORT>
# Exécution d'une commande unique
python main.py <IP> <PORT> --cmd "id"
# Profilage système automatisé
python main.py <IP> <PORT> --profile
# Extraction furtive d'artefacts
python main.py <IP> <PORT> --extract
# Injecter une clé de porte dérobée permanente
python main.py <IP> <PORT> --persist
PoC autonome (minimal) :
python adb_tls_auth_bypass.py <IP> <PORT> --cmd "id; whoami"
Ce dépôt est strictement destiné à des fins éducatives, de red teaming et de tests de sécurité autorisés uniquement. L'accès non autorisé aux systèmes informatiques est illégal. L'auteur décline toute responsabilité en cas d'utilisation abusive de ces informations.
| Port |
|---|
| Protocole |
|---|
| Vulnérable ? |
|---|
adb tcpip 5555 (hérité) | 5555 (fixe) | AUTH (défi RSA) | ❌ Non |
| Débogage sans fil (Android 11+) | Aléatoire (30000–50000) | STLS → TLS 1.3 | ✅ Oui |
| Erreur | Cause | Correctif |
|---|
Connection refused | Le port est fermé / le débogage sans fil est DÉSACTIVÉ | Activez le débogage sans fil, utilisez le bon port dynamique |
AUTH instead of STLS | Connecté au TCP ADB hérité (port 5555) | Utilisez le port de débogage sans fil, pas 5555 |
SSLV3_ALERT_CERTIFICATE_UNKNOWN | L'appareil est corrigé (mai 2026+) | La cible n'est pas vulnérable — le correctif fonctionne |
timed out | Le port est ouvert mais ne répond pas correctement | Vérifiez le port, redémarrez le débogage sans fil sur l'appareil |