createPackageContext

دسته OWASP: MASVS-CODE: کیفیت کد

نمای کلی

public abstract Context createPackageContext (String packageName, int flags)

متد createPackageContext زمانی استفاده می‌شود که یک توسعه‌دهنده می‌خواهد یک زمینه برای برنامه دیگری در برنامه خود ایجاد کند.

به عنوان مثال، اگر توسعه دهندگان بخواهند منابع را از یک برنامه شخص ثالث دریافت کنند یا روش های فراخوانی را از آن دریافت کنند، از createPackageContext استفاده می کنند.

با این حال، اگر برنامه‌ای createPackageContext با پرچم‌های CONTEXT_IGNORE_SECURITY و CONTEXT_INCLUDE_CODE فراخوانی کند و سپس getClassLoader() را فراخوانی کند، این می‌تواند منجر به آسیب‌پذیری برنامه در برابر اجرای کد توسط یک برنامه مخرب شود. این می تواند رخ دهد، برای مثال، زمانی که یک مهاجم جعل نام بسته بدون ادعا (بسته چمباتمه) است که توسعه دهنده انتظار داشت در دستگاه کاربر وجود داشته باشد.

برای خلاصه کردن معیارهایی که باید رعایت شوند تا یک برنامه در برابر این نوع حمله آسیب پذیر شود:

برنامه آسیب پذیر:

برنامه مخرب:

  • می‌تواند نام بسته‌ای را که برنامه آسیب‌پذیر به createPackageContext ارسال می‌کند ادعا کند.
  • android:appComponentFactory را صادر می کند.

تاثیر

هنگامی که createPackageContext به روشی ناامن توسط یک برنامه استفاده می شود، این می تواند منجر به این شود که یک برنامه مخرب قادر به اجرای کد دلخواه در زمینه برنامه آسیب پذیر باشد.

اقدامات کاهشی

createPackageContext با CONTEXT_IGNORE_SECURITY و CONTEXT_INCLUDE_CODE تماس نگیرید مگر اینکه کاملاً ضروری باشد.

در مواردی که این امر اجتناب ناپذیر است، مطمئن شوید که مکانیزمی را برای تأیید هویت بسته ای که در حال اجرای createPackageContext روی آن هستید، پیاده سازی کنید (مثلاً با تأیید امضای بسته).

منابع

،

دسته OWASP: MASVS-CODE: کیفیت کد

نمای کلی

public abstract Context createPackageContext (String packageName, int flags)

متد createPackageContext زمانی استفاده می‌شود که یک توسعه‌دهنده می‌خواهد یک زمینه برای برنامه دیگری در برنامه خود ایجاد کند.

به عنوان مثال، اگر توسعه دهندگان بخواهند منابع را از یک برنامه شخص ثالث دریافت کنند یا روش های فراخوانی را از آن دریافت کنند، از createPackageContext استفاده می کنند.

با این حال، اگر برنامه‌ای createPackageContext با پرچم‌های CONTEXT_IGNORE_SECURITY و CONTEXT_INCLUDE_CODE فراخوانی کند و سپس getClassLoader() را فراخوانی کند، این می‌تواند منجر به آسیب‌پذیری برنامه در برابر اجرای کد توسط یک برنامه مخرب شود. این می تواند رخ دهد، برای مثال، زمانی که یک مهاجم جعل نام بسته بدون ادعا (بسته چمباتمه) است که توسعه دهنده انتظار داشت در دستگاه کاربر وجود داشته باشد.

برای خلاصه کردن معیارهایی که باید رعایت شوند تا یک برنامه در برابر این نوع حمله آسیب پذیر شود:

برنامه آسیب پذیر:

برنامه مخرب:

  • می‌تواند نام بسته‌ای را که برنامه آسیب‌پذیر به createPackageContext ارسال می‌کند ادعا کند.
  • android:appComponentFactory را صادر می کند.

تاثیر

هنگامی که createPackageContext به روشی ناامن توسط یک برنامه استفاده می شود، این می تواند منجر به این شود که یک برنامه مخرب قادر به اجرای کد دلخواه در زمینه برنامه آسیب پذیر باشد.

اقدامات کاهشی

createPackageContext با CONTEXT_IGNORE_SECURITY و CONTEXT_INCLUDE_CODE تماس نگیرید مگر اینکه کاملاً ضروری باشد.

در مواردی که این امر اجتناب ناپذیر است، مطمئن شوید که مکانیزمی را برای تأیید هویت بسته ای که در حال اجرای createPackageContext روی آن هستید، پیاده سازی کنید (مثلاً با تأیید امضای بسته).

منابع