إنشاء حزمة سياق

فئة OWASP: MASVS-CODE: جودة الرموز البرمجية

نظرة عامة

public abstract Context createPackageContext (String packageName, int flags)

تُستخدَم الطريقة createPackageContext عندما يريد المطوِّر إنشاء سياق لتطبيق آخر في تطبيقه الخاص.

على سبيل المثال، إذا أراد المطوّرون الحصول على موارد من تطبيق تابع لجهة خارجية أو استدعاء طُرق منه، سيستخدمون createPackageContext.

ومع ذلك، إذا كان أحد التطبيقات يستدعي createPackageContext باستخدام علامتَي CONTEXT_IGNORE_SECURITY وCONTEXT_INCLUDE_CODE، ثم يُستدعي getClassLoader()، قد يؤدي ذلك إلى جعل التطبيق معرّضًا لخطر تنفيذ رمز برمجي من خلال تطبيق ضار. ويمكن أن يحدث ذلك، مثلاً، عندما ينتحل مهاجم هوية اسم حزمة لم يتمّ المطالبة به (تثبيت حزمة غير شرعية) كان المطوّر يتوقع أن يكون متوفّرًا على جهاز المستخدم.

في ما يلي ملخّص للمعايير التي يجب استيفاؤها ليصبح التطبيق عرضةً لهذا النوع من الهجمات:

التطبيق الذي يتضمّن ثغرة أمنية:

التطبيق الضار:

  • أن يكون قادرًا على المطالبة باسم الحزمة الذي يرسله التطبيق المعرض للاختراق إلى createPackageContext
  • تصدير android:appComponentFactory

التأثير

عندما يستخدم تطبيق دالة createPackageContext بطريقة غير آمنة، يمكن أن يؤدي ذلك إلى تمكّن تطبيق ضار من تنفيذ رمز برمجي عشوائي في سياق التطبيق المعرّض للاختراق.

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

لا تتصل بـ createPackageContext باستخدام CONTEXT_IGNORE_SECURITY وCONTEXT_INCLUDE_CODE ما لم يكن ذلك ضروريًا للغاية.

في الحالات التي لا يمكن فيها تجنُّب ذلك، احرص على تنفيذ آلية للتحقّق من هوية الحزمة التي يتم تنفيذ createPackageContext عليها (على سبيل المثال، من خلال التحقّق من توقيع الحزمة).

المراجع