Tapjacking Menghasilkan Kembali di Android Marshmallow, dan Tidak Ada yang Menyadari

Perangkat Marshmallow tertentu rentan terhadap pembajakan, yaitu aplikasi melapisi teks di atas dialog izin untuk mengelabui pengguna.

Meskipun banyak dari kita yang ngiler melihat Android Nougat yang baru dirilis untuk perangkat Nexus, sebagian besar pengguna masih menggunakan Android Marshmallow. Sebuah eksploitasi yang keberadaannya telah didokumentasikan sejak saat itu setidaknya pertengahan tahun 2015 masih memengaruhi banyak perangkat Android modern.

Aplikasi berbahaya mampu melakukannya tapjack tindakanmu ke dalam memberi mereka izin yang tidak pernah Anda berikan secara eksplisit. Inilah cara kerja eksploitasi.


Kembalinya Tapjacking

Bayangkan Anda membuka Instagram dan mencoba membagikan foto yang baru saja Anda ambil saat sedang berlibur. Saat Anda memilih untuk menelusuri galeri Anda untuk mencari gambar, Instagram meminta Anda memberinya izin untuk mengakses penyimpanan Anda. Namun saat Anda mengetuk "ya", Anda akan mendapat pesan kesalahan.

Anda tidak dapat memberikan izin penyimpanan untuk Instagram karena Anda mengaktifkan hamparan layar aktif - masuk dalam hal ini, salah satu dari banyak aplikasi yang mewarnai layar Anda sehingga dapat menggunakan ponsel Anda di malam hari tanpa menyilaukan dirimu sendiri. Ini adalah kasus sistem izin Android

bekerja sebagaimana dimaksud: untuk memberikan izin sensitif pada aplikasi, Anda diharuskan menonaktifkan hamparan layar apa pun yang Anda miliki di perangkat Anda.

Penyadapan Izin Marshmallow. Mengetuk "Izinkan" akan menampilkan semua kontak saya.

Aplikasi yang memiliki kemampuan untuk menutupi layar Anda berpotensi menipu Anda untuk memasukkan data sensitif ke dalamnya. Misalnya, hamparan layar dapat menempatkan masukan kata sandi palsu di atas layar masuk asli untuk mengumpulkan kata sandi Anda. Eksploitasi seperti ini disebut 'menyadap' dan telah muncul dan ditambal di berbagai versi Android selama bertahun-tahun, dengan salah satu contoh terburuk yang bertahan hingga Android 4.0.3. Namun baru-baru ini, eksploitasi tersebut kembali terjadi Model izin run-time Android Marshmallow.

Seorang pengembang dengan nama Iwo Banaś menciptakan sebuah aplikasi menunjukkan eksploitasi. Cara kerjanya cukup sederhana - ketika sebuah aplikasi menampilkan dialog izin, aplikasi tersebut berbahaya yang Anda instal akan menampilkan overlay sistem untuk menutupi blok teks dialog izin dengan teks apa pun ingin. Pengguna tanpa disadari mengklik "izinkan" pada kotak dialog izin akan tertipu untuk memberikan izin yang diminta - namun permintaan tersebut disembunyikan dari pandangan pengguna. Eksploitasi seperti itu benar-benar menggagalkan tujuan sistem izin Android Marshmallow, sejak diperkenalkan model baru ini seharusnya memastikan bahwa pengguna hanya akan memberikan izin yang mereka setujui secara eksplisit.

Sekarang, saya tahu apa yang Anda pikirkan. Jika Android mendeteksi hamparan sistem dan mencegah saya memberikan izin penyimpanan Instagram, bukankah hal itu akan mencegah terjadinya eksploitasi ini? Jawabannya adalah tidak, dalam pengujian saya tampak bahwa pada perangkat tertentu yang menampilkan hamparan teks di atas dialog izin tidak memicu mekanisme keamanan. Pengembang aplikasi tapjacking bukti konsep menyatakan bahwa eksploitasi tersebut efektif karena itu bergantung pada pengguna yang menginstal aplikasi berbahaya sekunder yang menargetkan API level 22 dan di bawahnya (pra-Marshmallow). Hal ini disebabkan sebelum Android Marshmallow, semua aplikasi diberikan izin saat instalasi.

Oke, jadi jika Anda menggunakan Marshmallow, yang perlu Anda lakukan hanyalah menghindari memasang aplikasi apa pun yang tidak Anda percayai yang meminta izin untuk menggambar overlay, bukan? Jika model izin Android berfungsi seperti yang direncanakan semula, Anda benar. Namun sejak ditemukannya eksploitasi ini, bahkan aplikasi yang menargetkan API level 23 (Marshmallow) yang meminta izin overlay mempunyai potensi risiko.


