فئة OWASP: MASVS-PLATFORM: Platform Interaction (التفاعل مع النظام الأساسي)
نظرة عامة
تنشأ المخاطر الأمنية المرتبطة بروابط الصفحات في التطبيق من قدرتها الأساسية على السماح بالتنقّل والتفاعل السلسَين داخل تطبيقات الأجهزة الجوّالة. تنشأ ثغرات الأمان في الروابط لصفحات في التطبيق من نقاط ضعف في تنفيذ تلك الروابط أو التعامل معها. يمكن أن يستغل الجهات الفاعلة الضارّة هذه العيوب للوصول إلى وظائف أو بيانات مميّزة، ما قد يؤدي إلى عمليات اختراق للبيانات وانتهاكات للخصوصية وإجراءات غير مصرَّح بها. ويمكن للمهاجمين استغلال هذه الثغرات من خلال أساليب متنوعة، مثل هجمات اختراق الروابط لصفحات في التطبيق والتحقّق من صحة البيانات.
التأثير
يمكن أن يؤدي عدم توفّر آلية التحقّق المناسبة من الروابط لصفحات في التطبيق أو الاستخدام غير الآمن لتلك الروابط إلى مساعدة المستخدمين الضارّين في تنفيذ هجمات، مثل التحايل على عملية التحقّق من المضيف وتنفيذ النصوص البرمجية على مستوى التطبيقات المختلفة وتنفيذ الرموز البرمجية عن بُعد في سياق أذونات التطبيق المعرض للاختراق. استنادًا إلى طبيعة التطبيق، يمكن أن يؤدي ذلك إلى الوصول غير المصرّح به إلى البيانات أو الوظائف الحسّاسة.
إجراءات التخفيف
منع الاستيلاء على الروابط لصفحات في التطبيق
يسمح نظام التشغيل Android بشكلٍ مُصمَّم لعدة تطبيقات بتسجيل فلاتر الأهداف لعنوان URI لرابط التمرير السريع نفسه. لمنع التطبيقات الخبيثة من اعتراض الروابط لصفحات في تطبيقك، عليك تنفيذ سمة android:autoVerify
في intent-filter
ضمن AndroidManifest
التطبيق. يتيح ذلك للمستخدمين اختيار
التطبيق المفضّل لديهم لمعالجة الروابط لصفحات في التطبيق، ما يضمن تنفيذ العملية المقصودة ويمنع التطبيقات الضارة من تفسيرها تلقائيًا.
قدّم نظام Android 12 معالجة أكثر صرامة لأهداف الويب لتحسين مستوى الأمان. يجب الآن التحقّق من التطبيقات للتعامل مع الروابط من نطاقات معيّنة، إما من خلال روابط تطبيقات Android أو اختيار المستخدم في إعدادات النظام. ويمنع ذلك التطبيقات من اختطاف الروابط التي لا يُفترض أن تتعامل معها.
لتفعيل ميزة التحقّق من معالجة الروابط في تطبيقك، أضِف فلاتر أهداف تتطابق مع التنسيق التالي (تم أخذ هذا المثال من مستندات التحقّق من روابط تطبيقات Android):
<!-- Make sure you explicitly set android:autoVerify to "true". -->
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- If a user clicks on a shared link that uses the "http" scheme, your
app should be able to delegate that traffic to "https". -->
<data android:scheme="http" />
<data android:scheme="https" />
<!-- Include one or more domains that should be verified. -->
<data android:host="..." />
</intent-filter>
تنفيذ عملية قوية للتحقّق من صحة البيانات
يمكن أن تتضمّن الروابط لصفحات في التطبيق مَعلمات إضافية يتم عرضها على الغاية المستهدفة، على سبيل المثال، لتنفيذ إجراءات إضافية. إنّ الأساس في التعامل الآمن مع ملفّات الوسائط العميقة هو التحقّق الصارم من صحة البيانات. على المطوّرين التحقّق بدقة من جميع البيانات الواردة من الروابط لصفحات في التطبيق وتنظيفها لمنع برمجة أو قيم ضارة من الحقن في التطبيق المشروع. ويمكن تنفيذ ذلك من خلال التحقّق من قيمة أي مَعلمة لرابط صفحة في التطبيق مقارنةً بجدول أبيض محدّد مسبقًا للقيم المتوقّعة.
يجب أن تتحقّق التطبيقات من الحالات الداخلية الأخرى ذات الصلة، مثل حالة المصادقة أو التفويض، قبل الكشف عن المعلومات الحسّاسة. على سبيل المثال، قد يكون هناك مكافأة مقابل إكمال مستوى في لعبة. في هذه الحالة، من المهم التحقّق من شرط أساسي وهو إكمال المستوى، وإعادة التوجيه إلى الشاشة الرئيسية في حال عدم استيفاء هذا الشرط.
المراجع
- التحقّق من روابط تطبيقات Android
- التعامل مع ميزة Android App Links
- دقة أهداف الويب
- اعتراض عملية الربط السحري لمنع الاستيلاء على الحساب لتطبيق "الوصول"
- استغلال الروابط لصفحات في التطبيق وWebViews، الجزء الأول
- الروابط لصفحات في التطبيق واستغلالات WebView، الجزء الثاني
- اقتراح حديث بشأن مشكلة في رابط لصفحة في التطبيق في Jetpack Navigation