
EagleEyes Lite एंड्रॉइड एप्लिकेशन में अनुचित होस्टनेम सत्यापन
EagleEyes Lite (संस्करण 2.0.0) SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER का उपयोग करके HTTPS संचार के दौरान होस्टनाम सत्यापन को अक्षम कर देता है।
परिणामस्वरूप, एप्लिकेशन उनके कॉमन नेम (CN) या सब्जेक्ट अल्टरनेटिव नेम (SAN) मानों की परवाह किए बिना TLS प्रमाणपत्र स्वीकार करता है, जो एक हमलावर को किसी भी मान्य या स्व-हस्ताक्षरित प्रमाणपत्र के साथ वैध सर्वर का रूप धारण करने की अनुमति देता है।
उसी नेटवर्क पर स्थित एक प्रतिद्वंद्वी इस कमजोरी का फायदा उठाकर 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 (सब्जेक्ट अल्टरनेटिव नेम) अनुरोधित होस्टनाम से मेल नहीं खाता है।
परिणामस्वरूप, एक हमलावर जाली प्रमाणपत्र के साथ वैध सर्वर का रूप धारण कर सकता है और संवेदनशील संचार को इंटरसेप्ट या संशोधित करने के लिए MITM हमले शुरू कर सकता है।
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 सत्यापन सुनिश्चित हो सके।