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
desc_race-1 — exploit desc_race pour iOS 15.0 - 15.1.1 (avec primitives stables de lecture/écriture du noyau) (CVE-2021-30955) | Kitploit
Outils/GitHubGitHub/st-rnd/desc_race-1
Sécurité iOSAnalyse des VulnérabilitésExploitationSécurité MobileExploitation de Binaires
GitHubst-rnd/desc_race-1

desc_race-1

exploit desc_race pour iOS 15.0 - 15.1.1 (avec primitives stables de lecture/écriture du noyau) (CVE-2021-30955)

Voir le dépôt
2il y a 4 ansPas 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

desc_race

Exploit « desc_race » (CVE-2021-30955) pour iOS 15.0 - 15.1.1 (avec primitives stables de lecture/écriture noyau)

Méthode d'exploitation

  1. Augmenter la capacité du tableau IOSurfaceClient à 0x2000, l'objectif est d'écrire un pointeur dont le contenu est totalement contrôlé, puis d'utiliser les interfaces IOSurfaceRootUserClient pour obtenir une lecture/écriture noyau. La taille du tableau est de 0x2000 * 8 octets, il réside donc dans la grande map de KHEAP_KEXT, identique à KHEAP_DEFAULT.

  2. Allouer ensuite un tampon noyau de 0x4000 octets à l'aide d'un kmsg assistant avec un descripteur ool de 0x4000 octets qui sera écrasé par l'arrière. Puis déclencher le bug avec le message alloué, appelé kmsg à double copyin, placé juste derrière le tampon noyau assistant. Ce message contient un descripteur de ports ool dont le compte est de 0x2000, il sera donc assez proche du tableau IOSurfaceClient.

  3. Vous devriez ensuite recevoir le message assistant. Si la course réussit, le descripteur de ports ool sera divulgué et nous pourrons localiser l'adresse du tableau IOSurfaceClient.

  4. Allouer à nouveau un tampon noyau de 0x4000 octets, qui occupera le tampon noyau susmentionné. Cette fois, je construis un faux en-tête kmsg avec un corps approprié. Puis je détruis le kmsg à double copyin, le noyau commencera avec notre faux en-tête. J'utilise un faux mach_msg_ool_descriotpor_t et je déclenche

vm_copy_discard() avec une copie totalement contrôlée. Lors de la destruction de la copie, les lignes les plus précieuses se trouvent dans _vm_map_entry_unlink_ll :

root@kitploit:~
1
2
3
4
5
6
#define _vm_map_entry_unlink_ll(hdr, entry)                             \
	MACRO_BEGIN                                                     \
	(hdr)->nentries--;                                              \
	(entry)->vme_next->vme_prev = (entry)->vme_prev;                \
	(entry)->vme_prev->vme_next = (entry)->vme_next;                \
	MACRO_END

L'entry est sous notre contrôle, ce qui nous donne une primitive parfaite de lecture/écriture. Je l'utilise pour écrire un pointeur contrôlé dans le tableau IOSurfaceClient, puis j'obtiens une lecture/écriture noyau combinée aux interfaces IOSurfaceRootUserClient.

J'ai lu le post de bazad « One byte to rule them all » à maintes reprises pendant le développement de cet exploit, et j'ai utilisé la même technique, la falsification de vm_copy_t, dans son exploit. Mais il y a quelques différences.

  1. XNU signe le message et nous ne pouvons plus recevoir un kmsg corrompu.

  2. Dans la procédure de destruction, je définis mapping_in_progress de vm_object pour laisser le noyau tourner en boucle, évitant ainsi un panic dû à la vérification de zone.

Un grand merci à bazad pour son excellent post, à WangTielei pour m'avoir informé que les interfaces IOSurfaceClient ne sont désormais plus valides pour la primitive de lecture/écriture, et à pedantcoder pour sa gentillesse.

Télécharger l’outil