
التحقق غير السليم من اسم المضيف في تطبيق EagleEyes Lite لنظام Android
يقوم تطبيق EagleEyes Lite (الإصدار 2.0.0) بتعطيل التحقق من اسم المضيف أثناء اتصال HTTPS باستخدام SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER.
ونتيجة لذلك، يقبل التطبيق شهادات TLS بغض النظر عن قيم الاسم الشائع (CN) أو الاسم البديل للموضوع (SAN)، مما يسمح للمهاجم بانتحال شخصية الخادم الشرعي باستخدام أي شهادة صالحة أو موقعة ذاتياً.
يمكن للمهاجم الموجود على نفس الشبكة استغلال هذا الضعف لتنفيذ هجوم رجل في الوسط (MITM)، وبالتالي اعتراض أو تعديل الاتصالات الحساسة بين التطبيق وخدمات AVTECH الخلفية.
عندما يعمل الجهاز على إصدارات Android الأقل من 8.0، أي عندما تكون SDK_API_26 مضبوطة على false، فإن الطريقة لا ترجع GetHttpsUrlResponse().
بدلاً من ذلك، تنفذ المنطق الضعيف داخل كتلة try.
public static String GetHttpsResponse(String str) {
if (SDK_API_26) {
return GetHttpsUrlResponse(str);
}
try {
...
X509HostnameVerifier x509HostnameVerifier = SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory();
socketFactory.setHostnameVerifier(x509HostnameVerifier);
...
}
...
}
هنا، يؤدي استخدام SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER إلى تعطيل التحقق السليم من اسم المضيف، مما يعني أن اتصال TLS ينجح حتى إذا كان الاسم الشائع (CN) أو الاسم البديل للموضوع (SAN) لشهادة الخادم لا يتطابق مع اسم المضيف المطلوب.
ونتيجة لذلك، يمكن للمهاجم انتحال شخصية الخادم الشرعي بشهادة مزيفة وشن هجمات رجل في الوسط لاعتراض أو تعديل الاتصالات الحساسة.
من خلال تشغيل سكريبت حقن Frida hook.js، تم ضبط قيمة SDK_API_26 قسراً على false لمحاكاة إصدار Android أقل. سمح لنا هذا بمراقبة ما إذا كانت طريقة GetHttpsResponse() قد تم استدعاؤها.
ونتيجة لذلك، تأكدنا من أن GetHttpsResponse() تم استدعاؤها بنجاح أثناء التنفيذ.
للتشفير غير الكافي للمعلومات الحساسة في المعاملات، يرجى الرجوع إلى CVE-2025-50110.
يجب على التطبيق إزالة استخدام SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER وفرض التحقق الصارم من اسم المضيف لجميع اتصالات HTTPS. يجب التحقق من حقول الاسم الشائع (CN) أو الاسم البديل للموضوع (SAN) للخادم مقابل اسم المضيف المطلوب، باستخدام HttpsURLConnection.getDefaultHostnameVerifier() أو أداة تحقق صارمة مكافئة.
بالإضافة إلى ذلك، يجب إزالة أي منطق احتياطي قديم يعطل فحص اسم المضيف لإصدارات Android الأقدم أو استبداله بتنفيذات آمنة لضمان التحقق المتسق من TLS.