فئة OWASP: MASVS-CODE: جودة الرموز البرمجية
نظرة عامة
تتحمّل عملية تنفيذ HostnameVerifier
مسؤولية التحقّق من تطابق اسم المضيف في شهادة الخادم مع اسم المضيف للخادم الذي يحاول العميل الاتصال به.
التنفيذ غير الآمن لواجهة HostnameVerifier في تطبيق Android هو تنفيذ لا يتحقق بشكل صحيح من اسم المضيف للخادم الذي يتواصل معه التطبيق. ويمكن أن يسمح ذلك للمهاجم بالتنكر بصفته خادمًا شرعيًا وخداع التطبيق لإرسال بيانات حساسة إليه.
تحدث هذه الثغرة الأمنية لأنّ فئة HostnameVerifier
تحتوي على طلبات اتّباع دالة
يمكنها تخطّي عملية التحقّق من اسم المضيف لشهادة X.509، وبدلاً من ذلك، تحقّق فقط من تجزئة الشهادة. من المفاهيم الخاطئة الشائعة أنّ الدالة
SSLSession#isValid
تُجري عملية ذات صلة بالأمان، بينما
الغرض منها في الواقع هو التحقّق فقط مما إذا كانت الجلسة صالحة ومتاحة
لاستئنافها أو الانضمام إليها، ولا يتحقق أي منهما من أمان الجلسة. تم استبدال فئة
HostnameVerifier بفئة NetworkSecurityConfig.
التأثير
يمكن أن تؤدي عمليات التنفيذ غير الآمنة لواجهة HostnameVerifier إلى ثغرات أمنية يمكن استخدامها لشن هجمات وسيطة على حركة بيانات الشبكة من التطبيق المستهدف. ويؤدي استغلال هذا الرمز غير الآمن إلى إمكانية اختراق بيانات شبكة التطبيق الخاصة بالمستخدم من قِبل مخترِقي الشبكة (عن بُعد أو على الجهاز) في حال تنشيط هذا الرمز. يعتمد التأثير على محتوى زيارات الشبكة التي يتم الكشف عنها عن غير قصد (معلومات تحديد الهوية الشخصية والمعلومات الخاصة وقيم الجلسات الحسّاسة ومعلومات اعتماد الخدمة وما إلى ذلك).
إجراءات التخفيف
استخدِم NetworkSecurityConfig.xml لضمان معالجة جميع عمليات الاتصال في مرحلة الإنتاج والاختبار وتصحيح الأخطاء ومرحلة التطوير بشكلٍ سليم، بدلاً من استخدام رمز التحقّق المخصّص لشهادة بروتوكول أمان طبقة النقل (TLS) أو طبقة المقابس الآمنة (SSL) أو تنفيذه.
المراجع
- مستندات إعداد أمان الشبكة
- يبحث هذا التحقّق عن عمليات تنفيذ لواجهة HostnameVerifier تُعرِض طريقة verify دائمًا القيمة true (ما يؤدي إلى الوثوق بأي اسم مضيف).
- مستندات المطوّرين لفئة HostnameVerifier
- AllowAllHostnameVerifierDetector class in Android