असुरक्षित HostnameVerifier

OWASP कैटगरी: MASVS-CODE: कोड क्वालिटी

खास जानकारी

HostnameVerifier लागू करने की सुविधा यह पुष्टि करती है कि सर्वर के सर्टिफ़िकेट में मौजूद होस्टनेम, उस सर्वर के होस्टनेम से मेल खाता है जिससे क्लाइंट कनेक्ट करने की कोशिश कर रहा है.

Android ऐप्लिकेशन में HostnameVerifier को असुरक्षित तरीके से लागू करने का मतलब है कि ऐप्लिकेशन, उस सर्वर के होस्टनेम की पुष्टि सही तरीके से नहीं करता है जिससे वह संपर्क कर रहा है. इससे हमलावर, किसी मान्य सर्वर के नाम पर काम कर सकता है. साथ ही, ऐप्लिकेशन को गुमराह करके, संवेदनशील डेटा भेजने के लिए कह सकता है.

यह जोखिम इसलिए है, क्योंकि HostnameVerifier क्लास में ऐसे फ़ंक्शन कॉल हैं जो X.509 सर्टिफ़िकेट के होस्टनेम की पुष्टि को छोड़ सकते हैं. इसके बजाय, वे सिर्फ़ सर्टिफ़िकेट के हैश की पुष्टि कर सकते हैं. आम तौर पर, यह गलतफ़हमी होती है कि SSLSession#isValid फ़ंक्शन, सुरक्षा से जुड़ा कोई काम करता है. हालांकि, असल में इसका मकसद सिर्फ़ यह जांचना होता है कि कोई सेशन मान्य है या नहीं और उसे फिर से शुरू करने या उसमें शामिल होने के लिए उपलब्ध है या नहीं. इनमें से कोई भी सेशन की सुरक्षा की पुष्टि नहीं करता. HostnameVerifier क्लास की जगह NetworkSecurityConfig ले लेगा.

असर

HostnameVerifier को असुरक्षित तरीके से लागू करने पर, ऐसी समस्याएं हो सकती हैं जिनका इस्तेमाल, एमआईटीएम (मैन-इन-द-मिडल) हमले करने के लिए किया जा सकता है. ये हमले, टारगेट किए गए ऐप्लिकेशन से आने वाले नेटवर्क ट्रैफ़िक पर किए जाते हैं. इस असुरक्षित कोड का गलत इस्तेमाल करने पर, नेटवर्क पर हमला करने वाले लोग या ग्रुप, उपयोगकर्ता के ऐप्लिकेशन के नेटवर्क डेटा को रिमोट या लोकल तौर पर ऐक्सेस कर सकते हैं. ऐसा तब होता है, जब यह कोड ट्रिगर हो जाता है. इसका असर इस बात पर निर्भर करता है कि अनजाने में कौनसा नेटवर्क ट्रैफ़िक ज़ाहिर हुआ है. जैसे, व्यक्तिगत पहचान से जुड़ी जानकारी (पीआईआई), निजी जानकारी, संवेदनशील सेशन वैल्यू, सेवा के क्रेडेंशियल वगैरह.

जोखिम कम करने के तरीके

NetworkSecurityConfig.xml का इस्तेमाल करके, यह पक्का करें कि कस्टम TLS/एसएसएल सर्टिफ़िकेट की पुष्टि करने वाले कोड का इस्तेमाल करने या लागू करने के बजाय, सभी प्रोडक्शन, टेस्टिंग, डीबगिंग, और डेवलपमेंट स्टेज कनेक्शन सही तरीके से मैनेज किए जाएं.

संसाधन