Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-0073-Android-client-TLS-auth-bypass — traduction de l'exploit python original en C | Kitploit
Outils/GitHubGitHub/m00ddy/cve-2026-0073-android-client-tls-auth-bypass
Sécurité AndroidAnalyse des VulnérabilitésExploitationTests d'IntrusionDéveloppement de Charges UtilesExploitation de Binaires
GitHubm00ddy/cve-2026-0073-android-client-tls-auth-bypass

CVE-2026-0073-Android-client-TLS-auth-bypass

traduction de l'exploit python original en C

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt
22il y a 3 moisPas encore vérifié

CVE‑2026‑0073 est un bug logique dans le démon ADB d'Android (adbd) qui permet à un attaquant de contourner l'authentification mutuelle TLS et d'ouvrir un shell distant sur un appareil dont le débogage sans fil est activé et qui a été appairé avec un ordinateur au moins une fois. La cause racine est une seule API mal utilisée : la valeur de retour de EVP_PKEY_cmp() d'OpenSSL est traitée comme un booléen au lieu d'un résultat à trois valeurs.

Flux d'authentification normal avec le débogage sans fil ADB

Lorsque nous activons le débogage sans fil depuis les paramètres développeur Android, l'appareil démarre une instance adbd qui écoute sur un port TCP aléatoire. Remarque : cette fonctionnalité a été introduite à partir d'Android 11.

le protocole comporte deux phases :

  1. Négociation en texte clair : l'hôte se connecte via TCP et échange une poignée de main CNXN/STLS pour convenir de la mise à niveau vers TLS.
  2. Authentification mutuelle TLS 1.3 :
    • le serveur adbd exige que le client présente un certificat
    • adbd extrait la clé publique de ce certificat
    • il compare ensuite la clé avec toutes les clés RSA autorisées stockées dans son /data/misc/adb/adb_keys. Les clés y sont placées lors des appairages précédents (l'exploit nécessite qu'au moins une clé s'y trouve)
    • si les clés correspondent, la poignée de main réussit et l'hôte peut envoyer des commandes shell en tant qu'utilisateur shell la comparaison des clés est effectuée à l'aide de EVP_PKEY_cmp(key1, key2) d'OpenSSL, qui retourne
  • 1 --> les clés sont égales
  • 0 --> les clés ne sont pas égales
  • -1 --> les types de clés diffèrent, ou une erreur est survenue

Le bug

dans le fichier daemon/auth.cpp, la fonction vulnérable adb_tls_verify_cert() ressemble à ceci :

root@kitploit:~
int cmp = EVP_PKEY_cmp(stored_rsa_key, peer_key);
if (cmp) {     
    authorised = true;
}

étant donné que if(cmp) est vrai tant que cmp est non nul, une valeur de retour de -1 de EVP_PKEY_cmp() conduit à l'autorisation. Cela signifie que puisque la clé stockée est RSA, lorsque le client présente un certificat EC ou ed25519, la fonction retourne -1 et l'attaquant obtient un accès autorisé.

Séquence d'attaque

  1. cible : un appareil Android avec le débogage sans fil activé et au moins une clé RSA dans son trousseau de clés (il a été appairé une fois, par n'importe qui).

  2. poignée de main en texte clair : l'attaquant se connecte au port TCP adbd et échange CNXN/STLS.

  3. poignée de main TLS avec certificat EC : l'attaquant génère une clé EC P‑256 éphémère et un certificat auto-signé. Cette clé est délibérément non-RSA.

  4. comparaison erronée : EVP_PKEY_cmp(RSA, EC) retourne -1 → if (cmp) est vrai → adbd marque le transport comme autorisé.

  5. post-TLS : l'attaquant évite d'envoyer un CNXN hôte (qui réinitialiserait le transport) et ouvre directement un flux shell: avec une grande fenêtre delayed_ack.

Résultat : Shell distant en tant qu'utilisateur shell, sans interaction utilisateur, sans notification et sans besoin de posséder une clé privée légitime.

Pourquoi le traduire en C ?

Le script Python nécessite un interpréteur Python 3 et la bibliothèque cryptography installée sur la machine attaquante. Une implémentation en C se compile en un binaire autonome sans dépendances externes au-delà de OpenSSL/libssl du système, présent sur pratiquement tous les systèmes Linux par défaut. Cela abaisse considérablement la barrière de déploiement. De plus, un programme C peut être cross-compilé pour n'importe quelle architecture cible (x86_64, ARM, MIPS). Cela signifie que l'exploit pourrait être compilé et exécuté directement sur des appareils embarqués comme des routeurs, des Raspberry Pi, ou même un autre appareil Android agissant comme attaquant, sans environnement Python nécessaire. Et un binaire C compilé peut être dédépouillé de ses symboles, compressé (UPX), et est opaque sans désassembleur, ce qui le rend plus furtif qu'un script Python.

Démo

exécution de l'exploit : fournissez l'IP et le PORT de l'interface de débogage sans fil et vous obtenez un shell sur l'appareil.

root@kitploit:~
docker build -t adb_bypass .
docker run -it --network host adb_bypass <IP> <PORT>

ouverture d'une calculatrice

root@kitploit:~
am start -n com.sec.android.app.popupcalculator/com.sec.android.app.popupcalculator.Calculator

Note sur l'utilisation d'un LLM

Un LLM a été utilisé pour traduire l'exploit de Python vers C, l'exploit original est ici. La traduction n'était pas correcte 1:1 et nous avons rencontré de nombreux problèmes, donc une boucle d'analyse de code et d'échanges aller-retour a été nécessaire pour corriger les bugs de la traduction et aboutir à un exploit fonctionnel complet.

Télécharger l’outil