
استغلال تصعيد الامتيازات المحلية لنظام macOS (CVE-2016-1757) باستخدام حالة سباق في Mach IPC لتجاوز حمايات SIP وSUID، مستهدفًا إصدارات متعددة من OS X.
(c) fG! 2015, 2016, [email protected] - https://reverse.put.as
استغلال OS X شامل يستهدف SUID وSIP والصلاحيات المدمجة في الثنائيات (CVE-2016-1757).
الاستخدام ضد ثنائي SUID:
./mach_race_server /bin/ps _compat_mode
for i in `seq 0 1000000`; do ./mach_race_client /bin/ps; done
ضد ملف ثنائي مخوّل لتجاوز 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
ملاحظة: نظرًا لأن اسم الخدمة لا يتم تعديله، لا يمكنك ربط هذا الاستغلال من مستخدم إلى جذر ثم استخدامه لتجاوز SIP، لأن bootstrap_register2 سيفشل في المرة الثانية (الخدمة مسجلة بالفعل مع launchd من التشغيل الأول). الحل هو إضافة معامل لاستخدام اسم خدمة مختلف على سبيل المثال.
ملاحظة 2: ليست هناك حاجة لتحويل هذا إلى تطبيقين منفصلين، فملف ثنائي واحد يعمل، كل ما تحتاجه هو عمل fork لخادم وعميل.
المراجع:
http://googleprojectzero.blogspot.pt/2016/03/race-you-to-kernel.html
تم اختباره على Mavericks 10.10.5 وYosemite 10.10.5 وEl Capitan 10.11.2 و10.11.3.
تم إصلاحه في El Capitan 10.11.4.
يفترض أن يعمل مع جميع إصدارات OS X (يعتمد ذلك على وجود bootstrap_register2 في الإصدارات الأقدم).
من الممكن تطبيق بديل باستخدام bootstrap_create_server للإصدارات الأقدم.