
Code d'exploitation pour CVE-2016-1757
(c) fG! 2015, 2016, [email protected] - https://reverse.put.as
Un exploit OS X universel pour les SUID, SIP et les entitlements de binaires (CVE-2016-1757).
Utilisation contre un binaire SUID :
./mach_race_server /bin/ps _compat_mode
for i in seq 0 1000000; do ./mach_race_client /bin/ps; done
Contre un binaire ayant un entitlement pour contourner SIP :
./mach_race_server /System/Library/PrivateFrameworks/PackageKit.framework/Versions/A/Resources/system_shove _geteuid
for i in seq 0 1000000; do ./mach_race_client /System/Library/PrivateFrameworks/PackageKit.framework/Versions/A/Resources/system_shove; done
Note : étant donné que le nom du service n'est pas modifié, vous ne pouvez pas enchaîner cet exploit de l'utilisateur vers root, puis l'utiliser pour contourner SIP, car bootstrap_register2 échouera la deuxième fois (le service est déjà enregistré avec launchd lors du premier lancement). La solution est d'ajouter un paramètre pour utiliser un nom de service différent par exemple.
Note2 : il n'est pas nécessaire de faire deux applications séparées, un seul binaire fonctionne, il suffit de forker un serveur et un client.
Références :
http://googleprojectzero.blogspot.pt/2016/03/race-you-to-kernel.html
Testé sur Mavericks 10.10.5, Yosemite 10.10.5, El Capitan 10.11.2 et 10.11.3.
Corrigé dans El Capitan 10.11.4.
Devrait fonctionner avec toutes les versions d'OS X (dépend de l'existence de bootstrap_register2 sur les versions plus anciennes).
Une implémentation alternative avec bootstrap_create_server est possible pour les versions plus anciennes.