إصلاح الثغرة الأمنية "هجوم برمجة بين التطبيقات"

هذه المعلومات موجَّهة لمطوِّري البرامج الذين لديهم تطبيقات تحتوي على الثغرة الأمنية "هجوم برمجة بين التطبيقات".

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

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

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

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

خلال هذه الفترة، سيكون تطبيقك الجديد أو تحديث التطبيق في حالة في انتظار النشر حتى تتم مراجعة طلبك. وإذا لم يتم تحديث التطبيق بشكل صحيح، سيستمر التحذير في الظهور.

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

إن مكوّنات WebView التي تتيح استخدام JavaScript وتحمّل البيانات المقروءة من آليات Intent غير موثوقة يمكن أن يتم خداعها عن طريق تطبيقات ضارّة لتنفيذ رمز JavaScript في سياق غير آمن. وننصحك أن تمنع ظهور هذه الثغرة الأمنية باتّباع إحدى الطرق التالية:

الخيار 1: التأكّد من عدم تصدير الأنشطة المتأثرة

ابحث عن أي أنشطة تتضمّن مكوّنات WebView متأثرة بالثغرة الأمنية. وإذا لم تكن هذه الأنشطة بحاجة إلى الحصول على عناصر Intent من التطبيقات الأخرى، يمكنك ضبط android:exported=false للأنشطة في ملف البيان. ويضمن هذا الإجراء عدم السماح للتطبيقات الضارّة بإرسال مُدخَلات ضارّة إلى أيّ مكوّن WebView في هذه الأنشطة.

الخيار 2: حماية مكوّنات WebView في الأنشطة التي تم تصديرها

إذا كنت تريد إعداد نشاط يشتمل على مكوِّن WebView متأثّر بالثغرة الأمنية على النحو الذي تم تصديره به، ننصحك بإجراء التغييرات التالية:

  1. حماية عمليات الاستدعاء الموجَّهة إلى evaluateJavascript وloadUrl

    تأكَّد دائمًا من موثوقية المعلَمات المرسَلة إلى evaluateJavascript. إنّ استدعاء evaluateJavascript باستخدام مُدخَلات لم يتم التحقُّق منها من عناصر Intent غير موثوق بها يسمح للمهاجمين بتنفيذ نصوص برمجية ضارّة في مكوِّن WebView المتأثّر بالثغرة الأمنية. وبالمثل، إنّ استدعاء loadUrl باستخدام مُدخَلات لم يتم التحقُّق منها تحتوي على عناوين URIs في javascript يسمح للمهاجمين بتنفيذ نصوص برمجية ضارّة.

  2. منع عمليات التحميل غير الآمنة للملفات

    تأكَّد أن مكوِّنات WebView المتأثّرة لا يمكنها تحميل قاعدة بيانات ملفات تعريف الارتباط. إنّ مكوِّنات WebView التي تُحمِّل عناوين URL لم يتم التحقق منها لمسارات //:file من ملفات Intent غير موثوق بها يمكن أن تتعرّض لهجمات التطبيقات الضارة في خطوتَين. الخطوة الأولى: يمكن لإحدى صفحات الويب الضارّة كتابة علامات <script> في قاعدة بيانات ملفات تعريف الارتباط. الخطوة الثانية: يمكن تحميل ملف قاعدة بيانات ملفات تعريف الارتباط هذا في حال أرسل أحد التطبيقات الضارة ملف Intent يحتوي على عنوان URL لملف //:file يُشير إلى قاعدة بيانات ملفات تعريف الارتباط في مكوِّن WebView، أو إذا أعادت صفحة الويب الضارة نفسها توجيه مكوِّن WebView إلى عنوان URL للملف. سيتم تحميل علامة <script> الضارة المُخزّنة في قاعدة بيانات ملفات تعريف الارتباط وتنفيذها، ما قد يؤدي إلى سرقة معلومات الجلسة.

    يمكنك التأكُّد من أنه لا يمكن لمكوِّنات WebView المتأثرة بالثغرة الأمنية تحميل قاعدة بيانات ملفات تعريف الارتباط في مكوِّن WebView بثلاثة طرق.

    1. إيقاف الوصول إلى جميع الملفات
    2. تأكَّد من أن مكوِّن WebView يُحمِّل عناوين URL في المسار //:file فقط والتحقّق من أن كل عناوين URL في المسار //:file تُشير إلى ملفات آمنة. تجدُر الإشارة إلى أنه بإمكان أيّ مهاجم استخدام رابط رمزي لخداع عمليات التحقُّق على مسار عنوان URL. لمنع مثل هذا الهجوم، احرص على التحقُّق من المسار الأساسي لأيّ عنوان URL غير موثوق به في مسار //:file قبل التحميل بدلاً من التحقُّق من مسار عنوان URL فقط.
    3. إذا كنت تريد السماح لكلٍ من عناوين URL التي تستخدم المسار //:http وعناوين URL التي تستخدم المسار //:file، تحقّق من عناوين URL التي تستخدم المسار //:file باستخدام shouldOverrideUrlLoading وshouldInterceptRequest في WebViewClient. ويضمن ذلك أنه تم التحقُّق من جميع عناوين URL التي تم تحميلها في مكوّن WebView، وليس فقط عناوين URL التي تم تقديمها مباشرةً إلى استدعاء الدالة ()loadUrl.

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

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

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