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

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

खास जानकारी

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

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

असर

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

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

जोखिम: एन्क्रिप्ट (सुरक्षित) नहीं किए गए कम्यूनिकेशन चैनल

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

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

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

खास जोखिम

इस सेक्शन में ऐसे जोखिम शामिल होते हैं जिनके लिए गड़बड़ी को कम करने की ग़ैर-स्टैंडर्ड रणनीतियों की ज़रूरत होती है या जिन्हें SDK टूल के किसी लेवल पर कम किया गया था. ये जोखिम यहां इसलिए शामिल किए गए हैं, ताकि पूरी जानकारी दी जा सके.

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

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

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

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

एक्सएमएल

<?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, एपीआई का एक सेट उपलब्ध कराता है. इसकी मदद से, डेवलपर क्लाइंट-सर्वर लॉजिक बना सकते हैं. इसे ट्रांसपोर्ट लेयर सिक्योरिटी (TLS) का इस्तेमाल करके सुरक्षित किया जा सकता है. इससे यह पक्का किया जा सकता है कि दो एंडपॉइंट के बीच डेटा एक्सचेंज एन्क्रिप्ट (सुरक्षित) हो. इससे नुकसान पहुंचाने वाले उपयोगकर्ता, बातचीत को सुनने और संवेदनशील डेटा हासिल करने से रोके जा सकते हैं.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

संसाधन