كيف حققت لعبة Tapjacking عائدًا مع الخطمي الذي يعمل بنظام Android - ولم يلاحظ أحد ذلك

في حين أن الكثير منا يفرحون على Android Nougat الذي تم إصداره حديثًا لأجهزة Nexus ، لا تزال الغالبية العظمى من المستخدمين على Android Marshmallow. استغلال تم توثيق وجوده منذ منتصف عام 2015 على الأقل لا يزال يؤثر على العديد من أجهزة Android الحديثة.

التطبيقات الضارة قادرة على الضغط على أفعالك لمنحهم إذنًا لم تمنحه أبدًا بشكل صريح. هنا هو كيف يعمل استغلال.


عودة Tapjacking

تخيل أنك تفتح Instagram وتحاول مشاركة صورة التقطتها مؤخرًا بينما كنت في إجازة. عند تحديد استعراض معرض الصور الخاص بك للحصول على صورة ، يطلب منك Instagram منحها إذنًا بالوصول إلى سعة التخزين الخاصة بك. ولكن عند النقر فوق "نعم" ، ستقابل رسالة خطأ.

لا يمكنك منح إذن التخزين لـ Instagram لأن لديك تراكب شاشة نشط مُمكّن - في هذه الحالة ، أحد التطبيقات العديدة التي تضفي صبغة على الشاشة حتى تتمكن من استخدام هاتفك ليلا دون أن تعمم نفسك. هذه هي حالة نظام أذونات Android الذي يعمل على النحو المنشود : من أجل منح التطبيق إذنًا حساسًا ، يجب عليك تعطيل أي تراكبات شاشة لديك على جهازك.

الخطمي إذن Tapjacking. سيؤدي النقر فوق "السماح" إلى إظهار جميع جهات الاتصال الخاصة بي.

يمكن للتطبيقات التي لديها القدرة على السحب على الشاشة خداعك في تغذية البيانات الحساسة. على سبيل المثال ، يمكن أن يضع تراكب الشاشة إدخال كلمة مرور مزيفة أعلى شاشة تسجيل دخول حقيقية من أجل جمع كلمات المرور الخاصة بك. يسمى استغلال مثل هذا بـ "tapjacking" وقد برزت وتم ترقيته على إصدارات أندرويد المختلفة على مر السنين ، مع واحدة من أسوأ الأمثلة التي استمرت حتى Android 4.0.3. لكن في الآونة الأخيرة ، حقق هذا الاستغلال عائداً من خلال نموذج أذونات وقت التشغيل لنظام Android Marshmallow.

أنشأ مطور باسم Iwo Banaś تطبيقًا يوضح استغلال. طريقة عمله بسيطة إلى حد ما - عندما يعرض أحد التطبيقات مربع حوار الأذونات ، فإن التطبيق الضار الذي قمت بتثبيته سيعرض تراكب النظام لتغطية كتلة النص في مربع حوار الأذونات بأي نص يريده. سيتم خداع المستخدم غير المقصود الذي ينقر على "السماح" في مربع حوار الإذن بمنح الإذن الذي تم طلبه - ولكن تم إخفاء الطلب من وجهة نظر المستخدم. مثل هذا الاستغلال يهزم تمامًا الغرض من نظام أذونات Android Marshmallow ، لأن إدخال النموذج الجديد كان من المفترض أن يضمن أن المستخدمين لن يسمحوا إلا بالأذونات التي وافقوا عليها صراحةً .

الآن ، أنا أعرف ما تفكر فيه. إذا اكتشف نظام Android تراكب النظام ومنعني من منح أذونات تخزين Instagram ، ألا يمنع هذا الاستغلال من الحدوث؟ الإجابة هي لا ، في الاختبار الذي أجريته ، يبدو أنه في بعض الأجهزة التي تعرض تراكب نص أعلى مربع حوار الأذونات لا تقوم بتشغيل آلية الأمان. يوضح مطور تطبيق tapjacking لإثبات صحة المفهوم أن هذا الاستغلال فعال لأنه يعتمد على قيام المستخدم بتثبيت تطبيق ضار ثانوي يستهدف مستوى API 22 وما بعده (ما قبل الخطمي). هذا يرجع إلى حقيقة أنه قبل Android Marshmallow ، يتم منح جميع التطبيقات أذونات أثناء التثبيت.

حسنًا ، لذا إذا كنت في برنامج "الخطمي" ، فكل ما تحتاج إليه هو تجنب تثبيت أي تطبيقات لا تثق بها وتطلب الإذن لرسم تراكب ، أليس كذلك؟ إذا كان نموذج إذن Android يعمل كما هو موضح أصلاً ، فستكون على صواب. لكن منذ اكتشاف هذا الاستغلال ، حتى التطبيقات التي تستهدف API المستوى 23 (الخطمي) والتي تطلب إذن التراكب تشكل مخاطرة محتملة.


