
استغلال نواة حتمي بناءً على CVE-2023-32434.
Trigon هو استغلال حتمي لنواة النظام (kernel exploit) وتجاوز لـ PPL يعتمد على CVE-2023-32434. يدعم أجهزة A9 - A16 التي تعمل بنظام iOS 13 - 16.5.1. كون الاستغلال حتميًا يعني أنه لن يتسبب أبدًا في حدوث panic أثناء الاستغلال أو بعده، وهو موثوق تمامًا.
يستغل Trigon تجاوزًا صحيحًا (integer overflow) في طبقة VM الخاصة بـ XNU. تتيح لنا الثغرة بناء بدائية (primitive) لتعيين عنوان فيزيائي عشوائي. يمنحنا هذا بدائيات قراءة/كتابة إلى تقريبًا أي عنوان فيزيائي، لكن استراتيجية الاستغلال اللاحقة تختلف بين الأجهزة والإصدارات المختلفة.
إذا كنت مهتمًا بالكتابات التقنية المتعلقة بـ iOS، فإنني أوصي بقراءة سلسلة Trigon! لقد حاولت جعلها مفهومة قدر الإمكان حتى يتمكن أولئك الذين ليسوا باحثي iOS من متابعتها أيضًا.
ملاحظة: أجهزة arm64 غير مدعومة حاليًا على iOS 16، فقط أجهزة arm64e (A12+) مدعومة.
يتطلب دعم arm64e عدة قيم مُضمّنة بشكل ثابت (hardcoded)، والتي يجب وضعها في unique_offsets.h. يمكن العثور على الغالبية بسهولة بالغة، حيث يمكن العثور على بعضها كإزاحات بنيوية (structure offsets) في الكود المصدري لـ Dopamine، ويمكن العثور على أخرى من خلال تشغيل XPF. ومع ذلك، هناك ثلاث إزاحات لا يمكننا العثور عليها قبل الاستغلال، وسأشرح الآن كيفية العثور عليها.
UniqueValues.addresses.base هو العنوان الفيزيائي الأساسي لتعيين الذاكرة الخبيث الخاص بـ Trigon. طريقة سهلة للعثور عليه هي استخدام القيمة الموجودة كعنوان أساسي تقديري ثم قراءة عنوان فيزيائي يمكن التعرف عليه مثل 0x41410000. يمكنك بعد ذلك طرح الإزاحة من العنوان الفيزيائي في سجل الـ panic لتحديد العنوان الأساسي الصحيح للتعيين.
pv_head_table و pp_attr_tableUniqueValues.offsets.pv_head_table و UniqueValues.offsets.pp_attr_table هما إزاحتان نسبيتان للبنيّتين البيانيتين (data structures) في النواة من القاعدة الفيزيائية للنواة. نظرًا لأنه يتم تخصيصهما في وقت مبكر جدًا أثناء تهيئة النواة، فإنهما دائمًا عند نفس الإزاحة بالضبط من قاعدة النواة في الذاكرة الفيزيائية. للعثور عليهما، يمكنك استخدام استغلال نواة موجود (مثل kfd) للعثور على هذه البنيّتين وترجمتهما إلى العنوان الفيزيائي الصحيح، ثم حساب الإزاحات بهذه الطريقة.
بالنسبة للأجهزة القابلة للـ jailbreak عبر Dopamine، فقد أدرجت أداة سطر أوامر سهلة الاستخدام ستجد جميع الإزاحات المطلوبة لـ Trigon على arm64e هنا. يمكنك استخدامها لإعداد الاستغلال ليعمل على مجموعة جهازك وإصدارك.