قد يتم إساءة استخدام برنامج Fortnite Installer لتثبيت التطبيقات بصمت على هواتف Galaxy

click fraud protection

كان تطبيق تثبيت Fortnite Mobile على نظام Android قابلاً للاستغلال في إصداره الأول. يمكن إساءة استخدام تثبيت أي تطبيق بصمت على هواتف Samsung Galaxy.

لم يكن إطلاق لعبة Fortnite Mobile على أجهزة Android أمرًا رائعًا، خاصة منذ ذلك الحين العديد من الأجهزة المدعومة حقًا تكافح من أجل لعب اللعبة بمعدلات إطارات مقبولة. تم إطلاق اللعبة باعتبارها حصرياً لجهاز سامسونج جالاكسي لمدة 3 أيام فقط. أصبح مُثبت Fortnite متاحًا لأول مرة على تطبيقات سامسونج جالاكسي قبل أن تسمح Epic Games للاعبين غير التابعين لشركة Samsung بتنزيل اللعبة الكاملة وتثبيتها من برنامج Fortnite Installer الذي تم الحصول عليه من موقع Epic الإلكتروني. بعد وقت قصير من توفر برنامج تثبيت Fortnite، دفعت Epic Games بهدوء تحديثًا إلى برنامج التثبيت. الآن نعرف السبب: لقد قاموا بتصحيح أ رجل في القرص استغلال جعل من الممكن لتطبيق ضار أن تثبيت بصمت أي تطبيق يريدونه على هواتف سامسونج جالاكسي الذكية. نظرًا لوجود بعض الالتباس حول كيفية عمل هذا الخلل، سنحاول توضيح الأمور. أولاً، نحتاج إلى شرح أساسيات تثبيت التطبيق على نظام Android.


تدفق تثبيت التطبيق على الهواتف الذكية التي تعمل بنظام Android

عمليات التثبيت الصامتة من مصادر الطرف الأول

لتثبيت ملف APK على نظام Android بصمت دون مطالبة المستخدم بالحصول على إذن، يجب أن يكون لديك تطبيق على مستوى النظام مزود بامتداد INSTALL_PACKAGES تم تأمين التصريح. تتضمن أمثلة التطبيقات التي تتمتع بهذا الإذن متجر Google Play على معظم أجهزة Android. قد تحصل أيضًا متاجر تطبيقات الطرف الأول على الأجهزة من Samsung وHuawei وغيرها من الشركات المصنعة للأجهزة على إذن INSTALL_PACKAGES. إذا كنت تريد تثبيت أي تطبيق من متجر Google Play، فسوف يتولى عملية التنزيل والتثبيت تلقائيًا التطبيق لك دون مزيد من التدخل بعد الضغط على "تثبيت". (متجر Google Play حتى تلقائيا يمنح أذونات معينة لوقت التشغيل مثل واحد ل تراكبات، بينما تحتاج التطبيقات المثبتة من خارج متجر Play إلى مطالبة المستخدم بمنح هذه الأذونات.)

إذا كنت مهتمًا بما إذا كان أحد التطبيقات الموجودة على جهازك لديه إذن INSTALL_PACKAGES، فيمكنك معرفة ذلك عبر أمر ADB.

adb shell
dumpsys packagepackage.name.here | grep "INSTALL_PACKAGES"

على سبيل المثال، اسم حزمة متجر Google Play هو "com.android.vending". تطبيق آخر لديه هذا الإذن هو Shell مع اسم الحزمة com.android.shell. لأولئك منكم الذين يستخدمون الطبقة التحتية بدون جذور عبر البرنامج الإضافي أندروميدا على Android Oreo، يحافظ برنامج Andromeda النصي الذي يتم تشغيله من جهاز الكمبيوتر الخاص بك على تشغيل عملية الصدفة حتى يتمكن Substratum من استخدامه لتثبيت الحزم (تراكبات السمات) ثم استخدام أوامر OverlayManager لتمكين التراكبات.

تطبيقات التحميل الجانبي من مصادر خارجية

إذا حاولت تنزيل تطبيق وتثبيته من خارج متجر تطبيقات الطرف الأول، فستحتاج أولاً إلى تمكين مصادر التثبيت غير المعروفة. هذا يتيح خدمة مدير الحزم ضمن إطار عمل Android (الذي لديه إذن INSTALL_PACKAGES) أنك تقر بمخاطر تطبيقات التحميل الجانبي من مصادر خارجية. على الأجهزة التي تعمل بنظام التشغيل ما قبل Android Oreo، يوجد مفتاح تبديل واحد في إعدادات الأمان للسماح بالتثبيت من مصادر غير معروفة. على نظام التشغيل Android Oreo والإصدارات الأحدث، يجب أن يعلن التطبيق الذي يطلب تثبيت APK عن REQUEST_INSTALL_PACKAGES إذن ويجب على المستخدم إدراج هذا التطبيق في القائمة البيضاء حتى يتمكن من طلب عمليات تثبيت التطبيق عبر خدمة مدير الحزم. نظرًا لأن REQUEST_INSTALL_PACKAGES هو إذن "appop"، فهذا يجعله أحد الأذونات التي يمكن التحكم فيها من داخل مدير أذونات الإعدادات أو عبر cmd appops أمر شل.

