- Sejak Android 11, Google membatasi kueri antar-aplikasi, tetapi banyak aplikasi masih bisa memeriksa daftar aplikasi terpasang hanya lewat deklarasi
AndroidManifest.xml
- Kebijakan package visibility mengharuskan aplikasi hanya melihat aplikasi yang diperlukan untuk fungsi inti, tetapi deklarasi paket individual dan filter
ACTION_MAIN digunakan seperti jalur pintas untuk menghindari pembatasan
- Swiggy mendeklarasikan 154 aplikasi, Zepto 165, KreditBee 860, dan Moneyview 944, sehingga bisa mengecek apakah aplikasi tertentu ada di perangkat pengguna
- Dari 47 aplikasi India yang diperiksa secara acak, 31 menggunakan
ACTION_MAIN intent filter, yang memungkinkan melihat sebagian besar aplikasi terpasang yang memiliki antarmuka tanpa QUERY_ALL_PACKAGES
- Data aplikasi terpasang dan izin
READ_SMS dapat digunakan untuk profiling, diskriminasi harga, serta penilaian kredit atau kelayakan, tetapi pengguna sulit mengetahui kapan dan apa yang dibaca aplikasi
Celah dalam kebijakan visibilitas aplikasi Android
- Di masa lalu, Android memungkinkan aplikasi melihat aplikasi lain yang terpasang di ponsel pengguna tanpa izin terpisah
- Mulai Android 11, Google memperkenalkan kebijakan package visibility untuk membatasi akses ini
- Aplikasi hanya boleh melihat aplikasi lain yang benar-benar diperlukan untuk fungsi intinya
- Developer harus mencantumkan aplikasi yang ingin diperiksa di
AndroidManifest.xml, file konfigurasi wajib untuk semua aplikasi Android
- Untuk kasus penggunaan spesifik seperti file manager, browser, dan aplikasi antivirus, izin
QUERY_ALL_PACKAGES diizinkan sebagai pengecualian
- Menampilkan aplikasi pembayaran UPI atau mendeteksi aplikasi kloning/multi-akun bisa menjadi alasan yang sah untuk melakukan kueri aplikasi
- Banyak manifest yang diperiksa juga memuat kueri aplikasi untuk tujuan pembayaran, keamanan, dan deteksi penipuan
Kueri aplikasi yang luas oleh Swiggy dan Zepto
- Swiggy mencantumkan 154 nama paket di manifest sehingga bisa memeriksa apakah aplikasi-aplikasi itu ada di ponsel
- Daftarnya mencakup aplikasi seperti Xbox, PlayStation, Naukri, dan Upstox
- Kategorinya sangat luas sehingga besar kemungkinan data tersebut dapat dipakai untuk profiling pengguna dan membangun profil perilaku
- Google menganggap daftar aplikasi terpasang sebagai data pengguna yang pribadi dan sensitif
- Zepto mendaftarkan 165 aplikasi di manifest untuk diperiksa di perangkat
- Termasuk aplikasi populer dari berbagai kategori seperti Netflix, Bumble, dan Binance
- Ada laporan bahwa Zepto menampilkan harga berbeda untuk pengguna iOS dan Android, dan sebagian pelanggan melaporkan perbedaan harga antar-ponsel Android
- Saat memasang aplikasi dari Play Store, pengguna tidak bisa melihat daftar kueri aplikasi apa saja yang dimasukkan ke manifest aplikasi tersebut
Cakupan kueri pada aplikasi kurir pengantaran dan pinjaman pribadi
- Aplikasi kurir pengantaran milik Swiggy dan Zepto memiliki daftar kueri aplikasi yang berbeda dari aplikasi konsumennya
- Keduanya memuat entri yang bisa digunakan untuk memeriksa kurir bekerja di perusahaan lain mana saja
- Swiggy juga memeriksa aplikasi pinjaman pribadi, aplikasi keuangan pribadi, hingga game seperti Ludo King dan Carrom Pool
- Praktik predator dari aplikasi pinjaman pribadi di India telah didokumentasikan, dan beberapa tahun lalu ribuan aplikasi sempat dihapus dari Play Store dalam operasi penertiban besar
- KreditBee adalah salah satu aplikasi pinjaman pribadi teratas di Play Store, dengan lebih dari 50 juta unduhan, dan memeriksa 860 aplikasi di manifest
- Daftarnya juga memuat Tamil Calendar, Odia Calendar, Qibla Direction Finder, aplikasi kuil, dan aplikasi astrologi
- Contoh lain yang muncul adalah aplikasi pernikahan untuk orang yang tidak lulus SMA,
Jodii for Diploma, +2,10 below, serta aplikasi jual beli sapi dan kerbau Beli dan jual sapi dan kerbau Animall, yang keduanya telah diunduh lebih dari 10 juta kali
- Moneyview juga merupakan aplikasi pinjaman pribadi dengan lebih dari 50 juta unduhan dan mencantumkan 944 aplikasi di manifest
- Kebijakan Play Store secara eksplisit membatasi penggunaan
QUERY_ALL_PACKAGES oleh aplikasi pinjaman pribadi, tetapi KreditBee dan Moneyview mengakali pembatasan ini dengan mencantumkan aplikasi yang diinginkan satu per satu di manifest
Cara melihat daftar aplikasi tanpa QUERY_ALL_PACKAGES
- Dari aplikasi yang diselidiki, hanya Cred yang mencantumkan izin berisiko tinggi dan sensitif
QUERY_ALL_PACKAGES di manifest
- Play Store mengizinkan “pengecualian sementara” untuk izin ini pada aplikasi yang memiliki tujuan inti yang dapat diverifikasi untuk memfasilitasi transaksi keuangan terkait produk keuangan yang diatur
- Manifest milik PhonePe dan PayTM di kategori yang sama tidak memiliki izin ini
- Cred juga menawarkan pinjaman pribadi, sehingga tampaknya tidak termasuk dalam pengecualian ini menurut kebijakan pinjaman pribadi Play Store
- Beberapa manifest aplikasi memuat
ACTION_MAIN intent filter seperti berikut
<queries>
[...]
<intent>
<action android:name="android.intent.action.MAIN" />
</intent>
[...]
</queries>
- Filter
ACTION_MAIN memberi visibilitas ke sebagian besar aplikasi terpasang yang memiliki layar, dan memungkinkan melihat daftar aplikasi di ponsel tanpa izin QUERY_ALL_PACKAGES
- Saat konfigurasi yang sama dipakai dalam aplikasi Android dasar untuk mengkueri aplikasi terpasang, hasilnya mengembalikan daftar semua aplikasi di ponsel
- Dari 47 aplikasi India yang dianalisis secara acak, 31 menggunakan filter ini, atau sekitar dua dari tiap tiga aplikasi
- Aplikasi yang menggunakan: Astrotalk, Axis Mobile, Bajaj Finserv, BookMyShow, Cars24, Cure.fit, Fibe, Groww, Housing, Instamart, Ixigo, JioHotstar, KreditBee, KukuTV, LazyPay, Ludo King, Meesho, MoneyTap, Moneyview, Navi, NoBroker, Nykaa, Ola, PhonePe, PhysicsWallah, Slice, Spinny, Swiggy, Swiggy Delivery, Tata Neu, Zomato
- Aplikasi yang tidak menggunakan: Airtel Thanks, Blinkit, Byju’s, MyGate, Dream11, Flipkart, HDFC Mobile, Healthify, INDmoney, MyJio, Paytm, PaisaBazaar, ShareChat, Unacademy, Vedantu, Zepto
- Swiggy juga memiliki filter
ACTION_MAIN, tetapi juga secara eksplisit mencantumkan daftar kueri aplikasi, sehingga menampakkan sebagian praktik pengumpulan datanya
- File manifest yang dibaca dipublikasikan di android-manifest-files, dan sebagian besar diunduh pada 18 atau 19 Maret
- Konfigurasi ini tidak terbatas pada aplikasi perusahaan India
- Facebook, Instagram, Snapchat, Subway Surfers, dan Truecaller memiliki konfigurasi yang sama
- Amazon, Spotify, X, Discord, dan WhatsApp tidak memilikinya
Sensitivitas data aplikasi terpasang dan izin SMS
- Data aplikasi terpasang adalah data pribadi yang sensitif
- Pada 2022, Vice melaporkan bahwa segera setelah muncul kabar Roe v. Wade bisa dibatalkan, sebuah marketplace data bernama Narrative menjual data pengguna yang mengunduh aplikasi pelacak menstruasi
- Selain kueri aplikasi terpasang, manifest aplikasi juga bisa memuat izin secara luas yang tampak melampaui kebutuhan
- Zepto meminta izin
READ_SMS
- Pengguna bisa menolaknya, tetapi izin ini wajib untuk mendaftar Zepto Postpaid
- Jika izin diberikan, SMS dari banyak sender ID TRAI milik bank, serta SMS dari Blinkit, Swiggy, Bigbasket, dan Flipkart juga termasuk yang dapat diperiksa
- Tampaknya SMS bank dibaca untuk memverifikasi kelayakan paket Postpaid, tetapi pembacaan itu bisa dilakukan bahkan ketika pengguna tidak memilih fitur tersebut
- Setelah memberi izin seperti
READ_SMS kepada aplikasi, pengguna tidak bisa melihat kapan dan apa yang diakses aplikasi
- Informasi aplikasi Android yang terpasang dapat digunakan oleh developer aplikasi dan data broker untuk profiling, pencocokan silang dengan data jaringan iklan, dan penetapan harga
1 komentar
Opini Hacker News
Celah ACTION_MAIN sebenarnya sudah pernah dibahas sebelumnya: https://commonsware.com/blog/2020/04/05/android-r-package-vi...
Google tidak berusaha menambalnya. Saya penasaran apa yang akan terjadi jika ini diajukan ke Android VDP sebagai bypass izin
Ada juga pertanyaan SO yang diajukan penulis tentang bypass ini: https://stackoverflow.com/q/79527331
Pada titik itu, alur ketika Android menanyakan apakah pengguna ingin menjadikan gim acak yang baru diunduh sebagai launcher default menjadi interaksi yang cukup berisiko bagi aplikasi mencurigakan. Pengguna bisa saja keluar lalu melaporkannya, atau pengguna yang kurang paham memilihnya sebagai launcher default, merusak layar beranda, lalu melapor ke Play Store. Jika benar-benar ingin didistribusikan sebagai aplikasi sekelas launcher, kemungkinan juga ada pengujian otomatis dan persyaratan tambahan yang menjadi beban bagi pengembang
Sulit dipercaya para engineer Google tidak mengetahui celah yang banyak dipakai ini, tetapi saya penasaran apakah ada sumber yang menyebut Google menolak memperbaikinya
Saya masih sama sekali tidak mengerti mengapa “aplikasi” native diperlukan. Sejauh ini saya belum pernah melihat “aplikasi” yang tidak cukup dibuat sebagai situs web atau web app, dan sebagian besar mungkin akan lebih baik jika berupa web app
Satu-satunya keunggulan “aplikasi” tampaknya adalah pengembang bisa mengakses informasi pribadi yang sebenarnya tidak mereka perlukan
Ada juga keunggulan bisa masuk ke “App Store”, tetapi App Store adalah konsep yang tidak perlu, dibuat Apple/Google agar bisa mengambil porsi besar dari penjualan
Browser web menyediakan sandboxing yang cukup baik, tidak ada biaya “submission”, dan bisa diakses oleh semua orang di semua ponsel
Secara realistis, sebagian besar mobile web app itu buruk. Pengalaman penggunanya sama sekali tidak menyamai aplikasi native. Saya tidak suka teks ikut terseleksi, tidak suka pull-to-refresh di setiap halaman, dan tidak suka swipe ke kiri membawa saya ke halaman sebelumnya
Mungkin ada cara untuk mengakali masalah-masalah ini, tetapi library Silk baru (https://silkhq.co/) tampak sebagai contoh pertama yang sangat mendekati pengalaman native. Namun fakta bahwa ini adalah library berbayar saja sudah menunjukkan bahwa masalah ini tidak sepele
Ada banyak hal yang bisa dilakukan aplikasi native tetapi sulit atau sama sekali tidak bisa dilakukan browser. Misalnya penyuntingan video/audio berat, akses RAM yang besar, pemanfaatan komputasi GPU, dan pekerjaan yang dekat dengan hardware masih belum cukup jika hanya mengandalkan browser
Bukan berarti cara Apple dan Google mengimplementasikannya memang bagus, tetapi saya tidak melihat masa depan yang hanya memakai web app akan datang. Dengan alasan yang sama, untuk sementara saya juga tidak akan mengganti komputer sungguhan saya dengan Chromebook
Namun aplikasi yang berjalan offline di perangkat dan tidak menyebarkan data saya ke layanan-layanan yang tidak saya kendalikan tetap bagus. Saya juga tidak ingin bergantung pada koneksi internet di mana pun saya berada
Saya suka aplikasi offline OsmAnd/Organic Maps yang menunjukkan jalan ketika berada di hutan atau pegunungan, dan juga aplikasi yang berbagi data dengan terhubung langsung ke perangkat lokal saya alih-alih server pihak ketiga
Jika memungkinkan, semua aplikasi seharusnya dikembangkan dengan offline-first dan hanya meminta internet saat diperlukan. Aplikasi yang tidak bisa berjalan tanpa internet cukup menjadi web app dan tidak perlu ada di perangkat saya
Saya penasaran kapan terakhir kali Anda memesan tiket pesawat lewat mobile web. Saya juga tidak tahu bagaimana orang bisa tahan dengan ruang layar yang diambil browser. Aplikasi bisa menyimpan autentikasi di cache dan menanganinya dengan FaceID, sedangkan harus login setiap kali juga menjadi masalah
Jadi inilah alasan saya suka Hacker News
Kemarin saya menemukan tulisan ini dan mempostingnya di papan Android Reddit: https://old.reddit.com/r/Android/comments/1jmwg4w/everyone_k...
Rekomendasinya 0, dan komentarnya penuh dengan respons yang entah dari orang-orang murung atau bot
Di sini, posisinya ada di sekitar peringkat 2, dan kebanyakan komentarnya menarik
Ada banyak subreddit yang sudah mati, tetapi r/android mungkin termasuk yang paling buruk
Selain itu, subreddit bertopik tertentu umumnya tampak dimoderasi oleh orang-orang yang punya kepentingan dalam topik itu, dan ini merugikan komunitas. Saya pernah memposting tulisan yang menjelaskan secara rinci lisensi proprietari seperti apa yang dipakai Meta untuk Llama dan apa sebenarnya arti lisensi itu, tetapi moderator r/LocalLlama menghapusnya secara manual tanpa alasan, dan ketika saya bertanya agar lebih memahami aturannya, mereka tidak menjawab kenapa dihapus
Saat “Reddit purge” terakhir, banyak moderator komunitas diganti dengan staf Reddit, jadi saya curiga sebagian besar platform itu dijual agar masing-masing perusahaan bisa memoderasi ruangnya sendiri secara langsung
Kalau menekan tautan “past” di bawah judul, ada utas dari 2 hari lalu yang benar-benar mati
Hacker News memahami konsep kritik yang konstruktif
Bagian kuncinya adalah: “Di luar kategori umum, mereka juga memeriksa hal-hal seperti Tamil Calendar, Odia Calendar, Qibla Direction Finder, aplikasi mandir, aplikasi astrologi. Mereka tahu apa yang mereka lakukan”
Aplikasi pinjaman ini memprofilkan orang berdasarkan identitas etnis/daerah (Tamil, Odia) dan agama (Qibla Direction Finder untuk Muslim, aplikasi mandir untuk umat Hindu)
Aplikasi Android HSBC UK melihat aplikasi yang terpasang, lalu menolak berjalan jika ada aplikasi dengan izin tertentu. Misalnya, tidak boleh ada launcher alternatif, dan sekarang jika ada satu saja aplikasi yang dipasang dari luar toko aplikasi Google, aplikasi itu menolak berjalan
Saya pernah mengeluh soal ini di sini, tetapi akhirnya saya meminta perangkat keamanan hardware dan menggunakan situs web sebagai gantinya
Saya penasaran apakah mereka setidaknya mengatakan bahwa data ini tidak dikirim ke perusahaan
Jawaban atas pertanyaan “Kenapa Swiggy perlu tahu apakah di ponsel saya terpasang aplikasi Xbox atau Playstation untuk fungsi intinya? Apa gunanya tahu apakah saya punya aplikasi Naukri atau Upstox untuk mengantarkan bahan makanan ke rumah saya?” adalah untuk tujuan fingerprinting
Aplikasi perbankan juga sama; bagi penipu, mengetahui lebih dulu bank apa yang digunakan target benar-benar berguna
Terutama jika bisa dikaitkan dengan nomor telepon, akan ada cukup banyak pihak yang menginginkan informasi semacam ini
Pada bagian “Untuk use case yang sangat spesifik seperti file manager, browser, dan aplikasi antivirus, Google memberikan pengecualian izin QUERY_ALL_PACKAGES agar bisa melihat seluruh aplikasi yang terpasang”, saya tidak mengerti kenapa browser perlu mencantumkan daftar aplikasi yang terpasang
Kenapa?!
Jadi, salahkan manajemen produk Google
Misalnya Obsidian meminta izin seluruh sistem file, padahal sebenarnya cukup mengakses file yang dipilih pengguna untuk dilihat
Itu fitur yang sangat berguna, jadi saya rasa saya tidak ingin fitur itu hilang
“Semua orang tahu semua aplikasi di ponselmu” itu maksudnya ponsel Android. iPhone tidak punya cacat privasi seperti ini
https://blog.verichains.io/p/technical-analysis-improper-use...
Di Android, kalau memakai profil kerja yang sekarang menjadi cara standar, mereka hanya bisa melihat aplikasi di dalam profil kerja
Salah satu insentif terbesar membuat aplikasi adalah mengeruk segala macam data dari pengguna. Lihat saja berapa banyak aplikasi yang meminta izin akses kontak, dan berapa banyak aplikasi yang benar-benar membutuhkan kontak untuk fungsinya. Jadi masih agak mengejutkan bahwa banyak orang terkejut dengan temuan seperti ini
Dulu aplikasi bisa mencoba berkomunikasi dengan aplikasi lain lewat skema URI kustom, dan kalau berhasil, berarti aplikasi itu terpasang. Twitter memakai ini untuk fingerprinting
Sekarang aplikasi harus menerima intent khusus, dan harus menyebutkan daftar aplikasi yang akan dipakai untuk tujuan itu
Baru-baru ini fitur LLM mereka mendapat pembaruan besar, jadi saya memasang aplikasinya untuk mengecek. Selama aplikasi terpasang, setiap kali saya membuka situs web selulernya, muncul banner besar yang menyuruh saya membuka aplikasi, dan tidak bisa dihilangkan bahkan dengan pemblokir iklan atau pemblokir elemen pengganggu. Setelah aplikasinya saya hapus lagi, banner itu menghilang
Kenapa bisa begitu? Saya penasaran bagaimana situs web seluler tahu apakah aplikasinya terpasang. Saat aplikasi tidak terpasang, semua ajakan memakai aplikasi bisa saya blokir dengan pemblokir konten/elemen pengganggu, tetapi kenapa saat aplikasi terpasang tidak bisa diblokir?
Perlu root, tetapi ini bisa diblokir atau dipalsukan dengan modul LSPosed[1] seperti XPrivacyLua[2]. Saya juga dengar ada AppOps[3] yang closed source, tetapi belum pernah mencobanya
[1]: https://lsposed.org
[2]: https://github.com/M66B/XPrivacyLua / https://github.com/0bbedCode/XPL-EX
[3]: https://appops.rikka.app
Menariknya, XPrivacyLua sudah tidak lagi didukung, dan aplikasi pendamping pro-nya akan dihapus oleh Google dari Play Store karena menggunakan izin QUERY_ALL_PACKAGES
[0]: https://github.com/M66B/NetGuard
[1]: https://xdaforums.com/t/closed-app-xposed-6-0-xprivacylua-an...
Saya penasaran apakah aplikasi Windows, terutama yang tidak dipasang dari MS Store, bisa menghitung judul semua jendela yang sedang terbuka. Seberapa sulit bagi sebuah aplikasi untuk memantau seluruh trafik web hanya dari judul?
Ini pertanyaan sungguhan. ChatGPT cuma mengiyakan semuanya sehingga tidak banyak membantu, dan saya butuh seseorang yang bisa menjelaskan kenapa di dunia nyata ini tidak layak dilakukan
Ada fungsi EnumWindows() dan EnumChildWindows() untuk tujuan ini
Sebagai contoh fitur ini, lihat utilitas “Windows Modifier v2.00” dan Spy++ (SPYXX.EXE) dari Microsoft. Dulu saat pertama kali mendapatkannya ada banyak halaman terkait, tetapi sekarang hampir tidak muncul meski dicari dengan nama persisnya; rasanya seperti tanda bahwa internet sudah menjadi pandai melupakan
Solusi untuk aplikasi yang tidak dipercaya adalah tidak memakainya sama sekali atau memakainya di VM
Setidaknya ini benar untuk Windows dan sebagian besar sistem *nix tradisional, terutama X11
Ada satu hal yang dilakukan Android dengan baik dalam hal ini. Secara default, semua aplikasi dijalankan sebagai pengguna yang berbeda. Artinya folder home-nya berbeda dan tidak bisa melihat aplikasi lain
Meski begitu, alat seperti ManicTime atau ActivityWatch melacak riwayat browser lewat judul jendela jika Anda tidak memasang plugin browser
https://www.manictime.com/
https://activitywatch.net/
Secara khusus, benar bahwa “UAC [tetap] bukan penghalang keamanan”. Saat Anda mengklik konfirmasi untuk menaikkan hak proses atau memasukkan kata sandi, pada dasarnya Anda ikut menaikkan seluruh desktop dan semua yang sedang berjalan