Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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
Outils/GitHubGitHub/jaf0rk/cve-2023-20938
Sécurité AndroidAnalyse des VulnérabilitésExploitationExploitation de Binaires
GitHubjaf0rk/cve-2023-20938

CVE-2023-20938

Analyse technique et exploit de preuve de concept pour CVE-2023-20938, une vulnérabilité use-after-free dans le pilote Binder du noyau Android, permettant une escalade de privilèges locaux.

Voir le dépôt
13715il y a 4 moisPas encore vérifié

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

CVE-2023-20938

English

Analyse de la vulnérabilité

  1. Le client A et le client B établissent une connexion Binder via le gestionnaire de contexte servicemanager.
  2. A crée le nœud 0xbeef (node = binder_new_node(proc, fp);), B le référence via ref->target_node (node 0xbeef).
  3. B traite d'abord correctement target_node 0xbeef, en stockant la binder_transaction qui référence target_node 0xbeef dans la file d'attente des transactions de A (binder_enqueue_work_ilocked(&t->work, &proc->todo);), permettant à A de référencer à nouveau un pointeur pendant libéré.
  4. B utilise un offsets_size non aligné pour entrer dans le code de gestion d'erreur (IS_ALIGNED(tr->offsets_size, sizeof(binder_size_t))), ce qui fait que buffer_offset, encore à 0, est passé à la fonction binder_transaction_buffer_release, déclenchant ainsi la vulnérabilité.
  5. La fonction binder_transaction_buffer_release appelle binder_dec_node_nilocked via binder_dec_node, diminuant le compteur de références local_strong_refs du nœud 0xbeef. Mais l'instance du nœud possède plusieurs compteurs de références et listes de références ; la libération n'est déclenchée que lorsque tous ces compteurs sont mis à zéro.
  6. La fermeture du binder de B déclenche la fonction binder_cleanup_ref_olocked. À ce moment, binder_dec_node_nilocked est également appelée. Si binder_dec_node_nilocked renvoie true, le pointeur ref->node pointant vers le nœud (0xbeef) ne sera pas effacé.
  7. Ensuite, binder_free_ref est appelée, et dans binder_free_ref, le nœud 0xbeef est libéré.
  8. A va référencer à nouveau le nœud 0xbeef libéré dans la fonction binder_thread_read.

Remarque supplémentaire : Dans un environnement Android réel, une application ordinaire ne peut pas enregistrer de services via servicemanager, mais elle peut utiliser ITokenManager pour établir un lien entre deux processus. Ce cas de test utilise ITokenManager.

Télécharger l’outil