
تجاوز TCC
كطالب، لدي وصول محدود إلى الأجهزة التي يمكنني اختبار هذه الثغرة فيها. الإصدارات التي اختبرتها حتى الآن هي MacOS 12.3.1، MacOS 12.3، MacOS 12.0، MacOS 10.15.7، و MacOS 11.6.1. تعمل الثغرة على جميع الإصدارات التي تم اختبارها.
التأثير: قد يتمكن تطبيق ضار من تجاوز بعض تفضيلات الخصوصية
الوصف: عند حذف ملف تنفيذي أثناء تشغيله، يصبح بإمكان العملية تجاوز قيود تسجيل الشاشة بالإضافة إلى بعض إعدادات الإمكانية، ألا وهي حقن ضغطات المفاتيح (باستخدام metasploit).
الأسباب المحتملة: لا يستطيع macOS العثور على أذونات الملف التنفيذي الأصلي للعملية وبالتالي لا يمنع تسجيل الشاشة. ومع ذلك، من المحير أن الكاميرا والميكروفون لا يزالان مقيدين بشكل صحيح.
التفاصيل:
tccutil reset All إلى ظهور مطالبة إذن -- كما يؤدي الوصول إلى الكاميرا أو الميكروفون إلى ظهور مطالبة إذن.تعمل على تثبيت جديد لنظام macOS.
تشغيل POC من src/POC.sh سينتج لقطة شاشة بدون مطالبة TCC وتتضمن جميع النوافذ المرئية للمستخدم. يجب تشغيل البرنامج النصي أحيانًا عدة مرات (بحد أقصى 3) لإنتاج لقطة شاشة.
تم اكتشاف هذه الثغرة لأول مرة من قبلي أثناء تجربة التسليم عبر الويب في Metasploit. وجدت أنه بحذف الملف التنفيذي المُسقط فور فتح غلاف meterpreter، يكتسب الغلاف قدرات تكون عادة مقفلة خلف مطالبة TCC. هذه الثغرة تسمح أيضًا للمهاجم بحقن ضغطات المفاتيح. ومع ذلك، لست مطور Objective-C وبالتالي لم أتمكن من إنشاء POC خاص بي. لا يزال يمكن تحقيق هذا التأثير من خلال Metasploit.
src/POC.sh -- برنامج نصي شل: ينسخ screenshot، ينفذه، ويحذفه أثناء تشغيله.
src/screenshot -- ملف تنفيذي Mach-O: يلتقط لقطة شاشة ويحفظها في src/screenshot.png. تم تجميعه من src/screenshot.m.
src/screenshot.m -- الاعتماد على theevilbit للكود الأساسي. التعديل الوحيد الذي قمت به هو إضافة نوم لمدة 3 ثوانٍ قبل لقطة الشاشة للسماح بوقت كافٍ لحذف الملف التنفيذي قبل التقاط لقطة الشاشة.