بمجرد تمكين التثبيت من مصادر غير معروفة إما عالميًا أو خصيصًا لتطبيق ما، يمكن للمستخدم تحميل التطبيق جانبيًا. ومع ذلك، لا يسمح مدير الحزم بتثبيت التطبيق بصمت. بدلاً من ذلك، سيطلب من المستخدم ما إذا كان يريد تثبيت التطبيق وإدراج أي أذونات حساسة يطلب منحها عند التثبيت. إذا وافق المستخدم، فسيتم تثبيت التطبيق بالأذونات المطلوبة خارج وقت التشغيل. يمكن لمصنعي المعدات الأصلية أيضًا تخصيص مدير الحزم: على سبيل المثال، مدير الحزم في النسخة الصينية من يحتوي نظام EMUI 5 من هواوي على ميزة لفحص ملف APK لتحديد ما إذا كان آمنًا والتحكم في الأذونات ممنوح قبل تثبيت. لقد لاحظت ذلك على Honor Note 8 الذي يعمل بنظام EMUI 5 المستورد من الصين، على الرغم من أنني متأكد من أن أجهزة Huawei وHonor الصينية الأخرى تحتوي أيضًا على هذه الميزة في مديري الحزم الخاصة بهم.

على أية حال، هذا يلخص الفرق بين تثبيت التطبيق من مصدر معتمد من الطرف الأول ومصدر من طرف ثالث. إذا حاولت تثبيت تطبيق من متجر Play أو متجر تطبيقات مكافئ به INSTALL_PACKAGES إذن، فإنه سيتعامل مع عملية التثبيت بصمت من تلقاء نفسه دون تدخل إضافي من المستخدم بعد البدء تحميل. ولكن إذا قمت بتنزيل APK من XDA Labs أو APKMirror أو مصادر أخرى تابعة لجهات خارجية، فسيتولى مثبت الحزمة القياسي عملية التثبيت ويطالب المستخدم بتثبيت تلك الحزمة. إذن، من أين يأتي برنامج Fortnite Installer ولماذا يعتبر كل هذا ذا صلة؟

خطأ في عملية تثبيت Fortnite

في وقت سابق من اليوم، جوجل كشفت عن ثغرة أمنية لقد اكتشفوا ذلك مع الإصدار الأول من برنامج Fortnite Installer. تم عرض الثغرة الأمنية على Exynos Samsung Galaxy S8+ (dream2lte) ولكنها أثرت أيضًا على جميع أجهزة Samsung Experience الأخرى بما في ذلك Samsung Galaxy Note 9 وSamsung Galaxy Tab S4. تسمح الثغرة الأمنية تطبيق ضار مثبت بالفعل للاستفادة من الطريقة التي يحاول بها برنامج تثبيت Fortnite تثبيت Fortnite لأول مرة على أجهزة سامسونج جالاكسي. باستخدام واجهة برمجة تطبيقات خاصة في Samsung Galaxy Apps، يتجاوز برنامج تثبيت Fortnite الحاجة إلى مطالبة المستخدم عبر مثبت الحزمة القياسي بتثبيت Fortnite. وذلك لأن Galaxy Apps لديه الإذن الذي يحتاجه للتعامل مع التثبيت بصمت. لن يكون هناك أي خطأ في عملية التثبيت الصامت هذه إذا كان التطبيق الذي يتم تثبيته بصمت هو Fortnite الحقيقي. ولكن نظرًا للمكان الذي قام فيه برنامج تثبيت Fortnite بتخزين ملف APK الذي تم تنزيله للعبة Fortnite، فقد كان من السهل استغلاله.

يوضح AndroidManifest من Samsung Galaxy Apps أن Galaxy Apps لديه الإذن بتثبيت تطبيقات أخرى بمفردها، متجاوزًا مثبت الحزمة القياسي.

