X509TrustManager غير آمن

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

نظرة عامة

فئة X509TrustManager مسؤولة عن التحقّق من صحة خادم بعيد. ويتم ذلك من خلال التحقّق من صحة شهادة الخادم.

إنّ تنفيذ X509TrustManager غير آمن في أحد تطبيقات Android هو تنفيذ لا يتحقّق بشكل صحيح من صحة الخادم الذي يتواصل معه التطبيق. ويمكن أن يسمح ذلك للمهاجم بانتحال هوية خادم شرعي وخداع التطبيق لإرسال بيانات حساسة إليه.

تحدث الثغرة الأمنية بسبب استخدام الفئة X509TrustManager، حيث يسمح Java/Android بتجاوز عملية التحقّق من الخادم بالكامل. تتضمّن الفئة X509TrustManager دالتَين مهمتَين: checkServerTrusted() وgetAcceptedIssuers(). يمكن ضبط عمليات استدعاء الدالة هذه للوثوق بجميع شهادات X.509. أخيرًا، قد تكون منطق التحقّق المخصّص من الصحة معطّلاً أو غير مكتمل، ما يسمح بحدوث اتصالات غير متوقّعة. في كل هذه الحالات، تم إلغاء الغرض من الفئة، كما أنّ اتصال الشبكة الذي تم إنشاؤه استنادًا إلى الناتج X509TrustManager ليس آمنًا.

التأثير

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

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

استخدِم وظيفة NetworkSecurityConfig.xml للتأكّد من أنّه يتم التعامل مع جميع الاتصالات في مراحل الإنتاج والاختبار وتصحيح الأخطاء والتطوير بشكل سليم، بدلاً من استخدام رمز مخصّص للتحقّق من صحة شهادة TLS/SSL أو تنفيذه. إذا كنت بحاجة إلى استخدام شهادة موقَّعة ذاتيًا في إصدارات الاختبار وتصحيح الأخطاء، ننصحك باستخدام NetworkSecurityConfig بدلاً من تنفيذ X509TrustManager مخصّص.

المراجع