
Preuve de concept d'exploit pour CVE-2022-46689 (MacDirtyCow), une vulnérabilité d'élévation de privilèges dans le noyau XNU de macOS exploitant une race condition dans le copy-on-write pour modifier les fichiers racine en lecture seule.
Exemple de CVE-2022-46689 alias MacDirtyCow.
MacDirtyCow est une vulnérabilité d'élévation de privilèges dans macOS, similaire à la vulnérabilité Dirty COW sous Linux. La vulnérabilité réside dans le mécanisme de copie sur écriture (COW) utilisé par le noyau XNU de macOS. La vulnérabilité permet à un attaquant de modifier des fichiers système en lecture seule appartenant à root, ce qui pourrait permettre à un attaquant d'obtenir les privilèges root sur le système affecté.
La vulnérabilité est causée par une condition de concurrence (race condition) dans la manière dont le noyau XNU de macOS gère les opérations de copie sur écriture (COW) sur les pages mémoire. Lorsqu'une page mémoire est marquée en lecture seule, mais aussi marquée comme copie sur écriture, le noyau crée une nouvelle copie de la page lorsqu'une opération d'écriture est effectuée sur celle-ci. Cependant, il existe une petite fenêtre temporelle entre le moment où la page en lecture seule est vérifiée et celui où la nouvelle copie est créée, pendant laquelle un attaquant pourrait modifier la page en mémoire, contournant ainsi la restriction de lecture seule.
Ce code (poc.c) ouvre un fichier spécifié en argument de ligne de commande et le mappe en mémoire à l'aide de mmap(). Il crée ensuite une copie du fichier et modifie la copie mappée en mémoire en la remplissant avec le caractère 'A'. Enfin, le fichier original est écrasé avec la copie modifiée du fichier.