
Lokaler Privilege-Escalation-Exploit für macOS (CVE-2016-1757), der eine Mach-IPC-Race-Condition nutzt, um SIP- und SUID-Schutzmechanismen zu umgehen und mehrere OS-X-Versionen angreift.
(c) fG! 2015, 2016, [email protected] - https://reverse.put.as
Ein universeller OS-X-Exploit für SUID, SIP und Binär-Entitlements (CVE-2016-1757).
Verwendung gegen eine SUID-Binärdatei:
./mach_race_server /bin/ps _compat_mode
for i in seq 0 1000000; do ./mach_race_client /bin/ps; done
Gegen eine berechtigte Binärdatei zur Umgehung von 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
Hinweis: Da der Dienstname nicht geändert wird, kann dieser Exploit nicht von Benutzer zu Root verknüpft und anschließend zur SIP-Umgehung verwendet werden, da bootstrap_register2 beim zweiten Mal fehlschlägt (der Dienst ist bereits vom ersten Lauf bei launchd registriert). Die Lösung besteht darin, zum Beispiel einen Parameter hinzuzufügen, um einen anderen Dienstnamen zu verwenden.
Hinweis 2: Es ist nicht nötig, dies in zwei separate Apps aufzuteilen; eine einzelne Binärdatei funktioniert, du musst nur einen Server und einen Client forken.
Referenzen:
http://googleprojectzero.blogspot.pt/2016/03/race-you-to-kernel.html
Getestet gegen Mavericks 10.10.5, Yosemite 10.10.5, El Capitan 10.11.2 und 10.11.3.
Behoben in El Capitan 10.11.4.
Sollte mit allen OS-X-Versionen funktionieren (abhängig davon, ob bootstrap_register2 in älteren Versionen vorhanden ist).
Alternative Implementierung mit bootstrap_create_server für ältere Versionen möglich.