Perbaikan untuk Kerentanan PendingIntent Implisit

Informasi ini ditujukan bagi developer yang aplikasinya memiliki Kerentanan PendingIntent Implisit.

Yang terjadi

Satu atau beberapa aplikasi Anda memiliki masalah PendingIntent Implisit yang mungkin menyebabkan ancaman keamanan dalam bentuk denial of service, pencurian data pribadi, dan eskalasi akses. Harap tinjau langkah-langkah detail di bawah ini untuk memperbaiki masalah pada aplikasi Anda.  Lokasi penggunaan PendingIntent Implisit di aplikasi Anda dapat ditemukan di notifikasi Konsol Play untuk aplikasi Anda. Jika lokasi diakhiri dengan "(dalam kode yang dimuat secara dinamis)", lokasi tersebut berada dalam kode yang dimuat secara dinamis oleh aplikasi atau oleh library yang digunakan aplikasi. Aplikasi biasanya menggunakan kode yang dimuat secara dinamis melalui pengiriman fitur on demand, meskipun teknik yang tidak direkomendasikan lainnya ada (beberapa teknik yang tidak direkomendasikan juga melanggar kebijakan Google Play dan tidak boleh digunakan). Selain itu, pengenkripsi dapat mengubah kode aplikasi menjadi kode yang dimuat secara dinamis.

Sebaiknya perbaiki masalah ini, tetapi hal tersebut tidak wajib. Status publikasi aplikasi Anda tidak akan terpengaruh oleh adanya masalah ini.

Detail tambahan

Aplikasi Android mengirim pesan antar-komponen menggunakan Intent. Intent dapat menentukan komponen target (Intent Eksplisit) atau mencantumkan tindakan umum dan memungkinkan sistem operasi mengirim Intent ke komponen apa pun pada perangkat yang mendaftarkan Filter Intent yang cocok dengan tindakan tersebut (Intent Implisit).

PendingIntent adalah Intent yang didelegasikan ke aplikasi lain untuk dikirim di waktu mendatang. Membuat intent implisit yang digabungkan dengan PendingIntent adalah kerentanan keamanan yang dapat menyebabkan denial of service, pencurian data pribadi, dan eskalasi akses. 

Langkah Berikutnya

1. Perbarui aplikasi dan perbaiki pemberitahuan “PendingIntent Implisit” menggunakan langkah-langkah yang dijelaskan di bawah ini.

Tinjau aplikasi Anda untuk mengetahui tempat dibuatnya PendingIntent. Misalnya, kode berikut membuat PendingIntent yang menggabungkan intent implisit: 

// Create an implicit base Intent and wrap it in a PendingIntent

Intent base = new Intent("ACTION_FOO");

base.setPackage("some_package");

PendingIntent pi = PendingIntent.getService(this, 0, base, 0);

Google menyarankan developer untuk memperbaiki kerentanan dengan menerapkan salah satu (atau bahkan) semua hal berikut:

  • Memastikan bahwa tindakan, paket, dan kolom komponen Intent dasar telah ditetapkan; 
  • Memastikan bahwa PendingIntent hanya dikirim ke komponen tepercaya; 
  • Menggunakan FLAG_IMMUTABLE (ditambahkan di SDK 23) untuk membuat PendingIntent. Hal ini mencegah aplikasi yang menerima PendingIntent agar tidak mengisi properti yang kosong. Jika aplikasi juga berjalan di perangkat yang menjalankan SDK 22 atau yang lebih lama, sebaiknya developer menerapkan opsi sebelumnya sambil memperkuat pembuatan PendingIntent dengan pola:

if (android.os.Build.VERSION.SDK_INT >= 23) {

  // Create a PendingIntent using FLAG_IMMUTABLE

} else {

  // Existing code that creates a PendingIntent

}

2. Kirimkan APK yang telah diupdate

Untuk mengirimkan app bundle atau APK yang telah diupdate:

  1. Buka Konsol Play.
  2. Pilih aplikasi.
  3. Buka Penjelajah app bundle.
  4. Pilih versi Aplikasi app bundle/APK yang tidak mematuhi kebijakan di menu dropdown sebelah kanan atas, lalu catat rilis mana yang dimaksud.
  5. Buka jalur yang berisi masalah kebijakan. Jalur tersebut merupakan salah satu dari 4 halaman ini: Produksi atau Pengujian Terbuka/Tertutup/Internal.
  6. Di sebelah kanan atas halaman, klik Buat rilis baru. (Anda mungkin perlu mengklik Kelola jalur terlebih dahulu)
    • Jika rilis dengan APK yang melanggar masih dalam status draf, hapus rilis tersebut.
  7. Tambahkan versi app bundle atau APK yang mematuhi kebijakan.
    • Pastikan versi app bundle atau APK yang tidak mematuhi kebijakan ada di bagian Tidak disertakan dalam rilis ini. Untuk panduan lebih lanjut, harap baca bagian "Tidak disertakan (app bundle dan APK)" dalam artikel Bantuan Konsol Play ini.
  8. Untuk menyimpan perubahan apa pun yang dilakukan pada rilis, pilih Simpan.
  9. Setelah selesai menyiapkan rilis, pilih Tinjau rilis.

Jika APK yang tidak mematuhi aturan dirilis ke beberapa jalur, ulangi langkah 5-9 di setiap jalur.

Selama proses ini, aplikasi baru atau update aplikasi Anda akan berstatus sedang ditinjau sampai permintaan Anda selesai ditinjau. Jika aplikasi belum diupdate dengan benar, peringatan akan tetap ditampilkan.

Kami siap membantu

JIka ada pertanyaan teknis mengenai kerentanan, Anda dapat mempostingnya diStack Overflow dan menggunakan tag “android-security”. Jika Anda membutuhkan penjelasan mengenai langkah-langkah yang perlu dilakukan untuk mengatasi masalah ini, Anda dapat menghubungi tim dukungan kami.

Apakah ini membantu?

Bagaimana cara meningkatkannya?
false
Menu utama
18037629447398848970
true
Pusat Bantuan Penelusuran
true
true
true
true
true
5016068
false
false