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.).