पैकेज कॉन्टेक्स्ट बनाएं
संग्रह की मदद से व्यवस्थित रहें
अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.
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
को लागू किया जा रहा है. उदाहरण के लिए, पैकेज के हस्ताक्षर की पुष्टि करके.
संसाधन
इस पेज पर मौजूद कॉन्टेंट और कोड सैंपल कॉन्टेंट के लाइसेंस में बताए गए लाइसेंस के हिसाब से हैं. Java और OpenJDK, Oracle और/या इससे जुड़ी हुई कंपनियों के ट्रेडमार्क या रजिस्टर किए हुए ट्रेडमार्क हैं.
आखिरी बार 2025-07-26 (UTC) को अपडेट किया गया.
[[["समझने में आसान है","easyToUnderstand","thumb-up"],["मेरी समस्या हल हो गई","solvedMyProblem","thumb-up"],["अन्य","otherUp","thumb-up"]],[["वह जानकारी मौजूद नहीं है जो मुझे चाहिए","missingTheInformationINeed","thumb-down"],["बहुत मुश्किल है / बहुत सारे चरण हैं","tooComplicatedTooManySteps","thumb-down"],["पुराना","outOfDate","thumb-down"],["अनुवाद से जुड़ी समस्या","translationIssue","thumb-down"],["सैंपल / कोड से जुड़ी समस्या","samplesCodeIssue","thumb-down"],["अन्य","otherDown","thumb-down"]],["आखिरी बार 2025-07-26 (UTC) को अपडेट किया गया."],[],[],null,["# createPackageContext\n\n\u003cbr /\u003e\n\n**OWASP category:** [MASVS-CODE: Code Quality](https://mas.owasp.org/MASVS/10-MASVS-CODE)\n\nOverview\n--------\n\n public abstract Context createPackageContext (String packageName, int flags)\n\nThe method [`createPackageContext`](/reference/android/content/Context#createPackageContext(java.lang.String,%20int)) is used when a developer wants to create\na context for another application in their own application.\n\nFor example, if developers want to get resources from a 3rd-party application or\ncall methods from it, they would use `createPackageContext`.\n\nHowever, if an application calls `createPackageContext` with the\n[`CONTEXT_IGNORE_SECURITY`](/reference/android/content/Context#CONTEXT_IGNORE_SECURITY) and [`CONTEXT_INCLUDE_CODE`](/reference/android/content/Context#CONTEXT_INCLUDE_CODE) flags, and then\ncalls [`getClassLoader()`](/reference/android/content/Context#getClassLoader()), this could result in making the application\nvulnerable to code execution by a malicious application. This can occur, for\nexample, when an attacker impersonates an unclaimed package name (package\nsquatting) that the developer had expected to be present on the user's device.\n\nTo summarize the criteria that have to be met to make an application vulnerable\nto this kind of attack:\n\nVulnerable App:\n\n- Calls [`createPackageContext`](/reference/android/content/Context#createPackageContext(java.lang.String,%20int)) with [`CONTEXT_IGNORE_SECURITY`](/reference/android/content/Context#CONTEXT_IGNORE_SECURITY) and [`CONTEXT_INCLUDE_CODE`](/reference/android/content/Context#CONTEXT_INCLUDE_CODE).\n- Calls [`getClassLoader()`](/reference/android/content/Context#getClassLoader()) on the retrieved context.\n\nMalicious App:\n\n- Is able to claim the package name that the vulnerable app passes to [`createPackageContext`](/reference/android/content/Context#createPackageContext(java.lang.String,%20int)).\n- Exports android:appComponentFactory.\n\nImpact\n------\n\nWhen createPackageContext is used in an insecure way by an application, this can\nlead to a malicious application being able to gain arbitrary code execution in\nthe context of the vulnerable application.\n\nMitigations\n-----------\n\nDon't call [`createPackageContext`](/reference/android/content/Context#createPackageContext(java.lang.String,%20int)) with\n[`CONTEXT_IGNORE_SECURITY`](/reference/android/content/Context#CONTEXT_IGNORE_SECURITY) and [`CONTEXT_INCLUDE_CODE`](/reference/android/content/Context#CONTEXT_INCLUDE_CODE) unless absolutely necessary.\n\nIn cases where this is unavoidable, make sure to implement a mechanism to verify\nthe identity of the package you are executing [`createPackageContext`](/reference/android/content/Context#createPackageContext(java.lang.String,%20int)) on (e.g. by verifying the package's signature).\n\nResources\n---------\n\n- [createPackageContext Documentation](/reference/android/content/Context#createPackageContext(java.lang.String,%20int))\n- [OverSecured blog post on createPackageContext code execution](https://blog.oversecured.com/Android-arbitrary-code-execution-via-third-party-package-contexts)"]]