وفقًا للتقرير الخاص بـ Issue Tracker، سيقوم برنامج Fortnite Installer بتنزيل Fortnite Mobile APK إلى /sdcard/Android/data/com.epicgames.portal/files/downloads/. يعتبر هذا "وحدة تخزين خارجية" على نظام Android حيث أن /sdcard هو رابط رمزي لـ /data/media/CURRENT_USER، و/sdcard هو الاسم المستخدم في الأيام الأولى لنظام Android عندما كانت بيانات التطبيق المخزنة على بطاقات SD الفعلية. في الوقت الحاضر، يتم عادةً تخزين بيانات التطبيق في أدلة خاصة بالتطبيق في /data/data/، وكل تطبيق لديه حق الوصول فقط إلى الملفات الموجودة في دليل /data/data الخاص به. وبالتالي، إذا قام برنامج تثبيت Fortnite بتخزين ملف Fortnite APK الذي تم تنزيله في دليل /data/data/ الخاص به، فسيكون من المستحيل لأي تطبيق بدون أذونات القراءة (على سبيل المثال. بدون الوصول إلى الجذر) لمعرفة ما يحدث في هذا الدليل.

ومع ذلك، منذ تثبيت Fortnite حفظ APK الذي تم تنزيله في وحدة التخزين الخارجية، يمكن مراقبته والكتابة عليه بواسطة أي تطبيق لديه أذونات القراءة للتخزين الخارجي. عادةً، تكتب التطبيقات إلى /data/media، "بطاقة SD الافتراضية"، عندما تقوم بتخزين الملفات التي يحتاج المستخدم إلى الوصول إليها عبر MTP أو عن طريق تطبيقات أخرى. لكي يتمكن التطبيق من القراءة أو الكتابة إلى /data/media، يجب أن يكون لديه READ_EXTERNAL_STORAGE و أذونات WRITE_EXTERNAL_STORAGE على التوالي (كلاهما ضمن نفس مجموعة الأذونات وبالتالي فهما يمنحان معًا). قبل Android 4.4 KitKat، كانت معظم التطبيقات تطلب هذه الأذونات عند التثبيت، وإلا فلن يتم طلبها القدرة على القراءة أو الكتابة إلى الملفات الموجودة في دليل التخزين الخارجي المخصص لحزمتهم /data/media/.../Android/. مع مقدمة FUSE لمحاكاة أذونات دليل نمط FAT-on-sdcard في Android 4.4 KitKat، لم تعد التطبيقات بحاجة إلى أي أذونات للوصول إلى الملفات الموجودة في الدليل المخصص لها في وحدة التخزين الخارجية. سيظل الوصول إلى الملفات في أي دليل آخر بحاجة إلى أذونات التخزين الخارجية، وهو ما يمكن أن يفعله التطبيق الضار لاختراق عملية تثبيت Fortnite.

كما هو موضح في الفيديو أدناه، يقوم تطبيق ضار يحمل إذن READ_EXTERNAL_STORAGE بمراقبة دليل التنزيل الخاص بـ Fortnite Installer في وحدة التخزين الخارجية. عندما يكتشف اكتمال التنزيل ويتم التحقق من بصمة الإصبع، فإنه يحل محل تم تنزيل حزمة Fortnite مع الحزمة الضارة الخاصة بها بفضل WRITE_EXTERNAL_STORAGE إذن. ومع ذلك، بسبب الطريقة التي تتحقق بها Samsung Galaxy Apps من Fortnite APK قبل التثبيت (... إنه يتحقق فقط مما إذا كان اسم الحزمة هو "com.epicgames.fortnite")، فمن الممكن أن يكون لديك Galaxy تطبيقات قم بتثبيت الحزمة الضارة بصمت في الخلفية دون تدخل أو إشعار المستخدم- طالما كان اسم الحزمة الضارة هو "com.epicgames.fortnite". والأسوأ من ذلك، إذا استهدفت هذه الحزمة الضارة مستوى SDK 22 أو أقل (Android 5.1 Lollipop والإصدارات الأقدم)، فسيتم ذلك سيتم منحه تلقائيًا جميع الأذونات المحددة في بيانه لأن أذونات وقت التشغيل إلزامية فقط للتطبيقات التي تستهدف مستوى SDK 23 وما فوق (Android 6.0 Marshmallow و لاحقاً).

ولكن ماذا سيحدث على الأجهزة غير التابعة لشركة سامسونج؟ حسنًا، نظرًا لعدم تثبيت Samsung Galaxy Apps على أجهزة غير تابعة لشركة Samsung، فإن ملف APK الضار لن يتم تثبيته بصمت في الخلفية. يعد Fortnite Installer تطبيقًا تابعًا لجهة خارجية وبالتالي يحتاج إلى مطالبة المستخدم أولاً بالتمكين التثبيت من مصادر غير معروفة ومن ثم إرسال طلب إلى مثبت الحزمة لتثبيت النسخة المزيفة فورتنايت APK. سيعتمد الأمر بعد ذلك على قيام المستخدم بالنقر فوق "تثبيت" عند سؤاله عما إذا كان يريد تثبيت التطبيق أم لا. يعد هذا مشكلة بغض النظر عن حقيقة أن الهواتف غير التابعة لشركة Samsung ليست معرضة لخطر تثبيت تطبيق ضار بصمت في الخلفية. لن يكون المستخدم العادي أكثر حكمة إذا تم تقديم APK ضار تم تصميمه مع "Fortnite" في اسمه وأيقونة تطبيق Fortnite للتثبيت.