Kesenjangan dalam Model Izin?

Aplikasi Khas menggunakan Overlay. Melalui: Sedang

Jika Anda salah satu dari jutaan orang yang menggunakan Facebook Messenger untuk mengobrol dengan teman, maka Anda telah menemukan salah satu fitur terbaik Android - kemampuan aplikasi untuk mengungguli aplikasi lainnya layar. Betapa kerennya Anda bisa membuat gelembung dengan obrolan grup Facebook favorit Anda mengikuti pengguna di atas aplikasi apa pun yang mereka buka? Meskipun Messenger Facebook membawa ide "aplikasi mengambang" ke dalam arus utama, konsep tersebut telah ada selama beberapa waktu di Android. Aplikasi telah mampu membuat overlay di atas aplikasi Anda selama beberapa waktu, berkat keberadaan TYPE_SYSTEM_OVERLAY di WindowManager Android.

Menu Izin "Gambar di atas aplikasi lain".

Sebelum Android Marshmallow, aplikasi perlu meminta izin yang disebut SYSTEM_ALERT_WINDOW selama instalasi sebelum dapat menampilkan overlay di atas layar Anda. Namun hal ini berubah dengan diperkenalkannya model izin run-time granular 6.0. Pengguna sekarang harus memberikan izin ke aplikasi ketika benar-benar menjalankan aplikasi, yang diharapkan akan memacu rata-ratanya pengguna untuk melindungi data pribadi mereka dari aplikasi yang meminta secara mencurigakan yang tampaknya tidak terkait secara fungsional izin.

Namun, SYSTEM_ALERT_WINDOW tidak seperti izin lainnya. Pengembang tidak dapat menampilkan dialog untuk meminta izin diberikan oleh pengguna akhir secara terprogram, seperti kebanyakan izin lainnya pada aplikasi apa pun yang menargetkan Marshmallow. Sebaliknya, Anda harus menavigasi secara manual ke layar pengaturan dan mengaktifkan sendiri izinnya. Tentu saja, beberapa aplikasi seperti Facebook Messenger akan membantu Anda dalam prosesnya.

Google mewajibkan hal ini kepada pengembang karena mereka menganggap izin tersebut adalah "sangat sensitif."

Izin Khusus

Ada beberapa izin yang tidak berperilaku seperti izin normal dan berbahaya. SYSTEM_ALERT_WINDOW dan WRITE_SETTINGS sangat sensitif, jadi sebagian besar aplikasi tidak boleh menggunakannya. Jika suatu aplikasi memerlukan salah satu izin ini, aplikasi tersebut harus mendeklarasikan izin tersebut dalam manifes, dan mengirimkan maksud yang meminta otorisasi pengguna. Sistem merespons maksud tersebut dengan menampilkan layar manajemen terperinci kepada pengguna.

Mengingat apa yang kita ketahui di atas tentang tapjacking, hal ini masuk akal. Tapi inilah masalahnya. Google bahkan tidak mengikuti aturannya sendiri. Tangkapan layar Facebook Messenger memandu Anda melalui proses pemberian izin SYSTEM_ALERT_WINDOW yang saya tunjukkan di atas? Itu hanya terjadi jika Anda menginstal APK dari luar Google Play Store. Jika Anda menginstal aplikasi dari Google Play Store, Izin SYSTEM_ALERT_WINDOW diberikan secara otomatis.

File Manifes Facebook Messenger. Aplikasi secara otomatis diberikan izin overlay meskipun menargetkan API level 23.

Google telah Mengorbankan Keamanan demi Kenyamanan

Jauh sebelum Android Marshmallow, SYSTEM_ALERT_WINDOW dianggap sebagai "berbahaya" izin. Dengan Android Marshmallow 6.0, izin diubah menjadi tanda tangan|sistem|appop yang awalnya mengharuskan pengembang mengarahkan pengguna ke layar pengaturan untuk memberikan izin. Namun dengan Android versi 6.0.1, SYSTEM_ALERT_WINDOW telah dimodifikasi sehingga Google Play Store dapat memberikan izin secara otomatistanpa memberi tahu pengguna. Mengapa Google melakukan perubahan ini tidak jelas bagi kami. Google sendiri belum mengungkapkan alasan mereka melakukan perubahan ini, yang mana hal ini sangat aneh mengingat bahasa tentang SYSTEM_ALERT_WINDOW yang masih ada di halaman web mereka.

