पैकेज कॉन्टेक्स्ट बनाएं

OWASP कैटगरी: MASVS-CODE: कोड क्वालिटी

खास जानकारी

public abstract Context createPackageContext (String packageName, int flags)

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

उदाहरण के लिए, अगर डेवलपर को तीसरे पक्ष के ऐप्लिकेशन से संसाधन चाहिए या उससे कॉल करने के तरीके चाहिए, तो वे createPackageContext का इस्तेमाल करेंगे.

हालांकि, अगर कोई ऐप्लिकेशन CONTEXT_IGNORE_SECURITY और CONTEXT_INCLUDE_CODE फ़्लैग के साथ createPackageContext को कॉल करता है और फिर getClassLoader() को कॉल करता है, तो इससे ऐप्लिकेशन को नुकसान पहुंचाने वाले ऐप्लिकेशन के कोड को चलाने की सुविधा मिल सकती है. उदाहरण के लिए, ऐसा तब हो सकता है, जब कोई हमलावर ऐसे पैकेज के नाम का इस्तेमाल करे जिस पर दावा नहीं किया गया है (पैकेज पर कब्जा करना). ऐसा तब होता है, जब डेवलपर को उम्मीद होती है कि उपयोगकर्ता के डिवाइस पर वह पैकेज मौजूद होगा.

इस तरह के हमले का शिकार होने के लिए, ऐप्लिकेशन को इन शर्तों को पूरा करना होगा:

जोखिम में पड़ने वाला ऐप्लिकेशन:

नुकसान पहुंचाने वाला ऐप्लिकेशन:

  • वह पैकेज के उस नाम पर दावा कर सकता है जिसे असुरक्षित ऐप्लिकेशन, createPackageContext को पास करता है.
  • android:appComponentFactory को एक्सपोर्ट करता है.

असर

जब कोई ऐप्लिकेशन, createPackageContext का इस्तेमाल असुरक्षित तरीके से करता है, तो इससे नुकसान पहुंचाने वाले ऐप्लिकेशन को, जोखिम की आशंका वाले ऐप्लिकेशन के संदर्भ में, मनमुताबिक कोड को लागू करने की अनुमति मिल सकती है.

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

जब तक ज़रूरी न हो, तब तक createPackageContext को CONTEXT_IGNORE_SECURITY और CONTEXT_INCLUDE_CODE के साथ कॉल न करें.

जिन मामलों में ऐसा करना ज़रूरी है उनमें, उस पैकेज की पहचान की पुष्टि करने के लिए कोई तरीका लागू करना न भूलें जिस पर createPackageContext को लागू किया जा रहा है. उदाहरण के लिए, पैकेज के हस्ताक्षर की पुष्टि करके.

संसाधन