كيفية إصلاح الثغرة الأمنية Fragment Injection "إدخال تجزئة"

هذه المعلومات مفيدة لمطوّري البرامج الذين لديهم تطبيقات تستخدم فئات PreferenceActivity بشكل غير آمن، وهو ما يجعلها عرضة لما يُعرف باسم Fragment Injection "إدخال تجزئة". ومن الممكن أن يسمح هذا التنفيذ من الاستخدام لتطبيق خارجي ضار بتحميل أجزاء من المفترض أن تكون خاصة.

تحليل المشكلة

اعتبارًا من 1 آذار (مارس) 2017، بدأ Google Play بحظر نشر أيّ تطبيقات أو تحديثات جديدة حيث قد تكون فئات PreferenceActivity عرضة للثغرة الأمنية Fragment Injection "إدخال التجزئة". يُرجى الرجوع إلى الإشعار في حسابك على Play Consoleوبعد مرور المواعيد النهائية الموضّحة في حسابك على Play Console، قد يتم حذف أيّ تطبيقات تحتوي على ثغرات أمنية لم يتم إصلاحها من Google Play.

الإجراء المطلوب​

  1. سجِّل الدخول إلى حسابك على Play Console، وانتقِل إلى قسم "التنبيهات" لمعرفة التطبيقات المتأثرة بالثغرة الأمنية والمواعيد النهائية لحلّ هذه المشاكل.
  2. حدِّث تطبيقاتك المتأثرة بالثغرة الأمنية وأصلِحها.
  3. أرسِل النسخ المُحدّثة من تطبيقاتك المتأثرة بالثغرة الأمنية.

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

تفاصيل إضافية

يمكنك - كلما أمكن - ضبط exported=false لفئة PreferenceActivity في بيانك، وسيمنع ذلك التطبيقات الخارجية من إرسال عناصر Intent إلى هذه الفئة.

إذا كان تصدير فئة PreferenceActivity التي بها ثغرات أمنية إلى التطبيقات الخارجية أمرًا حتميًا، فيجب تحديد سبب احتواء هذه الفئة على ثغرات أمنية واتخاذ الإجراءات المناسبة. هناك احتمالان:

  1. الاستخدام الخاطئ لـ isValidFragment:

تحققْ لمعرفة ما إذا كانت الفئة التي بها ثغرات أمنية تحتوي على طريقة استخدام لفئة isValidFragment تؤدي إلى عرض قيمة "true" على كل مسارات الشفرة، أو لمعرفة ما إذا كانت هذه الفئة تنسخ طريقة الاستخدام هذه. وإذا كان هذا صحيحًا، فعليك تحديث الفئة للبحث عن قائمة بفئات التجزئة المسموح بها. على سبيل المثال: إذا كان يجب أن تسمح فئة PreferenceActivity باستخدام فئات MyFragment وليس أي فئات تجزئة أخرى، فعليك تنفيذ فحص مثل ما يلي:

         public boolean isValidFragment(String fragmentName) {
            return MyFragment.class.getName().equals(fragmentName);

         }

  1. فئة targetSdkVersion قيمتها أقل من 19 ولا تستخدم isValidFragment:

إذا كان التطبيق يضبط فئته targetSdkVersion في البيان على قيمة أقل من 19 وكانت الفئة التي بها ثغرات أمنية لا تحتوي على أي استخدام لفئة isValidFragment، فهذا يعني أن الثغرة الأمنية قد تم نسخها من PreferenceActivity.

لحل هذه المشكلة، يجب على مطوّري البرامج تحديث targetSdkVersion إلى الإصدار 19 أو إلى إصدار أحدث. وبدلاً من ذلك، في حال تعذُّر تحديث targetSdkVersion، يجب على مطوّري البرامج استخدام isValidFragment كما هو موضَّح في 1) للبحث عن فئات تجزئة مسموح بها.

تجدر الإشارة إلى أنه يجب أيضًا أن تلتزم التطبيقات باتفاقية توزيع مطوّري البرامج وسياسة المحتوى

تسرّنا مساعدتك

إذا كان لديك أسئلة فنية بشأن الثغرات، يمكنك طرحها على موقع Stack Overflow واستخدام العلامة "android-security". لمزيد من التوضيح بشأن الخطوات المطلوبة لحلّ هذه المشكلة، يمكنك التواصل مع فريق دعم مطوّري البرامج.

هل كان ذلك مفيدًا؟

كيف يمكننا تحسينها؟
false
القائمة الرئيسية
2385780339649216098
true
مركز مساعدة البحث
true
true
true
true
true
5016068
false
false