ثغرة في نموذج التصريح؟

تطبيقات نموذجية باستخدام التراكبات. عبر: متوسطة

إذا كنت أحد الملايين العديدة من الناس الذين يستخدمون Facebook Messenger للدردشة مع أصدقائك ، فحينها واجهت إحدى أفضل ميزات Android - القدرة على التطبيقات للرسم على الشاشات الأخرى. كم هو رائع أنه يمكن أن يكون لديك فقاعة مع دردشة مجموعة الفيسبوك المفضلة لديك ، اتبع المستخدم في أعلى أي تطبيق يفتحونه؟ على الرغم من أن Facebook's Messenger قد أدخل فكرة "التطبيقات العائمة" في الاتجاه السائد ، إلا أن هذا المفهوم كان موجودًا لبعض الوقت في Android. تمكنت التطبيقات من إنشاء تراكبات أعلى تطبيقاتك لبعض الوقت ، بفضل وجود TYPE_SYSTEM_OVERLAY في WindowManager في Android.

"سحب على التطبيقات الأخرى" قائمة إذن

قبل Android Marshmallow ، ستحتاج التطبيقات إلى طلب إذن يسمى SYSTEM_ALERT_WINDOW أثناء التثبيت قبل أن يتمكن من عرض التراكبات أعلى الشاشة. ولكن هذا تغير مع إدخال نموذج أذونات التشغيل في الإصدار 6.0 من الحبيبات. سيتعين على المستخدمين الآن منح أذونات للتطبيقات عند تشغيل التطبيق بالفعل ، ونأمل أن يحفز ذلك المستخدم العادي على حماية بياناته الخاصة من التطبيقات التي تطلب بشكل مريب أذونات غير مرتبطة وظيفيا.

SYSTEM_ALERT_WINDOW ليس مثل أذونات أخرى ، ولكن. لا يمكن للمطورين عرض مربع حوار لطلب إذن برمجيًا من قبل المستخدم النهائي ، مثل معظم الأذونات الأخرى على أي تطبيق يستهدف Marshmallow. بدلاً من ذلك ، يجب عليك التنقل يدويًا إلى شاشة الإعدادات وتمكين الإذن بنفسك. بالطبع ، سوف تساعدك بعض التطبيقات مثل Facebook Messenger خلال هذه العملية.

تتطلب Google ذلك من المطورين لأنهم اعتبروا الإذن "حساسًا بشكل خاص".

أذونات خاصة

هناك بضعة أذونات لا تتصرف مثل الأذونات العادية والخطرة. تعتبر SYSTEM_ALERT_WINDOW و WRITE_SETTINGS حساسة بشكل خاص ، لذلك يجب ألا تستخدمها معظم التطبيقات. إذا كان التطبيق يحتاج إلى أحد هذه الأذونات ، فيجب أن يعلن التصريح في البيان ، ويرسل نية لطلب إذن المستخدم. يستجيب النظام للنية من خلال إظهار شاشة إدارة مفصلة للمستخدم.

بالنظر إلى ما نعرفه أعلاه عن لعبة التاباك ، فإن هذا أمر منطقي. ولكن هنا هو الشيء. جوجل لا تتبع حتى قواعدها الخاصة. لقطات من Facebook Messenger ترشدك خلال عملية منحها إذن SYSTEM_ALERT_WINDOW الذي عرضته أعلاه؟ يحدث هذا فقط إذا قمت بتثبيت APK من خارج متجر Google Play. إذا قمت بتثبيت تطبيق من متجر Google Play ، فسيتم منح إذن SYSTEM_ALERT_WINDOW تلقائيًا.

فيسبوك رسول ملف البيان. يتم منح التطبيق تلقائيًا إذن التراكب على الرغم من استهداف مستوى API 23.


لقد ضحى Google بالسلامة من أجل الراحة

لفترة طويلة قبل الخطمي Android ، اعتبر SYSTEM_ALERT_WINDOW إذنًا "خطيرًا". باستخدام Android Marshmallow 6.0 ، تم تغيير الإذن إلى التوقيع | system | appop وهو ما كان مطلوبًا في البداية من المطورين قيادة المستخدم إلى شاشة الإعدادات لمنح الإذن. ولكن مع إصدار Android 6.0.1 ، تم تعديل SYSTEM_ALERT_WINDOW بحيث يمكن لـ Google Play Store منح الإذن تلقائيًا دون إخطار المستخدم. سبب قيام Google بإجراء هذا التغيير غير واضح لنا. لم تصدر Google نفسها وأعلنت عن سبب قيامها بهذا التغيير ، وهو أمر غريب بشكل خاص بالنظر إلى اللغة الخاصة بـ SYSTEM_ALERT_WINDOW التي لا تزال موجودة في صفحات الويب الخاصة بها.