ومع ذلك، لا يزال هناك فرق واضح بين استغلال هذا الخلل على هواتف Samsung Galaxy الذكية والهواتف الذكية غير التابعة لشركة Samsung. الأول عبارة عن هجوم Man-in-the-Disk الذي يستفيد أيضًا من واجهة برمجة تطبيقات النظام المخفية لتثبيت أي تطبيق بصمت في الخلفية، مع أي أذونات، ودون الحاجة إلى خداع المستخدم للاعتقاد بأنه يقوم بتثبيت لعبة Fortnite مزيفة APK. هذا الأخير هو أ هجوم Man-in-the-Disk القياسي الذي يمكن أن يحدث أيضًا للتطبيقات الأخرى التي تحفظ ملفات APK أو البيانات المهمة الأخرى في أدلة التخزين الخارجية، كما تبين مؤخرا نقطة تفتيش بريد. لقد حدث أنه بفضل واجهة برمجة تطبيقات Galaxy Apps المخفية، أصبح هجوم Man-in-the-Disk أكثر خطورة على أجهزة Samsung Galaxy.

إصلاح الخلل

يُحسب لشركة Epic Games أنها استجابت بسرعة كبيرة للتقرير الخاص بأداة Google Issue Tracker وطرحت تحديثًا للإصدار 2.1.0 بأسرع ما يمكن. كان الإصلاح بسيطًا — ما عليك سوى حفظ ملف Fortnite APK الذي تم تنزيله في دليل التخزين الداخلي لمثبت Fortnite في /data/data بدلاً من دليل التخزين الخارجي في /data/media. طلب مهندس Epic Games الكشف عن الخلل بعد 90 يومًا، على الرغم من رفض Google ونشر المشكلة للعامة بعد 7 أيام من طرح الإصلاح. كان الرئيس التنفيذي لشركة Epic Games تيم سويني لا سعيد بالفترة الزمنية السريعة بدءًا من تقرير الأمان الأولي وحتى الكشف عنه. وقدم البيان التالي ل أندرويد سنترال.

أعربت Epic حقًا عن تقديرها لجهود Google في إجراء تدقيق أمني متعمق للعبة Fortnite فورًا الإصدار على Android، ومشاركة النتائج مع Epic حتى نتمكن من إصدار تحديث سريعًا لإصلاح الخلل اكتشف.

ومع ذلك، كان من غير المسؤول من جانب Google الكشف علنًا عن التفاصيل الفنية للخلل بهذه السرعة، في حين أن العديد من عمليات التثبيت لم يتم تحديثها بعد وما زالت عرضة للخطر.

طلب أحد مهندسي الأمان في Epic، بناءً على طلبي، من Google تأخير الكشف العام لمدة 90 يومًا نموذجية لإتاحة الوقت لتثبيت التحديث على نطاق أوسع. رفضت جوجل. يمكنك قراءتها كلها في https://issuetracker.google.com/issues/112630336

تحظى جهود تحليل الأمان التي تبذلها Google بالتقدير وتعود بالنفع على نظام Android الأساسي، ومع ذلك، يجب على شركة قوية مثل Google أن تمارس المزيد توقيت الكشف المسؤول عن هذا، وعدم تعريض المستخدمين للخطر في سياق جهودها لمكافحة العلاقات العامة ضد توزيع Epic للعبة Fortnite خارج تطبيقات جوجل.

لا أستطيع التحدث عن عدد أجهزة Samsung Galaxy الموجودة التي لا تزال تحتوي على برنامج Fortnite Installer الأقدم. ربما ينبغي على Epic Games أن تطلب من هؤلاء المستخدمين تحديث التثبيت الخاص بهم عن طريق إرسال رسالة في Fortnite Mobile. ميزة المراسلة داخل التطبيق الأنيقة الجديدة من Firebase يمكن أن تفعل الخدعة. على الرغم من أن الأمر ربما لا يكون مشكلة كبيرة على أي حال، لأنه إذا قام مستخدم لديه برنامج التثبيت الأقدم بتنزيل الملف الشرعي بالفعل Fortnite، فلن ينجح أي هجوم MITD لأنه لا يمكن تثبيت APK الضار أعلى Fortnite الحالي تثبيت. على أية حال، تم اكتشاف هذا الخلل في وقت مبكر جدًا بعد إصدار لعبة Fortnite على نظام Android - في حين لا يزال هناك الكثير من الجدل حول لعبة Epic Games. قرار التخلي عن جوجل بلاي- من المؤكد أن الحجة القائلة بأن قرار Epic Games كان مهملاً. سواء كانت هذه هي نية Google من وراء نشر هذه المشكلة بهذه السرعة، فلن نعرف أبدًا.