
تحقق غير سليم من سلسلة الشهادات في تطبيق أندرويد EagleEyes Lite
يفشل تطبيق EagleEyes Lite (الإصدار 2.0.0) في التحقق بشكل صحيح من شهادات خادم SSL/TLS أثناء اتصال HTTPS.
ينفّذ التطبيق مدير ثقة مخصصًا X509TrustManager في push.lite.avtech.com.MySSLSocketFactoryNew.checkServerTrusted() يتحقق فقط من انتهاء صلاحية الشهادة ويتجاهل التحقق الكامل من سلسلة الشهادات.
نتيجةً لذلك، يمكن للمهاجمين استغلال هذا الضعف لتنفيذ هجمات الوسيط (MITM) باستخدام شهادات موقعة ذاتيًا أو شهادات مزيفة، مما يؤدي إلى اعتراض البيانات الحساسة للمراقبة والتلاعب بها.
من خلال X509TrustManager المخصص، يتحقق التطبيق فقط من تاريخ انتهاء صلاحية الشهادة ولا يتحقق مما إذا كانت سلسلة الشهادات موثوقة بشكل صحيح.
@Override // javax.net.ssl.X509TrustManager
public void checkServerTrusted(X509Certificate[] x509CertificateArr, String str) throws CertificateException {
try {
x509CertificateArr[0].checkValidity();
} catch (Exception unused) {
throw new CertificateException("Certificate not valid or trusted.");
}
}
من خلال X509TrustManager المخصص، يتحقق التطبيق فقط من تاريخ انتهاء صلاحية الشهادة ولا يتحقق مما إذا كانت سلسلة الشهادات موثوقة بشكل صحيح.
وهذا يمكّن مهاجم الوسيط (MITM) من اعتراض أو تعديل الاتصالات الحساسة بين التطبيق وخادمه الخلفي بسهولة.
يجب على التطبيق استبدال X509TrustManager المخصص بالتنفيذ الافتراضي للنظام الذي يتحقق من سلسلة الشهادات الكاملة. ويجب فرض التحقق المناسب من اسم المضيف لمنع قبول الشهادات غير المطابقة أو غير الموثوقة.
يجب إزالة منطق التراجع غير الآمن لإصدارات أندرويد القديمة أو تحديثه بفحوصات أمان مكافئة لضمان تحقق متسق من TLS.