ذاكرات التخزين المؤقتة الموثوق بها
تُعدّ ذاكرة التخزين المؤقت الموثوق بها الثابتة أحد الكائنات المضمنة في سلسلة التمهيد الآمن، وهي عبارة عن سجل موثوق به يضم جميع ثنائيات Mach-O التي يتم التحكم فيها في وحدة تخزين النظام المُوقَّعة. ويتم تمثيل كل Mach-O بتجزئة دليل تعليمات برمجية. للبحث الفعال، يتم فرز هذه التجزئات قبل إدراجها في ذاكرة التخزين المؤقت للثقة. دليل التعليمات البرمجية عبارة عن نتيجة عملية التوقيع التي يتم تنفيذها بواسطة codesign(1)
. لفرض ذاكرة التخزين المؤقت للثقة، يجب أن يظل SIP ممكّنًا. لتعطيل فرض ذاكرة التخزين المؤقت للثقة على Mac مزود بسيليكون Apple، يجب تكوين التمهيد الآمن إلى التأمين الأقل تقييدًا.
عند تنفيذ ملف ثنائي (سواء كجزء من إنتاج عملية جديدة أو تعيين تعليمة برمجية قابلة للتنفيذ في عملية موجودة)، يتم استخراج دليل التعليمات البرمجية الخاص به وتجزئته. إذا تم العثور على التجزئة الناتجة في ذاكرة التخزين المؤقت الموثوق بها، فسيتم منح التعيينات القابلة للتنفيذ التي تم إنشاؤها للملف الثنائي امتيازات النظام الأساسي، أي أنها قد تمتلك أي استحقاق ويتم تنفيذها دون إجراء مزيد من التحقق من صحة التوقيع. وهذا على النقيض من أجهزة كمبيوتر Mac المستندة إلى Intel، حيث يتم نقل امتيازات النظام الأساسي إلى محتوى نظام التشغيل بواسطة شهادة Apple التي توقّع على الملفات الثنائية. (لا تُقيّد هذه الشهادة أي استحقاقات قد يمتلكها الملف الثنائي.)
يجب أن تحتوي الملفات الثنائية غير المرتبطة بالنظام الأساسي (على سبيل المثال، التعليمات البرمجية التابعة لجهات خارجية موثوقة) على سلاسل شهادات صالحة لتنفيذها، كما أن الاستحقاقات التي قد تمتلكها تكون مُقيّدة بملف تعريف التوقيع الصادر عن برنامج Apple Developer Program إلى المطور.
يتم توقيع كل الملفات الثنائية الواردة مع macOS باستخدام معرّف نظام أساسي. في Mac المزود برقاقات Apple، يُستخدم هذا المعرّف للإشارة إلى أنه على الرغم من توقيع Apple على الملف الثنائي، إلا أن تجزئة دليل التعليمات البرمجية يجب أن تكون موجودة في ذاكرة التخزين المؤقت الموثوقة لتنفيذها. وفي أجهزة كمبيوتر Mac المستندة إلى Intel، يُستخدم معرّف النظام الأساسي لتنفيذ عملية إبطال مستهدفة لثنائيات من إصدار أقدم من macOS؛ ويساعد هذا الإلغاء المستهدف على منع تنفيذ هذه الثنائيات على الإصدارات الأحدث.
تقوم ذاكرة التخزين المؤقت الموثوق بها الثابتة بقفل مجموعة من الثنائيات بشكل كامل إلى إصدار معين من macOS. ويساعد هذا السلوك على منع إدخال الثنائيات المُوقَّعة من قِبَل Apple بشكل شرعي من أنظمة التشغيل القديمة إلى أنظمة تشغيل أحدث لتمكين المهاجم من اكتساب المزايا.
تعليمات النظام الأساسي البرمجية الواردة من خارج نظام التشغيل
تُجري Apple تثبيتًا مسبقًا لبعض الثنائيات التي يتم توقيعها بمعرّف نظام أساسي — على سبيل المثال، Xcode ومجموعة أدوات التطوير. وحتى مع ذلك، ما يزال مسموحًا بتنفيذها مع وجود امتيازات النظام الأساسي على أجهزة Mac المزودة برقاقات Apple وتلك المزودة بشريحة T2. نظرًا لأنه يتم تثبيت برنامج النظام الأساسي هذا مسبقًا بشكل مستقل عن macOS، فإنه لا يخضع لسلوكيات الإلغاء التي تفرضها ذاكرة التخزين المؤقت الموثوق بها الثابتة.
ذاكرات التخزين المؤقتة الموثوق بها القابلة للتحميل
تُجري Apple تثبيتًا مسبقًا لحِزم برامج معينة مع ذاكرات تخزين مؤقتة موثوق بها قابلة للتحميل. وتحتوي ذاكرات التخزين المؤقتة هذه على نفس بنية البيانات الموجودة لدى ذاكرة التخزين المؤقتة الموثوق بها الثابتة. ولكن على الرغم من وجود ذاكرة تخزين مؤقتة موثوق بها ثابتة واحدة، ويتم ضمان قفل محتوياتها دائمًا في نطاقات للقراءة فقط بعد اكتمال التهيئة المبكرة لملحق kernel، تُضاف ذاكرات التخزين المؤقتة الموثوق بها القابلة للتحميل إلى النظام في وقت التشغيل.
تتم مصادقة ذاكرات التخزين المؤقتة الموثوق بها هذه إما من خلال نفس الآلية التي تصادق على البرامج الثابتة للتمهيد (التخصيص باستخدام خدمة التوقيع الموثوق به من Apple) أو ككائنات مُوقَّعة عالميًا (لا تربطها توقيعاتها بجهاز معين).
مثال على ذاكرة التخزين المؤقتة الموثوق بها المخصصة هي ذاكرة التخزين المؤقتة المثبتة مسبقًا مع صورة القرص المستخدمة لإجراء تشخيصات ميدانية على أجهزة كمبيوتر Mac المزودة بسيليكون Apple. يتم تخصيص ذاكرة التخزين المؤقت الموثوق بها هذه، إلى جانب صورة القرص، ويتم تحميلها إلى kernel الخاص بكمبيوتر Mac المحدد أثناء تمهيده في وضع التشخيص. وتتيح ذاكرة التخزين المؤقتة الموثوق بها تشغيل البرامج داخل صورة القرص في وجود امتياز النظام الأساسي.
يتم توفير مثال لذاكرة التخزين المؤقتة الموثوق بها المُوقَّعة عالميًا مع تحديثات برامج macOS. تسمح ذاكرة التخزين المؤقتة الموثوق بها هذه بتشغيل جزء من التعليمات البرمجية ضمن تحديث البرامج—مخ التحديث—في وجود امتياز النظام الأساسي. يقوم مخ التحديث بإجراء أي عمل لتنظيم مراحل تحديث البرامج لأن النظام المضيف يفتقر إلى القدرة على الأداء بطريقة متسقة عبر الإصدارات.