من المحتمل أن يكون عدد كافٍ من المطورين قد أغضبهم التغييرات الأولية التي أجريت على SYSTEM_ALERT_WINDOW والتي طالبت المستخدمين بمنح الإذن الذي أذنت به Google بصمت ومنحته للتو على أي تطبيق طلب ذلك. ولكن من خلال القيام بذلك ، ضحت Google بالسلامة من أجل الراحة . هناك سبب يجعل Google نفسها تعتبر الإذن خطيرًا لأطول وقت ، لأنه كذلك. ووجود إذن Marshmallow استغلال tapjacking هو دليل كاف على المخاطر الكامنة في منح هذا الإذن تلقائيًا إلى أي تطبيق.

لقد تم لفت انتباهنا إلى استغلال هذا الجلب الخلفي على الرغم من أنه موجود منذ عدة أشهر حتى الآن. في اختبارنا الداخلي للأجهزة بين فريق Portal ، أكدنا أن الاستغلال يعمل على العديد من الأجهزة الحديثة التي تعمل بنظام Android Marshmallow . فيما يلي تشغيل سريع للأجهزة التي اختبرناها على أحدث إصدارات البرامج المتوفرة لكل جهاز وما إذا كان استغلال tapjacking يعمل أم لا. تتعرض الأجهزة التي تحمل علامة "Vulnerable" لاستغلال سرعة النقر ، في حين أن الأجهزة التي تحمل علامة "Not Vulnerable" قادرة على اكتشاف تطبيق يعرض التراكب وتطلب تعطيله قبل المتابعة.

  • نكستبيت روبن - أندرويد 6.0.1 مع تصحيحات الأمان يونيو - ضعيف
  • Moto X Pure - نظام أندرويد 6.0 مع تصحيحات الأمان مايو - ضعيف
  • Honor 8 - Android 6.0.1 مع تصحيحات الأمان لشهر يوليو - ضعيف
  • موتورولا G4 - أندرويد 6.0.1 مع تصحيحات الأمان مايو - عرضة للخطر
  • OnePlus 2 - Android 6.0.1 مع تصحيحات الأمان لشهر يونيو - غير معرضة للخطر
  • Samsung Galaxy Note 7 - نظام Android 6.0.1 مع تصحيحات الأمان لشهر يوليو - غير معرض للخطر
  • Google Nexus 6 - Android 6.0.1 مع تصحيحات الأمان لشهر أغسطس - غير معرضة للخطر
  • Google Nexus 6P - Android 7.0 مع تصحيحات الأمان لشهر أغسطس - غير معرض للخطر

حتى الآن ، هذه هي جميع الأجهزة التي تمكنت من جعل الفريق يختبرها. لم أجد أي ارتباط بين إصدار تصحيح الأمان والاستغلال. كما يمكنك أن تقول من آخر مناقشاتنا بشأن تحديثات أمان Android ، فإن العديد من الأشخاص لا يعملون على أحدث تصحيحات الأمان على أي حال ، وبالتالي فمن المحتمل أن يكونوا عرضة لهذا الاستغلال وغيرهم من الموضوعات الموضحة في نشرة أمان Android.


تحرك للأمام

Tapjacking الخدمة الممنوحة إذن تراكب

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

نأمل أن يتم تقديم إصلاح يقوم بتصحيح هذا الاستغلال على جميع أجهزة Marshmallow ، وأن يقوم مصنعي المعدات الأصلية بتحديث جميع أجهزتهم إلى أحدث تصحيح أمني. لأن الحقيقة هي أن الأمر سيستغرق عدة أشهر حتى تحصل معظم الأجهزة المتعهد بها على Nougat ، وبالتالي فإن الطريقة الوحيدة لمعظم المستخدمين للبقاء بعيداً عن الضرر هي إما تثبيت أحدث تصحيحات الأمان أو أخذ أذونات تطبيق المراقبة بأنفسهم. ولكن مع قرار Google بمنح إذن SYSTEM_ALERT_WINDOW الذي يحتمل أن يكون خطيرًا تلقائيًا ، فإن العديد من المستخدمين يشغلون تطبيقات تدري يمكن أن تختطف هواتفهم لمنح أذونات أكثر وأكثر خطورة.