क्लियरटेक्स्ट कम्युनिकेशन

OWASP कैटगरी: MASVS-NETWORK: नेटवर्क कम्यूनिकेशन

खास जानकारी

Android ऐप्लिकेशन में क्लियरटेक्स्ट नेटवर्क कम्यूनिकेशन की अनुमति देने का मतलब है कि नेटवर्क ट्रैफ़िक को मॉनिटर करने वाला कोई भी व्यक्ति, ट्रांसमिट किए जा रहे डेटा को देख सकता है और उसमें बदलाव कर सकता है. अगर ट्रांसमिट किए गए डेटा में संवेदनशील जानकारी शामिल है, तो यह एक जोखिम है. जैसे, पासवर्ड, क्रेडिट कार्ड नंबर या अन्य निजी जानकारी.

चाहे संवेदनशील जानकारी भेजी जा रही हो या नहीं, क्लियरटेक्स्ट का इस्तेमाल करना अब भी जोखिम भरा हो सकता है. ऐसा इसलिए, क्योंकि क्लियरटेक्स्ट ट्रैफ़िक में भी नेटवर्क पर होने वाले हमलों से छेड़छाड़ की जा सकती है. जैसे, एआरपी या डीएनएस पॉइज़निंग. इससे हमलावर, ऐप्लिकेशन के व्यवहार को प्रभावित कर सकते हैं.

असर

जब कोई Android ऐप्लिकेशन, नेटवर्क पर सादे टेक्स्ट में डेटा भेजता या पाता है, तो नेटवर्क को मॉनिटर करने वाला कोई भी व्यक्ति उस डेटा को इंटरसेप्ट और पढ़ सकता है. अगर इस डेटा में पासवर्ड, क्रेडिट कार्ड नंबर या निजी मैसेज जैसी संवेदनशील जानकारी शामिल है, तो इससे पहचान की चोरी, वित्तीय धोखाधड़ी, और अन्य गंभीर समस्याएं हो सकती हैं.

उदाहरण के लिए, अगर कोई ऐप्लिकेशन पासवर्ड को सादे टेक्स्ट में ट्रांसमिट करता है, तो ट्रैफ़िक को इंटरसेप्ट करने वाला कोई व्यक्ति इन क्रेडेंशियल को ऐक्सेस कर सकता है. इसके बाद, इस डेटा का इस्तेमाल करके, उपयोगकर्ता के खातों को बिना अनुमति के ऐक्सेस किया जा सकता है.

जोखिम: असुरक्षित कम्यूनिकेशन चैनल

बिना एन्क्रिप्ट (सुरक्षित) किए गए कम्यूनिकेशन चैनल पर डेटा ट्रांसमिट करने से, डिवाइस और ऐप्लिकेशन के एंडपॉइंट के बीच शेयर किया गया डेटा सार्वजनिक हो जाता है. इस डेटा को कोई हमलावर बीच में रोक सकता है और इसमें बदलाव कर सकता है.

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

डेटा को एन्क्रिप्ट (सुरक्षित) किए गए कम्यूनिकेशन चैनल से भेजा जाना चाहिए. सुरक्षित प्रोटोकॉल का इस्तेमाल, उन प्रोटोकॉल के विकल्प के तौर पर किया जाना चाहिए जिनमें एन्क्रिप्शन की सुविधा नहीं होती है.

खास जोखिम

इस सेक्शन में उन जोखिमों के बारे में जानकारी दी जाती है जिनके लिए, जोखिम कम करने की सामान्य रणनीतियों के अलावा अन्य रणनीतियों की ज़रूरत होती है. इसके अलावा, इसमें उन जोखिमों के बारे में भी जानकारी दी जाती है जिन्हें एसडीके के किसी लेवल पर कम किया गया था और यहां पूरी जानकारी देने के लिए मौजूद हैं.

खतरा: एचटीटीपी

