Memperbaiki Kerentanan Penulisan Skrip Lintas Aplikasi

Informasi ini ditujukan bagi developer yang memiliki aplikasi dengan kerentanan Penulisan Skrip Lintas Aplikasi.

Yang terjadi

Satu atau beberapa aplikasi Anda memiliki masalah Penulisan Skrip Lintas Aplikasi WebView yang memungkinkan aplikasi berbahaya mencuri cookie pengguna dan data lainnya. Silakan lihat pemberitahuan di Konsol Play Anda. Setelah batas waktu yang ditampilkan di Konsol Play, aplikasi apa pun yang memiliki kerentanan keamanan yang belum diperbaiki akan dihapus dari Google Play.

Tindakan yang diperlukan​

  1. Login ke Konsol Play, dan buka bagian Notifikasi untuk melihat aplikasi mana yang terpengaruh dan batas waktu untuk menyelesaikan masalah ini.
  2. Update aplikasi yang terpengaruh dan perbaiki kerentanannya.
  3. Kirimkan versi terupdate aplikasi Anda yang terpengaruh.

Setelah pengiriman ulang, aplikasi Anda akan ditinjau kembali. Proses ini dapat memerlukan waktu beberapa jam. Jika aplikasi lolos dari proses peninjauan dan dipublikasikan, Anda tidak perlu melakukan tindakan lebih lanjut. Jika aplikasi gagal ditinjau, versi aplikasi baru tidak akan dipublikasikan dan Anda akan menerima pemberitahuan via email.

Detail tambahan

WebView yang mengaktifkan JavaScript dan memuat data yang dibaca dari Intent tidak tepercaya dapat ditipu oleh aplikasi berbahaya, sehingga mengeksekusi kode JavaScript dalam konteks yang tidak aman. Sebaiknya Anda mencegah kerentanan ini dengan salah satu cara berikut:

Opsi 1: Pastikan aktivitas yang terpengaruh tidak diekspor

Temukan Aktivitas apa pun dengan WebView yang terpengaruh. Jika Aktivitas ini tidak perlu mengambil Intent dari aplikasi lain, Anda dapat menetapkan android:exported=false untuk Aktivitas tersebut di Manifes. Dengan begitu, aplikasi berbahaya tidak dapat mengirim input berbahaya ke WebView apa pun dalam Aktivitas ini.

Opsi 2: Lindungi WebView dalam aktivitas yang diekspor

Jika Anda ingin menetapkan Aktivitas dengan WebView yang terpengaruh saat diekspor, sebaiknya Anda melakukan perubahan berikut:

  1. Update targetSdkVersion Anda
    Pastikan targetSdkVersion Anda memenuhi persyaratan level API target Google Play. Aplikasi dengan targetSdkVersion 16 atau yang lebih rendah mengevaluasi URL JavaScript yang diteruskan ke loadUrl dalam konteks halaman yang baru-baru ini dimuat. Menargetkan SDK 16 atau yang lebih rendah dan memanggil loadUrl menggunakan input bermasalah dari Intent tidak tepercaya memungkinkan penyerang mengeksekusi skrip berbahaya dalam WebView yang terpengaruh.
  2. Lindungi panggilan ke evaluateJavascript
    Pastikan parameter untuk evaluateJavascript selalu tepercaya. Memanggil evaluateJavascript menggunakan input bermasalah dari Intent tidak tepercaya memungkinkan penyerang mengeksekusi skrip berbahaya dalam WebView yang terpengaruh.
  3. Cegah pemuatan file yang tidak aman
    Pastikan WebViews yang terpengaruh tidak dapat memuat database cookie. WebView yang memuat URL file:// bermasalah dari Intent tidak tepercaya dapat diserang oleh aplikasi berbahaya melalui cara berikut. Halaman web berbahaya dapat menulis tag <script> ke dalam database cookie, lalu aplikasi berbahaya dapat mengirim Intent dengan URL file:// yang mengarah ke database cookie WebView Anda. Skrip berbahaya ini akan dieksekusi jika database cookie dimuat dalam WebView dan dapat mencuri informasi sesi.
    Anda dapat memastikan bahwa WebView yang terpengaruh tidak dapat memuat database cookie WebView melalui dua cara. Anda dapat menonaktifkan semua akses file, atau memverifikasi bahwa semua URL file:// yang dimuat mengarah ke file yang aman. Perhatikan bahwa penyerang dapat menggunakan link simbolis untuk mengelabui pemeriksaan pada lokasi URL. Untuk mencegah serangan semacam itu, pastikan untuk memeriksa lokasi kanonis setiap URL file:// tidak tepercaya sebelum memuatnya, bukan sekadar memeriksa lokasi URL.

Kami siap membantu
Jika ada pertanyaan teknis tentang kerentanan, Anda dapat memposting pertanyaan ke Stack Overflow dan menggunakan tag “android-security”. Untuk penjelasan mengenai langkah-langkah yang diperlukan guna mengatasi masalah ini, Anda dapat menghubungi tim dukungan developer.

Apakah ini membantu?
Bagaimana cara meningkatkannya?