createPackageContext

Kategori OWASP: MASVS-CODE: Kualitas Kode

Ringkasan

public abstract Context createPackageContext (String packageName, int flags)

Metode createPackageContext digunakan saat developer ingin membuat konteks untuk aplikasi lain di aplikasinya sendiri.

Misalnya, jika developer ingin mendapatkan resource dari aplikasi pihak ketiga atau memanggil metode dari aplikasi tersebut, mereka akan menggunakan createPackageContext.

Namun, jika aplikasi memanggil createPackageContext dengan flag CONTEXT_IGNORE_SECURITY dan CONTEXT_INCLUDE_CODE, lalu memanggil getClassLoader(), hal ini dapat menyebabkan aplikasi rentan terhadap eksekusi kode oleh aplikasi berbahaya. Hal ini dapat terjadi, misalnya, saat penyerang meniru nama paket yang tidak diklaim (squatting paket) yang diharapkan developer akan ada di perangkat pengguna.

Untuk meringkas kriteria yang harus dipenuhi agar aplikasi rentan terhadap serangan semacam ini:

Aplikasi Rentan:

Aplikasi Berbahaya:

  • Dapat mengklaim nama paket yang diteruskan aplikasi yang rentan ke createPackageContext.
  • Mengekspor android:appComponentFactory.

Dampak

Jika createPackageContext digunakan dengan cara yang tidak aman oleh aplikasi, hal ini dapat menyebabkan aplikasi berbahaya dapat memperoleh eksekusi kode arbitrer dalam konteks aplikasi yang rentan.

Mitigasi

Jangan memanggil createPackageContext dengan CONTEXT_IGNORE_SECURITY dan CONTEXT_INCLUDE_CODE kecuali jika benar-benar diperlukan.

Jika hal ini tidak dapat dihindari, pastikan untuk menerapkan mekanisme guna memverifikasi identitas paket tempat Anda mengeksekusi createPackageContext (misalnya, dengan memverifikasi tanda tangan paket).

Referensi