Tapjacking

Kategori OWASP: MASVS-PLATFORM: Interaksi Platform

Ringkasan

Tapjacking setara dengan aplikasi Android yang memiliki kerentanan web clickjacking: Aplikasi berbahaya menipu pengguna agar mengklik kontrol yang relevan dengan keamanan (tombol konfirmasi, dll.) dengan mengaburkan UI dengan overlay atau dengan cara lain. Di halaman ini, kami membedakan dua varian serangan: Oklusi penuh dan sebagian. Dalam oklusi penuh, penyerang menempatkan area sentuh, sedangkan pada oklusi parsial, area sentuh tetap tidak terhalang.

Dampak

Serangan tapjacking digunakan untuk mengelabui pengguna agar melakukan tindakan tertentu. Dampaknya bergantung pada tindakan yang ditargetkan oleh penyerang.

Risiko: Oklusi penuh

Dalam oklusi penuh, penyerang akan menempatkan area sentuh untuk membajak peristiwa sentuh:

Gambar oklusi penuh

Mitigasi

Oklusi penuh dicegah dengan menetapkan View.setFilterTouchesWhenObscured(true) dalam kode. Tindakan ini memblokir sentuhan yang diteruskan oleh overlay. Jika menginginkan pendekatan deklaratif, Anda juga dapat menambahkan android:filterTouchesWhenObscured="true" dalam file tata letak untuk objek View yang ingin dilindungi.


Risiko: Oklusi parsial

Dalam serangan oklusi parsial, area sentuh tetap tidak disamarkan:

Gambar oklusi sebagian

Mitigasi

Oklusi sebagian dimitigasi dengan mengabaikan peristiwa sentuh yang memiliki flag FLAG_WINDOW_IS_PARTIALLY_OBSCURED secara manual. Tidak ada perlindungan default terhadap skenario ini.

Peringatan potensial: Mitigasi ini dapat mengganggu aplikasi yang tidak berbahaya. Dalam beberapa kasus, peluncuran perbaikan ini tidak memungkinkan karena akan berdampak negatif pada pengalaman pengguna saat oklusi parsial disebabkan oleh aplikasi yang tidak berbahaya.


Risiko spesifik

Bagian ini mengumpulkan risiko yang memerlukan strategi mitigasi non-standar atau dimitigasi di tingkat SDK tertentu dan dilakukan untuk menyelesaikan.

Risiko: android.Manifest.permission.SYSTEM_ALERT_WINDOW

Izin SYSTEM_ALERT_WINDOW memungkinkan aplikasi membuat jendela yang ditampilkan di atas semua aplikasi.

Mitigasi

Versi Android yang lebih baru telah memperkenalkan beberapa mitigasi, termasuk hal berikut:

  • Di Android 6 (API level 23) dan versi yang lebih baru, pengguna harus secara eksplisit memberikan izin bagi aplikasi untuk membuat jendela overlay.
  • Di Android 12 (API level 31) dan versi yang lebih baru, aplikasi dapat meneruskan true ke Window.setHideOverlayWindows().

Risiko: Toast kustom

Penyerang dapat menggunakan Toast.setView() untuk menyesuaikan tampilan pesan toast. Di Android 10 (API level 29) dan yang lebih rendah, aplikasi berbahaya dapat meluncurkan toast tersebut dari latar belakang.

Mitigasi

Jika aplikasi menargetkan Android 11 (API level 30) atau versi yang lebih baru, sistem akan memblokir toast kustom latar belakang. Namun, mitigasi ini dapat dihindari dalam beberapa situasi menggunakan Toast burst, yaitu ketika penyerang mengantrekan beberapa toast saat berada di latar depan dan toast tersebut akan terus diluncurkan bahkan setelah aplikasi beralih ke latar belakang.

Serangan toast burst dan toast latar belakang sepenuhnya dimitigasi mulai Android 12 (API level 31).


Risiko: Sandwich aktivitas

Jika aplikasi berbahaya berhasil meyakinkan pengguna untuk membukanya, aplikasi tersebut masih dapat meluncurkan aktivitas dari aplikasi korban, lalu menempatkan aplikasi tersebut dengan aktivitasnya sendiri, sehingga membentuk sandwich aktivitas dan membuat serangan oklusi parsial.

Mitigasi

Lihat mitigasi umum untuk oklusi parsial. Untuk pertahanan yang mendalam, pastikan Anda tidak mengekspor aktivitas yang tidak perlu diekspor untuk mencegah penyerang melakukan sandwich pada aktivitas tersebut.


Referensi