دسته OWASP: MASVS-PLATFORM: تعامل پلاتفرم
نمای کلی
«ربایش ضربه» معادل برنامه Android برای آسیبپذیری وب ربایش کلیک است: یک برنامه مخرب با پنهان کردن واسط کاربر با یک همپوشانی یا با روشهای دیگر، کاربر را فریب میدهد تا روی یک کنترل مرتبط با امنیت (دکمه تأیید و غیره) کلیک کند. در این صفحه، دو نوع حمله را متمایز میکنیم: انسداد کامل و جزئی. در انسداد کامل، مهاجم روی ناحیه لمسی قرار میگیرد، درحالیکه در انسداد جزئی، ناحیه لمسی بدون مانع باقی میماند.
تأثیر
از حملات «ربایش ضربه» برای فریب دادن کاربران برای انجام کنشهای خاصی استفاده میشود. تأثیر آن به کنشی بستگی دارد که مهاجم هدف قرار داده است.
خطر: انسداد کامل
در انسداد کامل، مهاجم ناحیه لمسی را میپوشاند تا رویداد لمسی را برباید:

کاهش
با تنظیم View.setFilterTouchesWhenObscured(true) در کد، از انسداد کامل جلوگیری میشود. این کار لمسهای منتقلشده از همپوشانی را مسدود میکند. اگر رویکرد اعلانی را ترجیح میدهید، میتوانید android:filterTouchesWhenObscured="true" را در فایل چیدمان برای شیء View که میخواهید محافظت کنید نیز اضافه کنید.
خطر: انسداد جزئی
در حملات انسداد جزئی، ناحیه لمس بدون مانع باقی میماند:

کاهش
میتوانید با نادیده گرفتن دستی رویدادهای لمسی که پرچم FLAG_WINDOW_IS_PARTIALLY_OBSCURED دارند، انسداد جزئی را کاهش دهید. هیچ محافظت پیشفرضی
دربرابر این سناریو وجود ندارد.
Android 14 و accessibilityDataSensitive: در Android 14 (سطح API ۳۴)
و بالاتر، میتوانید از پرچم
accessibilityDataSensitive برای محافظت از
دادههای حساس دربرابر سرویسهای دسترسپذیری مخرب استفاده کنید. وقتی این پرچم را در نماهای حساس (مثل صفحههای ورود به سیستم یا تأیید تراکنش) تنظیم میکنید، فقط سرویسهایی که android:isAccessibilityTool="true" را اعلام میکنند میتوانند دادههای نما را بخوانند یا کنشهای دسترسپذیری را در آن انجام دهند. در Android 16 (سطح API ۳۶)
و بالاتر، accessibilityDataSensitive همچنین اشارههای لمسی شبیهسازیشده
تزریقشده با AccessibilityService.dispatchGesture را توسط
سرویسهایی که android:isAccessibilityTool="true" را اعلام نمیکنند مسدود میکند. این کار محافظت در سطح سیستم را دربرابر حملات استراق سمع و تزریق کلیک که از ویژگیهای سناریوهای انسداد جزئی است فراهم میکند. میتوانید با مشخص کردن
android:filterTouchesWhenObscured="true" در فایلهای چیدمان،
accessibilityDataSensitive را بهطور ضمنی فعال کنید.
خطرات خاص
این بخش خطراتی را جمعآوری میکند که به استراتژیهای کاهش غیراستاندارد نیاز دارند یا در سطح خاصی از کیت توسعه نرمافزار کاهش یافتهاند و برای کامل بودن در اینجا آورده شدهاند.
خطر: android.Manifest.permission.SYSTEM_ALERT_WINDOW
اجازه SYSTEM_ALERT_WINDOW به برنامه امکان میدهد پنجرهای ایجاد کند که روی همه برنامهها نشان داده میشود.
کاهش
نسخههای جدیدتر Android چندین اقدام کاهشی معرفی کردهاند، ازجمله:
- در Android نسخه ۶ (سطح میانای برنامهسازی کاربردی ۲۳) و بالاتر، کاربران باید صریحاً به برنامه اجازه دهند پنجره همپوشانی ایجاد کند.
- در Android 12 (سطح میانای برنامهسازی کاربردی ۳۱) و بالاتر، برنامهها میتوانند
trueرا بهWindow.setHideOverlayWindows()منتقل کنند.
ریسک: اعلان موقت سفارشی
مهاجم میتواند از Toast.setView() برای سفارشیسازی کردن ظاهر پیام اعلان گذرا استفاده کند. در Android 10 (میانای برنامهسازی کاربردی سطح ۲۹) و نسخههای پایینتر، برنامههای مخرب میتوانستند چنین کادرهای موقتی را از پسزمینه راهاندازی کنند.
کاهش
اگر برنامهای Android 11 (سطح میانای برنامهسازی کاربردی ۳۰) یا بالاتر را هدف قرار دهد، سیستم پیامهای موقت سفارشی پسزمینه را مسدود میکند. بااینحال، در برخی شرایط میتوان بااستفاده از Toast burst از این کاهش اجتناب کرد، جایی که مهاجم چندین toast را در پیشزمینه صفبندی میکند و این toastها حتی پساز رفتن برنامه به پسزمینه همچنان راهاندازی میشوند.
از Android 12 (سطح میانای برنامهسازی کاربردی ۳۱)، اعلانهای موقت پسزمینه و حملات رگباری اعلانهای موقت کاملاً کاهش یافتهاند.
ریسک: فعالیت ساندویچی
اگر یک برنامه مخرب بتواند کاربر را متقاعد کند که آن را باز کند، همچنان میتواند فعالیتی را از برنامه قربانی راهاندازی کند و سپس آن را با فعالیت خودش همپوشانی کند، که این امر منجر به ایجاد یک ساندویچ فعالیت و یک حمله انسداد جزئی میشود.
کاهش
کاهشهای کلی برای انسداد جزئی را ببینید. برای دفاع در عمق، مطمئن شوید فعالیتهایی را که نیازی به صادر شدن ندارند صادر نکنید تا از ساندویچ کردن آنها توسط مهاجم جلوگیری شود.
منابع
تغییرات خطمشی سطح میانای برنامهسازی کاربردی هدف در «فروشگاه Play»
حملات Android مبتنی بر سرویس دسترسپذیری و تغییر ظاهر میانای کاربر
توصیهشده برای شما
- توجه: وقتی جاوا اسکریپت خاموش باشد، نوشتار پیوند نمایش داده میشود
- android:exported
- # مدیریت کلید {:#key-management}
- اجرای کد DEX جاسازیشده مستقیماً از APK