الاستيلاء على الإجراء التلقائي

فئة OWASP: MASVS-PLATFORM: Platform Interaction

نظرة عامة

تحدث ثغرة اختطاف النية الضمنية عندما لا يحدّد التطبيق اسم فئة أو حزمة مؤهَّلة بالكامل عند استدعاء نية. يسمح ذلك لتطبيق ضار بتسجيل intent filter لاعتراض intent بدلاً من التطبيق المقصود.

استنادًا إلى محتوى Intent، يمكن للمهاجمين قراءة المعلومات الحسّاسة أو تعديلها أو التفاعل مع الكائنات القابلة للتغيير، مثل PendingIntent أو Binder القابلة للتغيير.

يمكن أن يسمح اختطاف النية الضمنية أيضًا للمهاجم بتنفيذ إجراءات عشوائية، مثل تشغيل مكونات يتحكّم فيها المهاجم.

التأثير

إذا كان implicit intent يعالج بيانات حسّاسة يمرّر الرمز المميز للجلسة ضمن سلسلة عنوان URL إضافية لفتح WebView، يمكن لأي تطبيق يحدّد intent filter المناسبة قراءة هذا الرمز المميز. ويمكن أن يسمح ذلك لأي تطبيق تم إعداده بشكل صحيح على الجهاز باعتراض intent وقراءة البيانات الحسّاسة بداخله، ما يتيح للمهاجمين استخراج بيانات مثل معلومات تكشف الهوية الشخصية أو الرموز المميزة للجلسات.

إجراءات التخفيف

ما لم يتطلّب التطبيق ذلك، اجعل الأهداف واضحة من خلال استدعاء setPackage(). يسمح ذلك بتفسير الغرض من خلال مكوّن محدّد فقط (إما داخل التطبيق أو من تطبيقات أخرى)، ما يمنع التطبيقات غير الموثوق بها من اعتراض البيانات المُرسَلة مع الغرض. يوضّح المقتطف التالي كيفية جعل الغرض ضمنيًا:

Kotlin

val intent = Intent("android.intent.action.CREATE_DOCUMENT").apply {
    addCategory("android.intent.category.OPENABLE")
    setPackage("com.some.packagename")
    setType("*/*")
    putExtra("android.intent.extra.LOCAL_ONLY", true)
    putExtra("android.intent.extra.TITLE", "Some Title")
}
startActivity(intent)

Java

Intent intent = new Intent("android.intent.action.CREATE_DOCUMENT");
intent.addCategory("android.intent.category.OPENABLE");
intent.setPackage("com.some.packagename");
intent.setType("*/*");
intent.putExtra("android.intent.extra.LOCAL_ONLY", true);
intent.putExtra("android.intent.extra.TITLE", "Some Title");
startActivity(intent);

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

الموارد