Pembajakan Intent Implisit

Kategori OWASP: MASVS-PLATFORM: Interaksi Platform

Ringkasan

Kerentanan pembajakan Intent implisit terjadi saat aplikasi tidak menentukan paket atau nama class komponen yang sepenuhnya memenuhi syarat saat memanggil intent. Hal ini memungkinkan aplikasi berbahaya mendaftarkan filter intent untuk menangkap intent, bukan aplikasi yang dimaksud.

Bergantung pada konten intent, penyerang dapat membaca informasi sensitif atau berinteraksi dengan objek yang dapat diubah, seperti PendingIntent atau Binder yang dapat diubah.

Dampak

Membajak Intent Implisit memungkinkan penyerang membaca atau mengubah konten intent, serta menangkap intent untuk melakukan tindakan. Hal ini dapat menimbulkan konsekuensi seperti kebocoran informasi/data sensitif atau peluncuran komponen yang dikontrol penyerang.

Mitigasi

Buat intent menjadi eksplisit dengan memanggil setPackage(), seperti yang ditunjukkan dalam cuplikan kode berikut:

Kotlin

val intent = Intent("android.intent.action.CREATE_DOCUMENT").apply {
    addCategory("android.intent.category.OPENABLE")
    setPackage("com.some.packagename")
    setType("*/*")
    putExtra("android.intent.extra.LOCAL_ONLY", true)
    putExtra("android.intent.extra.TITLE", "Some Title")
}

startActivity(intent)

Java

Intent intent = new Intent("android.intent.action.CREATE_DOCUMENT");
intent.addCategory("android.intent.category.OPENABLE");

intent.setPackage("com.some.packagename");

intent.setType("*/*");
intent.putExtra("android.intent.extra.LOCAL_ONLY", true);
intent.putExtra("android.intent.extra.TITLE", "Some Title");
startActivity(intent);

Jika Anda perlu menggunakan intent implisit, hapus informasi sensitif atau objek yang dapat diubah yang tidak ingin diekspos. Intent implisit mungkin perlu digunakan saat aplikasi tidak memiliki pengetahuan yang tepat tentang aplikasi yang akan menyelesaikan tindakan (mis. menulis email, mengambil gambar, dll.).

Referensi