فئة OWASP: MASVS-PLATFORM: التفاعل مع النظام الأساسي
نظرة عامة
يُعدّ اختطاف النقرات في تطبيقات Android مكافئًا لثغرة تمويه النقر على الويب: إذ يخدع تطبيق ضار المستخدم ويحثّه على النقر على عنصر تحكّم ذي صلة بالأمان (زر التأكيد وما إلى ذلك) عن طريق حجب واجهة المستخدم باستخدام طبقة متراكبة أو بطرق أخرى. في هذه الصفحة، نميّز بين نوعَين من الهجمات: الحجب الكامل والحجب الجزئي. في حالة الحجب الكامل، يضع المهاجم طبقة فوق منطقة اللمس، بينما في حالة الحجب الجزئي، تظل منطقة اللمس غير محجوبة.
التأثير
تُستخدَم هجمات النقر الخادع لخداع المستخدمين وحثّهم على تنفيذ إجراءات معيّنة. يعتمد التأثير على الإجراء الذي يستهدفه المهاجم.
المخاطرة: الانسداد الكامل
في حالة الحجب الكامل، يضع المهاجم طبقة فوق منطقة اللمس لاختطاف حدث اللمس:
إجراءات التخفيف
يتم منع الانسداد الكامل من خلال ضبط View.setFilterTouchesWhenObscured(true)
في الرمز. يؤدي ذلك إلى حظر اللمسات التي يتم تمريرها من خلال طبقة عرض. إذا كنت تفضّل استخدام أسلوب تعريفي، يمكنك أيضًا إضافة android:filterTouchesWhenObscured="true"
في ملف التصميم لعنصر View
الذي تريد حمايته.
المخاطرة: الانسداد الجزئي
في هجمات الحجب الجزئي، تظلّ منطقة اللمس غير محجوبة:
إجراءات التخفيف
يمكن الحدّ من الانسداد الجزئي من خلال تجاهل أحداث اللمس التي تحمل العلامة FLAG_WINDOW_IS_PARTIALLY_OBSCURED
يدويًا. لا تتوفّر أي إجراءات حماية تلقائية ضد هذا السيناريو.
تحذير محتمل: يمكن أن يتعارض هذا الإجراء المخفِّف مع التطبيقات غير الضارة. في بعض الحالات، لا يمكن طرح هذا الإصلاح لأنّه سيؤثّر سلبًا في تجربة المستخدم عندما يكون الحجب الجزئي ناتجًا عن تطبيق غير ضار.
المخاطر المحدّدة
يجمع هذا القسم المخاطر التي تتطلّب استراتيجيات تخفيف غير عادية أو التي تم تخفيفها على مستوى معيّن من حزمة SDK، وهي مدرَجة هنا من أجل الاكتمال.
المخاطرة: android.Manifest.permission.SYSTEM_ALERT_WINDOW
يسمح الإذن SYSTEM_ALERT_WINDOW
لأحد التطبيقات بإنشاء نافذة تظهر فوق جميع التطبيقات.
إجراءات التخفيف
تتضمّن الإصدارات الأحدث من Android العديد من إجراءات التخفيف، بما في ذلك ما يلي:
- في نظام التشغيل Android 6 (المستوى 23 من واجهة برمجة التطبيقات) والإصدارات الأحدث، على المستخدمين منح الإذن صراحةً للتطبيق بإنشاء نافذة متراكبة.
- في نظام التشغيل Android 12 (المستوى 31 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يمكن للتطبيقات تمرير
true
إلىWindow.setHideOverlayWindows()
.
المخاطرة: إشعار مخصّص
يمكن للمهاجم استخدام Toast.setView()
لتخصيص مظهر رسالة إشعار مؤقت. في نظام التشغيل Android 10 (المستوى 29 لواجهة برمجة التطبيقات) والإصدارات الأقدم، يمكن للتطبيقات الضارة عرض إشعارات من الخلفية.
إجراءات التخفيف
إذا كان التطبيق يستهدف الإصدار 11 من نظام التشغيل Android (المستوى 30 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث، سيحظر النظام الإشعارات المخصّصة في الخلفية. ومع ذلك، يمكن تجنُّب هذا الإجراء الوقائي في بعض الحالات باستخدام Toast burst، حيث يضع المهاجم عدة إشعارات مؤقتة في قائمة الانتظار أثناء عمل التطبيق في المقدّمة، ويستمر إطلاقها حتى بعد انتقال التطبيق إلى الخلفية.
تمت معالجة المشاكل المتعلقة بإشعارات التنبيه في الخلفية وهجمات إرسال عدد كبير من إشعارات التنبيه بشكل كامل بدءًا من الإصدار 12 من نظام التشغيل Android (المستوى 31 لواجهة برمجة التطبيقات).
المخاطرة: شطيرة النشاط
إذا تمكّن تطبيق ضار من إقناع أحد المستخدمين بفتحه، سيظل بإمكانه تشغيل نشاط من تطبيق الضحية ثمّ تراكبه بنشاطه الخاص، ما يؤدّي إلى إنشاء شطيرة نشاط وتنفيذ هجوم حجب جزئي.
إجراءات التخفيف
اطّلِع على إجراءات التخفيف العامة لحالات الحجب الجزئي. للحصول على دفاع شامل، تأكَّد من عدم تصدير الأنشطة التي لا تحتاج إلى تصديرها لمنع المهاجم من إدخالها بين أنشطة أخرى.
المراجع
تغييرات في سياسة مستوى واجهة برمجة التطبيقات المستهدَف في "متجر Play"
هجمات على Android تستند إلى خدمات تسهيل الاستخدام وتتضمّن تغيير واجهة المستخدم
أفلام مُقترَحة لك
- ملاحظة: يتم عرض نص الرابط عندما تكون JavaScript غير مفعّلة
- android:exported
- # إدارة المفاتيح {:#key-management}
- تشغيل رموز DEX المضمّنة مباشرةً من حزمة APK