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

OWASP कैटगरी: MASVS-NETWORK: Network Communication

खास जानकारी

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 कीस्टोर का सुझाव दिया जाता है.
  • पक्का करें कि इस्तेमाल किए जा सकने वाले साइफ़र, सुरक्षा के सबसे सही तरीकों का पालन करते हों.

संसाधन