Implicit PendingIntent से जुड़े जोखिम की आशंका दूर करने का तरीका

यह जानकारी उन डेवलपर के लिए है जिनके ऐप्लिकेशन में Implicit PendingIntent से जुड़े जोखिम की आशंका है.

इससे क्या होता है

आपके एक या एक से ज़्यादा ऐप्लिकेशन में Implicit PendingIntent से जुड़ी समस्या है. इसकी वजह से, सेवा में रुकावट आने, निजी डेटा चोरी होने, और प्रिविलेज एस्कलेशन जैसे सुरक्षा से जुड़े खतरे हो सकते हैं. अपने ऐप्लिकेशन से जुड़ी समस्या ठीक करने के लिए, कृपया नीचे ज़्यादा जानकारी के साथ दिया गया तरीका देखें.  Implicit pendingIntent का इस्तेमाल आपके ऐप्लिकेशन में कहां-कहां हुआ है, यह देखने के लिए, Play Console में ऐप्लिकेशन की सूचना वाले पेज पर जाएं. अगर किसी जगह की जानकारी के आखिर में “डाइनैमिक रूप से लोड किया हुआ कोड” दिया हुआ है, तो इसका मतलब है कि उस जगह की जानकारी में, ऐप्लिकेशन या ऐप्लिकेशन में इस्तेमाल होने वाली लाइब्रेरी से डाइनैमिक तौर पर लोड किए गए कोड का इस्तेमाल किया गया है. ऐप्लिकेशन आम तौर पर, मांग पर उपलब्ध सुविधा की डिलीवरी के ज़रिए, डाइनैमिक तौर पर लोड किए गए कोड का इस्तेमाल करते हैं. हालांकि, ऐसी अन्य तकनीक भी मौजूद होती हैं जिन्हें सुझाया नहीं जाता. इनमें से कुछ तकनीक Google Play की नीति का भी उल्लंघन करती हैं और इन्हें इस्तेमाल नहीं किया जाना चाहिए. इसके अलावा, पैकर टूल की मदद से ऐप्लिकेशन कोड को डाइनैमिक रूप से लोड होने वाले कोड में बदला जा सकता है.

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

कुछ और जानकारी

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

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

अगला तरीका

1. अपने ऐप्लिकेशन को अपडेट करें. इसके बाद, नीचे बताए गए तरीके से “Implicit PendingIntent” की समस्या को ठीक करें.

जहां PendingIntent को बनाया गया है उस जगह का पता लगाने के लिए, अपने ऐप्लिकेशन की समीक्षा करें. उदाहरण के लिए, नीचे दिया गया कोड किसी इंप्लिसिट इंटेट के साथ रैप करके PendingIntent बनाता है: 

// इंप्लिसिट बेस इंटेंट बनाएं और उसे PendingIntent के साथ रैप करें

Intent base = new Intent("ACTION_FOO");

base.setPackage("some_package");

PendingIntent pi = PendingIntent.getService(this, 0, base, 0);

Google का सुझाव है कि डेवलपर इनमें से किसी एक या सभी तरीकों को लागू करके, जोखिम की आशंका को ठीक करें:

  • यह पक्का करें कि बेस इंटेंट की कार्रवाई, पैकेज, और कॉम्पोनेंट फ़ील्ड को सेट किया जा चुका हो; 
  • यह पक्का करें कि PendingIntent सिर्फ़ भरोसेमंद कॉम्पोनेंट को ही डिलीवर किया जाता हो; 
  • PendingIntents को बनाने के लिए, FLAG_IMMUTABLE (SDK टूल के वर्शन 23 में जोड़ा गया है) का इस्तेमाल करें. इससे, उन ऐप्लिकेशन को रोका जाता है जिन्हें खाली प्रॉपर्टी से भरने की वजह से PendingIntent मिलता है. अगर ऐप्लिकेशन, SDK टूल के वर्शन 22 या उससे पहले के वर्शन पर चल रहे डिवाइस में भी काम करता है, तो हमारा सुझाव है कि डेवलपर, पैटर्न की मदद से PendingIntent बनाने की प्रोसेस को मज़बूत करते समय पिछले विकल्पों को लागू करें:

if (android.os.Build.VERSION.SDK_INT >= 23) {

  // FLAG_IMMUTABLE का इस्तेमाल करके PendingIntent बनाएं

} else {

  // मौजूदा कोड, जो PendingIntent बनाता है

}

2. अपडेट किया गया APK सबमिट करना

अपडेट किए गए ऐप्लिकेशन बंडल या APK सबमिट करने के लिए:

  1. अपने Play Console पर जाएं.
  2. ऐप्लिकेशन चुनें.
  3. ऐप्लिकेशन बंडल एक्सप्लोरर पर जाएं.
  4. सबसे ऊपर दाईं ओर मौजूद ड्रॉपडाउन मेन्यू में, नीतियों का पालन न करने वाले APK/ऐप्लिकेशन बंडल का ऐप्लिकेशन वर्शन चुनें. साथ ही, यह भी ध्यान दें कि वे APK/ऐप्लिकेशन बंडल किन रिलीज़ में इस्तेमाल किए जा रहे हैं.
  5. नीति से जुड़ी समस्या वाले ट्रैक पर जाएं. यह इन चारों पेज में से कोई एक होगा: इंटरनल / क्लोज़्ड / ओपन टेस्टिंग या प्रोडक्शन.
  6. पेज के सबसे ऊपर दाईं ओर, नई रिलीज़ बनाएं पर क्लिक करें. (पहले आपको ट्रैक मैनेज करें पर क्लिक करना पड़ सकता है)
    • अगर उल्लंघन करने वाले APK की रिलीज़, ड्राफ़्ट स्थिति में है, तो उसे खारिज करें.
  7. ऐप्लिकेशन बंडल या APKs का ऐसा वर्शन जोड़ें जो नीति का पालन करता हो.
    • पक्का करें कि ऐप्लिकेशन बंडल या APKs का वह वर्शन जो नीतियों का पालन नहीं करता है वह इस रिलीज़ के, शामिल नहीं किए गए सेक्शन में हो. ज़्यादा जानकारी के लिए, कृपया Play Console के सहायता लेख में, "शामिल नहीं किए गए (ऐप्लिकेशन बंडल और APKs)" सेक्शन को देखें.
  8. अपनी रिलीज़ में किए गए बदलाव सेव करने के लिए, सेव करें चुनें.
  9. जब आपकी रिलीज़ तैयार हो जाए, तो रिलीज़ की समीक्षा करें चुनें.

अगर नीति का पालन नहीं करने वाले APK को एक से ज़्यादा ट्रैक पर रिलीज़ किया गया है, तो हर ट्रैक में पांच से नौ तक के चरणों को दोहराएं.

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

हम आपकी मदद के लिए हमेशा तैयार हैं

अगर आपके पास जोखिम की आशंका से जुड़ा कोई तकनीकी सवाल है, तो इसे Stack Overflow पर पोस्ट करें और इसके साथ “android-security” टैग का इस्तेमाल करें. इस समस्या को ठीक करने के बारे में जानने के लिए, हमारी डेवलपर सहायता टीम से संपर्क करें.

false
मुख्य मेन्यू
5435442746570384321
true
खोज मदद केंद्र
true
true
true
true
true
5016068
false
false