Mungkin saja itu cukup banyak pengembang yang marah oleh perubahan awal pada SYSTEM_ALERT_WINDOW yang mengharuskan pengguna untuk secara manual memberikan izin yang diberikan Google secara diam-diam dan hanya memberikannya kepada aplikasi apa pun yang memintanya. Namun dalam melakukan hal itu, Google telah melakukannya mengorbankan keselamatan demi kenyamanan. Ada alasan mengapa Google sendiri menganggap izin itu berbahaya untuk waktu yang lama, karena memang demikian. Dan keberadaan eksploitasi penyadapan izin Marshmallow adalah bukti yang cukup tentang bahaya yang ada dalam memberikan izin ini secara otomatis ke aplikasi apa pun.

Eksploitasi penyadapan ini baru-baru ini menjadi perhatian kami meskipun sudah ada selama berbulan-bulan. Dalam pengujian internal perangkat kami di antara tim Portal XDA, kami telah mengonfirmasi hal itu eksploitasi ini berfungsi pada banyak perangkat modern yang menjalankan Android Marshmallow. Berikut adalah ikhtisar singkat perangkat yang kami uji pada versi perangkat lunak terbaru yang tersedia untuk masing-masing perangkat dan apakah eksploitasi tapjacking berfungsi atau tidak. Perangkat bertanda "Rentan" rentan terhadap eksploitasi penyadapan, sedangkan perangkat bertanda "Tidak". Rentan" dapat mendeteksi aplikasi yang menampilkan overlay dan meminta Anda menonaktifkannya sebelumnya melanjutkan.

  • Nextbit Robin - Android 6.0.1 dengan patch keamanan bulan Juni - Rentan
  • Moto X Pure - Android 6.0 dengan patch keamanan Mei - Rentan
  • Honor 8 - Android 6.0.1 dengan patch keamanan bulan Juli - Rentan
  • Motorola G4 - Android 6.0.1 dengan patch keamanan Mei - Rentan
  • OnePlus 2 - Android 6.0.1 dengan patch keamanan bulan Juni - Tidak Rentan
  • Samsung Galaxy Note 7 - Android 6.0.1 dengan patch keamanan bulan Juli - Tidak Rentan
  • Google Nexus 6 - Android 6.0.1 dengan patch keamanan bulan Agustus - Tidak Rentan
  • Google Nexus 6P - Android 7.0 dengan patch keamanan bulan Agustus - Tidak Rentan

Sejauh ini, itulah semua perangkat yang dapat saya minta untuk diuji oleh tim. Saya tidak dapat menemukan korelasi antara versi patch keamanan dan eksploitasi. Seperti yang Anda tahu dari kami diskusi terbaru mengenai pembaruan keamanan Android, banyak orang yang tidak menjalankan patch keamanan terbaru, sehingga mungkin rentan terhadap eksploitasi ini dan eksploitasi lainnya yang diuraikan di Buletin Keamanan Android.


Bergerak kedepan

Layanan Tapjacking Diberikan Izin Overlay

Kami mendorong Anda untuk menguji sendiri eksploitasi ini pada perangkat Anda untuk melihat apakah Anda rentan. Kami telah mengumpulkan APK dari kode sumber yang ditautkan di atas (Anda juga dapat melakukannya sendiri) dan telah mengunggahnya ke AndroidFileHost. Untuk menguji eksploitasi, Anda perlu menginstal keduanya aplikasi penyadap utama serta itu layanan pembantu. Kemudian, jalankan aplikasi utama dan klik tombol "test". Jika kotak teks muncul di atas dialog izin dan ketika Anda mengklik "izinkan" daftar kontak perangkat Anda muncul, maka perangkat Anda rentan terhadap pembajakan. Jangan khawatir tentang kotak teks mengambang yang tidak sepenuhnya menutupi dialog izin, karena aplikasi pembuktian konsep ini tidak dimaksudkan untuk mendemonstrasikan dengan sempurna cara membajak dialog izin dengan rapi, namun lebih untuk membuktikan bahwa memang demikian mungkin.

Kami berharap perbaikan dapat dilakukan untuk menambal eksploitasi ini di semua perangkat Marshmallow, dan OEM memperbarui semua perangkat mereka ke patch keamanan terbaru. Karena kenyataannya adalah dibutuhkan waktu berbulan-bulan bagi sebagian besar perangkat yang dijanjikan untuk mendapatkan Nougat, jadi ini adalah satu-satunya cara bagi sebagian besar perangkat agar pengguna terhindar dari bahaya adalah dengan menginstal patch keamanan terbaru atau mengambil izin aplikasi monitor diri. Namun dengan keputusan Google yang secara otomatis memberikan izin SYSTEM_ALERT_WINDOW yang berpotensi berbahaya, banyak hal yang mungkin terjadi pengguna tanpa sadar menjalankan aplikasi yang berpotensi membajak ponsel mereka hingga menjadi lebih berbahaya izin.