डीप लिंक का असुरक्षित तरीके से इस्तेमाल करना

OWASP कैटगरी: MASVS-PLATFORM: प्लैटफ़ॉर्म इंटरैक्शन

खास जानकारी

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

असर

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

Android, डिज़ाइन के हिसाब से एक ही डीप लिंक यूआरआई के लिए, कई ऐप्लिकेशन को इंटेंट फ़िल्टर रजिस्टर करने की अनुमति देता है. नुकसान पहुंचाने वाले ऐप्लिकेशन को आपके ऐप्लिकेशन के लिए बने डीप लिंक को इंटरसेप्ट करने से रोकने के लिए, ऐप्लिकेशन के AndroidManifest में intent-filter में android:autoVerify एट्रिब्यूट लागू करें. इससे उपयोगकर्ताओं को डीप लिंक मैनेज करने के लिए, अपनी पसंद का ऐप्लिकेशन चुनने की सुविधा मिलती है. इससे, यह पक्का किया जा सकता है कि ऐप्लिकेशन सही तरीके से काम कर रहा है. साथ ही, नुकसान पहुंचाने वाले ऐप्लिकेशन को डीप लिंक का अपने-आप विश्लेषण करने से रोका जा सकता है.

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

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

  <!-- Make sure you explicitly set android:autoVerify to "true". -->
  <intent-filter android:autoVerify="true">
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
  
      <!-- If a user clicks on a shared link that uses the "http" scheme, your
           app should be able to delegate that traffic to "https". -->
      <data android:scheme="http" />
      <data android:scheme="https" />
  
      <!-- Include one or more domains that should be verified. -->
      <data android:host="..." />
  </intent-filter>

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

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

संसाधन