
توسيع ملحق kernel بشكل آمن في macOS
بدءًا من macOS 11، إذا تم تمكين ملحقات kernel التابعة لجهات خارجية (kexts)، فلا يمكن تحميلها في kernel عند الطلب. بدلاً من ذلك، يتم دمجها في مجموعة kernel المساعدة (AuxKC)، والتي يتم تحميلها أثناء عملية التمهيد. بالنسبة لأجهزة كمبيوتر Mac المزودة بسيليكون Apple، يتم تسجيل قياس AuxKC في LocalPolicy (بينما في الأجهزة السابقة، يوجد AuxKC على وحدة تخزين البيانات). وتتطلب إعادة بناء AuxKC موافقة المستخدم وإعادة تشغيل macOS لتحميل التغييرات إلى kernel، كما تتطلب تكوين التمهيد الآمن على مستوى التأمين المنخفض.
مهم: لم يعد من المستحسن تشغيل Kexts لـ macOS. تُخاطر Kexts بتكامل وموثوقية نظام التشغيل، وتنصح Apple المستخدمين بتحديد الحلول التي لا تتطلب توسيع kernel.
في Mac مزود بسيليكون Apple
يجب تمكين Kexts بشكل صريح لأجهزة كمبيوتر Mac المزودة بسيليكون Appleعن طريق الضغط على زر الطاقة عند بدء التشغيل للدخول في نمط One True Recovery (1TR)، ثم الرجوع إلى التأمين المنخفض وتحديد المربع لتمكين ملحقات kernel. يتطلب هذا الإجراء أيضًا إدخال كلمة سر المسؤول لتفويض الرجوع إلى إصدار أقدم. يجعل الجمع بين متطلبات 1TR وكلمة السر من الصعب على المهاجمين الذين يستخدمون البرامج فقط بدءًا من داخل macOS إدخال kexts في macOS، والتي يمكنهم استغلالها بعد ذلك للحصول على امتيازات kernel.
بعد أن يأذن المستخدم بتحميل kexts، يتم استخدام تحميل ملحقات Kernel المعتمدة من المستخدم أعلاه للسماح بتثبيت kexts. يستخدم التفويض المستخدم للتدفق أعلاه أيضًا لالتقاط تجزئة SHA-384 لقائمة kext المعتمدة من المستخدم (UAKL) في LocalPolicy. يعد برنامج إدارة kernel (kmd) مسؤولاً عن التحقق من صحة kexts الموجودة في UAKL لتضمينها في:
إذا تم تشغيل حماية تكامل النظام (SIP)، يتم التحقق من توقيع كل kext قبل تضمينه في AuxKC.
إذا تم إيقاف SIP، فلا يتم فرض توقيع kext.
يسمح هذا الأسلوب بتدفقات التأمين الأقل تقييدًا للمطورين أو المستخدمين الذين ليسوا جزءًا من برنامج مطوري Apple باختبار kexts قبل التوقيع عليها.
بعد إنشاء AuxKC، يتم إرسال القياس إلى Secure Enclave ليتم توقيعه وإدراجه في بنية بيانات Image4 والتي يمكن تقييمها بواسطة iBoot عند بدء التشغيل. وكجزء من إنشاء AuxKC، يتم أيضًا إنشاء إيصال kext. يحتوي هذا الإيصال على قائمة kexts التي تم تضمينها بالفعل في AuxKC، لأن المجموعة يمكن أن تكون مجموعة فرعية من UAKL إذا حدثت kexts محظورة. يتم تضمين تجزئة SHA-384 لهيكل بيانات AuxKC Image4 وإيصال kext في LocalPolicy. يتم استخدام تجزئة AuxKC Image4 للتحقق الإضافي بواسطة iBoot عند بدء التشغيل للمساعدة على التأكد من أنه لا يمكن بدء تشغيل ملف AuxKC Image4 أقدم مُوقّع من قِبل Secure Enclave باستخدام LocalPolicy أحدث. يتم استخدام إيصال kext بواسطة أنظمة فرعية مثل Apple Pay لتحديد ما إذا كان هناك أي kexts تم تحميلها حاليًا والتي يمكن أن تتداخل مع مصداقية macOS. وفي حالة وجودها، فقد لا تكون إمكانات Apple Pay ممكنة.
ملحقات النظام
يتيح macOS 10.15 للمطورين توسيع إمكانات macOS عن طريق تثبيت وإدارة ملحقات النظام التي تعمل في مساحة المستخدم بدلاً من العمل على مستوى kernel. من خلال التشغيل في مساحة المستخدم، تزيد ملحقات النظام من استقرار وأمن macOS. وبالرغم من تمتع kexts بطبيعتها بالوصول الكامل إلى نظام التشغيل بأكمله، فإن الملحقات التي تعمل في مساحة المستخدم لا تُمنح إلا الامتيازات اللازمة لتنفيذ وظيفتها المحددة.
يمكن للمطورين استخدام إطارات العمل بما في ذلك DriverKit و EndpointSecurity و NetworkExtension لكتابة برامج تشغيل USB والواجهات البشرية وأدوات أمن نقطة النهاية (مثل منع فقدان البيانات أو وكلاء نقطة النهاية الآخرين) و VPN وأدوات الشبكة، كل ذلك دون الحاجة إلى كتابة kexts. ولا ينبغي استخدام وكلاء الأمن التابعين لجهات خارجية إلا إذا استخدموا واجهات API هذه أو كانت لديهم خريطة طريق قوية للانتقال إليها وبعيدًا عن ملحقات kernel.
تحميل ملحقات Kernel المعتمدة من المستخدم
لتحسين الأمن، يجب موافقة المستخدم على تحميل ملحقات kernel المثبتة مع تثبيت macOS 10.13 أو بعده. وتُعرف هذه العملية باسم تحميل ملحق Kernel الذي يوافق عليه المستخدم. يلزم الحصول على تخويل من المسؤول للموافقة على ملحق kernel. لا تتطلب ملحقات Kernel تخويلاً في الحالات التالية:
عند تثبيتها على Mac مثبت عليه macOS 10.12 أو أقدم
إذا كانت بديلاً لملحقات معتمدة سابقًا
إذا كان مسموحًا لها بالتحميل دون موافقة المستخدم باستخدام أداة سطر الأوامر
spctlالمتاحة عند تمهيد Mac من recoveryOSإذا كان مسموحًا لها بالتحميل باستخدام تكوين خدمة إدارة الجهاز
على الأجهزة المثبت عليها macOS 10.13.2 أو أحدث، يمكن للمستخدمين استخدام خدمة إدارة الجهاز لتحديد قائمة ملحقات kernel التي يتم تحميلها دون موافقة المستخدم. يتطلب هذا الخيار جهاز Mac مسجل في خدمة إدارة الجهاز من خلال Apple School Manager، أو Apple Business Manager أو تسجيل إدارة الجهاز معتمد من قِبل المستخدم.