createPackageContext

OWASP kategorisi: MASVS-CODE: Kod Kalitesi

Genel Bakış

public abstract Context createPackageContext (String packageName, int flags)

createPackageContext yöntemi, geliştirici kendi uygulamasında başka bir uygulama için bağlam oluşturmak istediğinde kullanılır.

Örneğin, geliştiriciler üçüncü taraf bir uygulamadan kaynak almak veya bu uygulamadaki yöntemleri çağırmak isterse createPackageContext değerini kullanır.

Ancak bir uygulama CONTEXT_IGNORE_SECURITY ve CONTEXT_INCLUDE_CODE işaretleriyle createPackageContext'ü, ardından getClassLoader()'ı çağırırsa bu, uygulamanın kötü amaçlı bir uygulama tarafından kod çalıştırmaya açık hale gelmesine neden olabilir. Örneğin, bir saldırgan geliştiricinin kullanıcının cihazında bulunmasını beklediği, hak talebinde bulunulmamış bir paket adını taklit ettiğinde (paket işgalciliği) bu durumla karşılaşılabilir.

Bir uygulamanın bu tür saldırılara açık hale gelmesi için karşılanması gereken ölçütleri özetlemek gerekirse:

Güvenlik açığı olan uygulama:

Kötü Amaçlı Uygulama:

  • Güvenlik açığı olan uygulamanın createPackageContext'a ilettiği paket adı için hak talebinde bulunabilir.
  • android:appComponentFactory öğesini dışa aktarır.

Etki

createPackageContext, bir uygulama tarafından güvenli olmayan bir şekilde kullanıldığında, kötü amaçlı bir uygulamanın güvenlik açığı olan uygulama bağlamında rastgele kod yürütmesine neden olabilir.

Çözümler

Kesinlikle gerekli olmadığı sürece CONTEXT_IGNORE_SECURITY ve CONTEXT_INCLUDE_CODE ile createPackageContext'ı aramayın.

Bunun kaçınılmaz olduğu durumlarda, createPackageContext üzerinde çalıştırdığınız paketin kimliğini doğrulamak için bir mekanizma uyguladığınızdan emin olun (ör. paketin imzasını doğrulayarak).

Kaynaklar