اكتشف مطور Magisk أن Google ربما بدأت في استخدام فحوصات الأجهزة لتحديد ما إذا كان الجهاز قد تم إلغاء قفل أداة تحميل التشغيل أم لا.
مطور XDA المعترف به com.topjohnwuأصبح مشروع "Magisk" الخاص بـ "Magisk" مرادفًا لـ "الجذر" في مجتمع Android. أحد الأسباب الرئيسية لشعبيته الكبيرة هو أنه يمكنه إخفاء حقيقة قيام المستخدم بتعديل أجهزته. ومع ذلك، ربما تقوم Google باتخاذ إجراءات صارمة ضد قدرة Magisk على إخفاء حالة إلغاء قفل أداة تحميل التشغيل من التطبيقات.
لتتمكن من عمل روت لهاتفك، تحتاج عادةً إلى إلغاء قفل أداة تحميل التشغيل، مما يسمح لك بتحميل صور التمهيد المعدلة. يعد ذلك ضروريًا لأن Magisk يقوم بتعديل صورة التمهيد لتزييف حالة أداة تحميل التشغيل و/أو التحقق من حالة التمهيد الذي تم التحقق منه. يتم استخدام واجهة برمجة تطبيقات SafetyNet Attestation من Google، والتي تعد جزءًا من خدمات Google Play، لإخبار التطبيق إذا كان يعمل على جهاز تم العبث به؛ إذا اكتشفت واجهة برمجة تطبيقات SafetyNet أن أداة تحميل التشغيل قد تم إلغاء قفلها، فستعرض حالة فشل للتحقق من "السلامة الأساسية". يمكن بعد ذلك حظر الأجهزة التي تفشل في هذا الفحص من التطبيقات التي تستخدم واجهة برمجة تطبيقات SafetyNet لتحديد سلامة الجهاز؛ تتضمن هذه التطبيقات عادةً التطبيقات المصرفية وتطبيقات الدفع (مثل Google Pay) والعديد من الألعاب عبر الإنترنت (مثل Pokémon Go). ومع ذلك، نظرًا لأن واجهة برمجة تطبيقات SafetyNet API لم تستخدم حتى الآن سوى عمليات التحقق من البرامج لتحديد ما إذا كان قد تم العبث بالجهاز، فيمكن لـ Magisk ببساطة انتحال أداة تحميل التشغيل و/أو حالة التمهيد التي تم التحقق منها نظرًا لأنه تم تثبيتها على مستوى أقل وبامتيازات أعلى من خدمات Google Play ومساحة المستخدمين الأخرى التطبيقات. كما يوضح Topjohnwu، فإن MagiskHide "[ينشئ]" بيئة آمنة "معزولة لعملية الكشف، ويمر عبر واجهة برمجة تطبيقات Google لإنشاء
قانوني نتيجة SafetyNet لا تعكس الحالة الحقيقية للجهاز."ومع ذلك، لاحظ المستخدمون مؤخرًا أن أجهزتهم التي تم إلغاء قفل أداة تحميل التشغيل الخاصة بها تفشل في فحص السلامة الأساسية الخاص بـ SafetyNet على الرغم من أنهم استخدموا Magisk لتصحيح صورة التمهيد. وفقًا لـ topjohnwu، يرجع ذلك إلى أن Google ربما تكون قد نفذت شهادة المفتاح على مستوى الأجهزة للتحقق من عدم التلاعب بصورة التمهيد. على وجه التحديد، هذا يعني أن خدمات Google Play "[ترسل] شهادة تخزين مفاتيح غير معدلة إلى خوادم SafetyNet، وتتحقق من شرعيتها، وتتحقق من بيانات ملحق الشهادة لمعرفة ما إذا كان جهازك قد تم التحقق من تمكين التمهيد (حالة أداة تحميل التشغيل)." وهذا يعني أنه ربما لم يعد كذلك من الممكن إخفاء حقيقة أن أداة تحميل التشغيل قد تم إلغاء قفلها، مما سيؤدي إلى فشل تطبيقات مثل Google Pay وPokémon Go في العمل عادة.
كما أشار Topjohnwu، فإن هذا التغيير في الطريقة التي تتحقق بها SafetyNet من حالة إلغاء قفل أداة تحميل التشغيل يأتي من خلال تحديث من جانب الخادم لواجهة برمجة تطبيقات SafetyNet الموجودة في خدمات Google Play. ومع ذلك، لا يفشل كل المستخدمين في عمليات التحقق المحدثة من SafetyNet، لذلك قد لا يتم تطبيق شهادة المفتاح الجديدة على مستوى الأجهزة على نطاق واسع حتى الآن.
لقد رأينا topjohnwu يتغلب على العقبات التقنية مرارًا وتكرارًا. تطرح Google بشكل متكرر عمليات فحص جديدة في SafetyNet والتي يكتشفها topjohnwu ويتجاوزها في Magisk. يجلب كل إصدار جديد من Android تغييرات على بنية القسم أو صورة التمهيد، مما يتطلب من topjohnwu دراسة التغييرات ثم تنفيذ طريقة تصحيح جديدة. ومع ذلك، حتى topjohnwu قد يواجه صعوبة في العثور على طريق جانبي هذه المرة.
وذلك لأن الحل البديل هذه المرة سيتضمن اختراق البرامج الثابتة لبيئة التنفيذ الموثوقة (TEE) للأجهزة من أجل استرداد المفتاح الخاص. ومع ذلك، يعد القيام بذلك أمرًا صعبًا للغاية لأنه يتطلب العثور على ثغرة أمنية في البرامج الثابتة المصممة لتكون آمنة بشكل لا يصدق. في الواقع، تقدم العديد من الشركات دفعات بمئات الآلاف من الدولارات إذا تم العثور على مثل هذه الثغرة الأمنية. تدفع شركة Google، على سبيل المثال، مبلغًا قدره 250 ألف دولار أمريكي مقابل ثغرات أمنية في تنفيذ التعليمات البرمجية عن بُعد في بيئة التنفيذ الموثوق بها في Pixel، و ما يصل إلى 1,000,000 دولار لنقاط الضعف في تيتان م شريحة الأمان. حتى لو تم تسريب المفتاح الخاص بطريقة أو بأخرى، فمن غير المرجح أن يكون ذا فائدة كبيرة منذ ذلك الحين يمكن لـ Google إلغاء المفتاح عن بعد لذلك لا يمكن استخدامه للتحقق من سلامة الأجهزة.
بمجرد فرض شهادة المفتاح على مستوى الأجهزة على نطاق واسع لـ SafetyNet، فإن معظم الأجهزة التي تحتوي على أدوات تحميل التشغيل غير المؤمّنة التي تعمل بنظام Android 8.0 Oreo أو أعلى ستفشل في اجتياز فحص السلامة الأساسي الخاص بـ SafetyNet. وذلك لأن جميع الأجهزة التي تم إطلاقها باستخدام Android 8.0 Oreo أو أعلى مطلوب منها أن يكون لديها مخزن مفاتيح للأجهزة مطبق في TEE. تحتوي بعض الأجهزة في الوقت الحاضر على وحدات أمان الأجهزة (HSMs) المخصصة التي تجعل الاستغلال أكثر صعوبة عن طريق نقل TEE بعيدًا عن المعالج الرئيسي؛ Titan M في Pixel 4 و شريحة الأمان الجديدة من سامسونج وفي هاتف Galaxy S20 أمثلة على ذلك.
Topjohnwu يشرح أيضا أن الحلول المحتملة الأخرى إما مستحيلة أو صعبة للغاية. من المحتمل ألا ينجح استخدام Xpose Framework لتعديل واجهة برمجة تطبيقات SafetyNet Attestation API في خدمات Google Play نظرًا لأن "عمليات فحص SafetyNet المناسبة ستتحقق من النتائج على خادم بعيد، وليس على [الـ] جهاز يمكن معالجته بواسطة أطر عمل حقن التعليمات البرمجية." علاوة على ذلك، فإن خدمات Google Play مبهمة للغاية، مما يجعل إنشاء وحدة Xpose هذه أمرًا صعبًا للغاية في البداية مكان. لن يكون انتحال نتيجة اختبار SafetyNet ممكنًا أيضًا نظرًا لأن استجابات SafetyNet "تأتي من خوادم Google ويتم توقيعها باستخدام مفتاح Google الخاص".
تتمتع Google بالقدرة على تشديد عمليات فحص SafetyNet باستخدام شهادة المفاتيح المدعومة بالأجهزة لعدة سنوات حتى الآن. إن حقيقة امتناعهم عن القيام بذلك لمدة 3 سنوات قد سمح للمستخدمين بالاستمتاع بوحدات الجذر وMagisk دون التضحية بالقدرة على استخدام التطبيقات المصرفية. ومع ذلك، يبدو أن قدرة Magisk على إخفاء حالة فتح أداة تحميل التشغيل بشكل فعال ستقترب من نهايتها قريبًا. إنه تغيير كنا نتوقعه منذ سنوات، لكننا نشعر بالحزن عندما نراه يدخل حيز التنفيذ أخيرًا. نأمل أن تقوم Google بتحديث واجهة برمجة تطبيقات SafetyNet Attestation API لإرجاع ما إذا كان التحقق من الحالة يعتمد على الأجهزة أم لا التصديق لأن هذا سيسمح لمطوري التطبيقات بتحديد ما إذا كانوا يريدون حظر جميع المستخدمين الذين قاموا بإلغاء قفل التطبيق محمل الإقلاع.
شكرا لدانيال ميكاي (@دانيال ميكاي) لمدخلاته بخصوص هذا الأمر!