इस सेक्शन में दिए गए दिशा-निर्देश, सिर्फ़ उन ऐप्लिकेशन पर लागू होते हैं जो Android 8.1 (एपीआई लेवल 27) या इससे पहले के वर्शन को टारगेट करते हैं. Android 9 (एपीआई लेवल 28) से, URLConnection, Cronet, और OkHttp जैसे एचटीटीपी क्लाइंट, एचटीटीपीएस का इस्तेमाल करने के लिए ज़रूरी करते हैं. इसलिए, क्लियरटेक्स्ट के साथ काम करने की सुविधा डिफ़ॉल्ट रूप से बंद होती है. हालांकि, ध्यान रखें कि Ktor जैसी अन्य HTTP क्लाइंट लाइब्रेरी, क्लियरटेक्स्ट पर इन पाबंदियों को लागू नहीं करती हैं. इसलिए, इनका इस्तेमाल सावधानी से करना चाहिए.

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

NetworkSecurityConfig.xml सुविधा का इस्तेमाल करके, cleartext ट्रैफ़िक से ऑप्ट-आउट करें. साथ ही, अपने ऐप्लिकेशन के लिए एचटीटीपीएस को लागू करें. हालांकि, सिर्फ़ उन खास डोमेन के लिए अपवाद लागू करें जिनकी ज़रूरत है. आम तौर पर, ऐसा डीबग करने के लिए किया जाता है:

एक्सएमएल

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="false">
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">debug.domain.com</domain>
    </domain-config>
</network-security-config>

इस विकल्प की मदद से, ऐप्लिकेशन में अनजाने में होने वाली रिग्रेशन को रोका जा सकता है. ऐसा तब होता है, जब बैकएंड सर्वर जैसे बाहरी सोर्स से मिले यूआरएल में बदलाव किए जाते हैं.


जोखिम: एफ़टीपी

डिवाइसों के बीच फ़ाइलें ट्रांसफ़र करने के लिए एफ़टीपी प्रोटोकॉल का इस्तेमाल करने से कई जोखिम होते हैं. इनमें सबसे अहम जोखिम यह है कि कम्यूनिकेशन चैनल पर एन्क्रिप्शन की सुविधा उपलब्ध नहीं होती. इसके बजाय, एसएफ़टीपी या एचटीटीपीएस जैसे ज़्यादा सुरक्षित विकल्पों का इस्तेमाल किया जाना चाहिए.

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

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

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

  • पहचान की पुष्टि – उपयोगकर्ताओं को OAuth 2.0 जैसे सुरक्षित तरीकों का इस्तेमाल करके, अपनी पहचान की पुष्टि करनी चाहिए. आम तौर पर, बुनियादी पुष्टि करने के तरीके का इस्तेमाल न करने की सलाह दी जाती है. इसकी वजह यह है कि यह सेशन मैनेजमेंट के तरीके उपलब्ध नहीं कराता. साथ ही, अगर क्रेडेंशियल को गलत तरीके से सेव किया जाता है, तो उन्हें Base64 से डिकोड किया जा सकता है.
  • अनुमति – उपयोगकर्ताओं को सिर्फ़ उन संसाधनों को ऐक्सेस करने की अनुमति होनी चाहिए जिनके लिए उन्हें अनुमति दी गई है. इसके लिए, कम से कम अधिकार का सिद्धांत लागू किया जाना चाहिए. इसके लिए, ऐप्लिकेशन की ऐसेट के लिए ऐक्सेस कंट्रोल के समाधानों को सावधानीपूर्वक अपनाना होगा.
  • पक्का करें कि सुरक्षा के सबसे सही तरीकों का पालन करते हुए, सोच-समझकर और हाल ही में तैयार की गई सिफ़र सुइट का इस्तेमाल किया गया हो. उदाहरण के लिए, अगर एचटीटीपीएस कम्यूनिकेशन के लिए ज़रूरी हो, तो TLSv1.3 प्रोटोकॉल के साथ काम करने की सुविधा चालू करें.

जोखिम: कस्टम-कम्यूनिकेशन प्रोटोकॉल

कम्यूनिकेशन के कस्टम प्रोटोकॉल लागू करना या जाने-माने प्रोटोकॉल को मैन्युअल तरीके से लागू करने की कोशिश करना खतरनाक हो सकता है.

कस्टम प्रोटोकॉल की मदद से, डेवलपर अपनी ज़रूरतों के हिसाब से खास समाधान तैयार कर सकते हैं. हालांकि, डेवलपमेंट प्रोसेस के दौरान होने वाली किसी भी गड़बड़ी की वजह से, सुरक्षा से जुड़ी समस्याएं हो सकती हैं. उदाहरण के लिए, सेशन हैंडलिंग के तरीके डेवलप करने में हुई गड़बड़ियों की वजह से, हमलावर बातचीत को सुन सकते हैं. साथ ही, संवेदनशील जानकारी को तुरंत वापस पा सकते हैं.

दूसरी ओर, ओएस या अच्छी तरह से मैनेज की गई तीसरे पक्ष की लाइब्रेरी का इस्तेमाल किए बिना, एचटीटीपीएस जैसे जाने-माने प्रोटोकॉल लागू करने से कोडिंग से जुड़ी गड़बड़ियां होने की संभावना बढ़ जाती है. इससे, ज़रूरत पड़ने पर लागू किए गए प्रोटोकॉल को अपडेट करना मुश्किल हो सकता है. इसके अलावा, इससे सुरक्षा से जुड़े जोखिम की वही समस्याएं हो सकती हैं जो कस्टम प्रोटोकॉल इस्तेमाल करने पर होती हैं.

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

कम्यूनिकेशन के जाने-माने प्रोटोकॉल लागू करने के लिए, मैनेज की गई लाइब्रेरी का इस्तेमाल करना

अपने ऐप्लिकेशन में एचटीटीपीएस जैसे जाने-माने प्रोटोकॉल लागू करने के लिए, ओएस लाइब्रेरी या तीसरे पक्ष की मैनेज की गई लाइब्रेरी का इस्तेमाल किया जाना चाहिए.

इससे डेवलपर को ऐसे समाधान चुनने की सुरक्षा मिलती है जिनकी अच्छी तरह से जांच की गई है, समय के साथ उनमें सुधार किया गया है, और सामान्य कमज़ोरियों को ठीक करने के लिए लगातार सुरक्षा अपडेट मिल रहे हैं.

इसके अलावा, जाने-माने प्रोटोकॉल का इस्तेमाल करने से, डेवलपर को कई सिस्टम, प्लैटफ़ॉर्म, और आईडीई के साथ काम करने की सुविधा मिलती है. इससे डेवलपमेंट की प्रोसेस के दौरान, मानवीय गलतियों की संभावना कम हो जाती है.

एसएफ़टीपी का इस्तेमाल करना

यह प्रोटोकॉल, डेटा को एन्क्रिप्ट (सुरक्षित) करके, एक जगह से दूसरी जगह भेजता है. इस तरह के फ़ाइल एक्सचेंज प्रोटोकॉल का इस्तेमाल करते समय, इन बातों का ध्यान रखना चाहिए:

  • SFTP में, पुष्टि करने के अलग-अलग तरीके इस्तेमाल किए जा सकते हैं. पासवर्ड के आधार पर पुष्टि करने के बजाय, सार्वजनिक कुंजी की मदद से पुष्टि करने के तरीके का इस्तेमाल किया जाना चाहिए. ऐसी कुंजियों को सुरक्षित तरीके से बनाया और सेव किया जाना चाहिए. इसके लिए, Android Keystore का इस्तेमाल करने का सुझाव दिया जाता है.
  • पक्का करें कि इस्तेमाल किए जा सकने वाले सिफ़र, सुरक्षा के सबसे सही तरीकों का पालन करते हों.

संसाधन