- Aplikasi BM2 untuk memeriksa kondisi baterai kendaraan mengumpulkan bukan hanya koordinat GPS, tetapi juga informasi Wi-Fi di sekitar dan BTS seluler, lalu mengirimkannya ke server jarak jauh
- Data dikirim ke server
bm2.quicklynks.commilik pengembang produk/aplikasi Leagend serta server AMap, pengembang SDK layanan lokasi; masing-masing teridentifikasi di-host di Alibaba Cloud Hong Kong dan Beijing - Meski aplikasi ini memiliki 100K+ unduhan di Google Play, label privasi awal di app store seperti “Tidak ada data yang dibagikan”, “Tidak ada data yang dikumpulkan”, dan “Dienkripsi saat transit” tidak sesuai dengan perilaku sebenarnya
- Di Android, pemindaian Bluetooth memerlukan izin lokasi, sehingga pengguna pada praktiknya harus mengizinkan akses lokasi agar bisa memakai perangkat; sementara di aplikasi iOS, fungsi monitor baterai tetap berjalan meski izin lokasi ditolak
- Setelah pembaruan 25 Juli 2023, AMap SDK dihapus dari versi di kedua app store, tetapi data lokasi GPS masih dikirim ke server Alibaba Cloud Hong Kong, dan aplikasi iPhone juga mengirim alamat jalan pengguna
Data lokasi yang dikirim aplikasi monitor baterai
- Produk yang dibahas adalah monitor baterai Bluetooth yang dipasang ke terminal baterai kendaraan lalu dipasangkan dengan smartphone untuk menampilkan tegangan/persentase dan menjalankan tes cranking
- Produk merek PowerTech dibeli dari peritel elektronik Australia Jaycar Electronics untuk dianalisis, dan tampaknya merupakan rebranding dari Bluetooth 4.0 Battery Monitor milik Leagend
- Produk sejenis juga teridentifikasi dengan nama seperti merek Century dari Repco,
ZX-1689, danLi Battery Monitor - Aplikasi Android BM2 mencatat 100K+ unduhan dan 1,55 ribu ulasan di Google Play
- Aplikasi BM2 untuk iPhone juga, berdasarkan pemeriksaan trafik jaringan, mengirim data lokasi ke server jarak jauh
Tujuan pengiriman dan cakupan pengumpulan
- Aplikasi mengumpulkan bukan hanya tegangan baterai, tetapi juga koordinat GPS, data BTS seluler di sekitar, dan informasi access point Wi-Fi di sekitar
- Saat itu, tujuan pengiriman data lokasi yang terkonfirmasi terbagi menjadi dua kelompok
- Server aplikasi Leagend/BM2:
bm2.quicklynks.com,47.244.125.231, Alibaba Cloud Hong Kong - Server AMap SDK:
dualstack-cgicol.amap.com,106.11.130.194, Alibaba Cloud Beijing
- Server aplikasi Leagend/BM2:
- AMap adalah penyedia peta digital Tiongkok yang diakuisisi Alibaba, dan SDK-nya mengambil bukan hanya GPS, tetapi juga data lain terkait lokasi yang bisa dikumpulkan ponsel
- Setelah pembaruan 25 Juli 2023, AMap SDK dihapus dari aplikasi di kedua app store
- Pengumpulan data GPS, Wi-Fi, dan BTS yang sebelumnya menuju server AMap di Tiongkok daratan dihentikan
- Data lokasi GPS masih dikirim ke server Alibaba Cloud Hong Kong
- Aplikasi iPhone juga memeriksa dan mengirim alamat jalan pengguna
Label privasi app store dan perilaku sebenarnya
- Per 27 Juni 2023, pengembang aplikasi BM2 memperbarui label privasi di Google Play dan Apple App Store untuk menyatakan pengumpulan data lokasi presisi
- Sebelumnya, label di Google Play tidak sesuai dengan perilaku aplikasi sebenarnya
- “Tidak ada data yang dibagikan kepada pihak ketiga”: lintang dan bujur dikirim bersama statistik baterai ke server
quicklynks.com, analitik crash dikirim keumeng.com, dan koordinat Wi-Fi, BTS, serta GPS dikirim ke AMap - “Tidak ada data yang dikumpulkan”: data lokasi dan data terkait baterai dikumpulkan
- “Dienkripsi saat transit”: data yang dikirim ke server cloud BM2 dikirim melalui HTTP tanpa enkripsi
- “Tidak ada data yang dibagikan kepada pihak ketiga”: lintang dan bujur dikirim bersama statistik baterai ke server
- Rincian teks kebijakan privasi memuat “Hong Kong” dan “location information”
Masalah struktural yang dibuat oleh izin Android
- Aplikasi Android meminta izin lokasi agar dapat berfungsi, dan jika izin tidak diberikan perangkat keras tidak bisa digunakan
- Sejak Android 6.0, untuk mengakses identifier perangkat keras dari perangkat eksternal di sekitar melalui pemindaian Bluetooth dan Wi-Fi, diperlukan izin
ACCESS_FINE_LOCATIONatauACCESS_COARSE_LOCATION - Yang sebenarnya dibutuhkan aplikasi BM2 adalah pemindaian BLE, tetapi izin lokasi yang luas juga memungkinkan akses ke data GPS, BTS, dan Wi-Fi, sehingga menyisakan ruang untuk penyalahgunaan
- Pada Android 12 ke atas, pemindaian BLE bisa dilakukan hanya dengan izin BLUETOOTH_SCAN
- Menurut dokumentasi Google,
ACCESS_FINE_LOCATIONdapat diberiandroid:usesPermissionFlags="neverForLocation", tetapi ini hanya berlaku jika hasil pemindaian Bluetooth tidak digunakan untuk menyimpulkan lokasi fisik
Hal yang terkonfirmasi dari trafik jaringan
- Trafik aplikasi mobile diperiksa menggunakan mode WireGuard dari Mitmproxy
- Karena BM2 tidak menggunakan HTTPS, pengiriman lintang dan bujur dapat dikonfirmasi di Android dan iOS tanpa perlu memasang sertifikat
- Setelah aplikasi tersambung ke perangkat monitor baterai, aplikasi mengirim permintaan
POSTkehttp://bm2.quicklynks.com:8080/api/bm2/userDevice/upload? - Permintaan tersebut mencakup field lintang dan bujur, sampel tegangan baterai, alamat MAC perangkat keras,
nickname, danserialNo - Hasil pencarian informasi DNS dan IP saat itu menunjukkan
bm2.quicklynks.commengarah ke47.244.125.231, dan informasi IP menunjukkan AS terkait Alibaba di Sham Shui Po, Hong Kong
Sinyal lokasi yang ditangani AMap SDK
- AMap SDK mengumpulkan data GPS, Wi-Fi, dan BTS seluler
- Data seluler mencakup Cell Global Identity
MCC: Mobile Country CodeMNC: Mobile Network CodeMCC + MNC: PLMN, identifier operator selulerLAC: kelompok BTS dalam suatu areaCI: identifier transceiver BTS dalam area tersebut- Pada 4G,
TACdigunakan
- Data Wi-Fi mencakup alamat MAC
BSSIDdan nama access pointSSID - Data AMap diproses dalam bentuk blob biner terserialisasi yang dienkripsi sebelum ditulis ke disk atau dikirim melalui internet
- Data lokasi dienkripsi dengan kunci AES sementara, lalu kunci AES tersebut dienkripsi lagi dengan kunci publik RSA
- Metode ini tidak bergantung pada certificate pinning
- Tanpa memodifikasi aplikasi atau memiliki kunci privat RSA yang sesuai, isinya sulit dilihat melalui inspeksi jaringan man-in-the-middle
Perangkat keras dan lingkungan pengujian
- Bagian dalam perangkat kerasnya sederhana, berpusat pada regulator tegangan dan MCU Bluetooth Low Energy CC2541 dari Texas Instruments
- CPU CC2541 berbasis Intel 8051 8-bit, sedangkan seri CC berikutnya menggunakan arsitektur ARM Cortex
- SoC seri CC mendukung antarmuka debugging on-chip khusus, dan JTAG maupun SWD tidak terlihat
- Perangkat mendukung pembaruan OTA, dan endpoint REST yang mengembalikan firmware melalui HTTP didokumentasikan di part 3
- Tidak terlihat shunt untuk penginderaan arus atau rangkaian pengukuran arus lainnya, sehingga konfigurasi perangkat kerasnya sangat sederhana
- Pengujian dilakukan dengan baterai timbal-asam 12V kecil, monitor baterai BM2, dan perangkat Android yang sudah di-root
- Karena data lokasi AMap hanya dicatat dari memori ke database ketika pergerakan fisik terdeteksi, instrumentasi runtime dilakukan menggunakan Frida dan Objection
Prosedur analisis dinamis dan statis
- Koordinat GPS dapat diubah ke nilai arbitrer dengan meng-hook
android.location.Location.getLatitudedangetLongitudemenggunakan Frida - Dengan plugin Wallbreaker dari Objection, instance data GPS, BTS operator, dan Wi-Fi diperiksa di memori heap aplikasi
- APK diekstrak dengan memperoleh path dari perangkat menggunakan
adb shell pm path, lalu didekompilasi dengan JADX - Di
AndroidManifest.xml, selainFINE_LOCATIONjuga terlihat izin sepertiCAMERA,IMAGE_CAPTURE,ACTION_VIDEO_CAPTURE,MODIFY_AUDIO_SETTINGS, danRECORD_AUDIO, tetapi perlu penyelidikan lebih lanjut apakah fungsi tersebut digunakan - Entry point aplikasi adalah
com.stub.StubApp, dan packer komersialqihoo.utildigunakan - Dengan frida-dexdump, bytecode eksekusi Dalvik asli didump dari memori saat runtime, lalu dikonversi menjadi kode Java yang dapat dibaca dengan
dex2jardan JADX - Tidak ada obfuscation tambahan pada badan aplikasi BM2, tetapi SDK layanan lokasi
amapdiobfuscate, dan sebagian nama kelas dipulihkan dengan fitur deobfuscation JADX
1 komentar
Pendapat Hacker News
Ini adalah hasil rekayasa balik monitor baterai mobil BLE. Aplikasi ini sudah diunduh lebih dari 100 ribu kali hanya di Google Play.
Ternyata aplikasi ini terus mengirim data GPS, cell ID menara BTS ponsel, dan data beacon Wi-Fi ke server di Hong Kong dan Tiongkok daratan. Di halaman Google dan Apple App Store tertulis bahwa aplikasi ini tidak mengumpulkan data pribadi atau mengirimkannya ke pihak ketiga.
Semoga ini menjadi beberapa kiat bagi orang-orang yang ingin menganalisis aplikasi perangkat terhubung.
https://www.amazon.de/dp/B0BLG9Z462
Jika mengeklik gambar ketiga, muncul tabel perbandingan; menariknya, fitur itu dikemas seolah-olah merupakan fitur khusus BM6, padahal sebenarnya hanya fitur aplikasi.
Kode QR perangkat [0] mengarah ke aplikasi ini: https://play.google.com/store/apps/details?id=com.dc.bm6
Karena itu saya juga memeriksa URL lain seperti https://link.quicklynks.com/bm3.html dan https://link.quicklynks.com/bm4.html; yang terakhir dialihkan ke https://www.leagend.com/ dan mengelola kanal YouTube ini: https://www.youtube.com/channel/UCqkvyOFP5cXQ02f3h1Ns42Q
[0] http://link.quicklynks.com/bm6.html
Saya juga tidak yakin apakah sepadan menguras baterai ponsel terus-menerus hanya untuk melihat di layar ponsel hal yang sudah diberitahukan panel instrumen. Kalau baterainya statis, bukankah cukup memakai dial voltmeter analog saja?
Sekarang terlalu sulit mencari perangkat mandiri yang bekerja tanpa aplikasi. Misalnya, bahkan lampu LED yang warnanya bisa dipilih dengan tombol di bodinya tanpa aplikasi pun sulit ditemukan; saya memang menemukan satu, tetapi pengalihan warna tetap tidak bisa dilakukan tanpa aplikasi.
Kalau orang-orang tidak lebih menyukai omong kosong seperti ini, mungkin akan lebih mudah menemukan produk elektronik yang normal lagi.
Saya tidak mengerti mengapa di Android pengguna tidak bisa mencegah aplikasi 1) berjalan saat startup 2) berjalan di latar belakang. Setidaknya itu semestinya menjadi izin yang disetujui pengguna.
Ini seharusnya bisa menghentikan cukup banyak aplikasi yang menyedot data seperti ini; menurut saya Google juga ikut bersalah.
https://grapheneos.org/
Saya tahu aplikasi bisa meminta aktivasi data lokasi, tetapi saya terkejut bahwa aplikasi bisa menyalakannya secara sepihak, dan saya juga tidak menemukan cara untuk mencegahnya.
Karena hal-hal seperti ini, saya merasa sulit memercayai ponsel mana pun.
Kasus seperti ini adalah alasan mengapa kita tidak boleh berhenti memperjuangkan privasi digital dan hukum yang melindunginya.
Ini bukan soal “tidak punya apa-apa untuk disembunyikan”, melainkan soal mencegah pihak ketiga mengawasi dan menjual data pribadi tanpa pengetahuan dan persetujuan eksplisit.
Saat ini kita berada di tengah perang data total, dan harus melawan dengan tegas.
Menjengkelkan bahwa hal-hal seperti ini sudah menjadi semacam standar, padahal pada dasarnya tidak ada konsekuensi bagi pelaku jahat.
Setelah membaca tulisan ini, saya merasa lega menggunakan GrapheneOS. Saya sudah memakainya sebagai perangkat harian selama beberapa bulan, dan setiap aplikasi saat dipasang harus secara eksplisit diizinkan atau ditolak izin jaringan-nya.
Untuk aplikasi lokal seperti ini, saya tidak akan pernah memberi izin jaringan, dan saya juga tidak memberikannya ke aplikasi keyboard yang selalu terasa mencurigakan.
Ini bukan sekadar konyol; ini terang-terangan memusuhi privasi dan keselamatan pengguna.
Sistem operasi seharusnya menjadikan akses internet sebagai izin yang bisa diberikan atau dicabut oleh pengguna. Rasanya Android dulu pernah punya hal seperti itu, sedangkan iOS sepertinya tidak punya selain untuk data seluler
Kalau saya membeli perangkat yang mengklaim memakai Bluetooth tetapi ternyata membutuhkan akses internet, saya akan mengembalikannya
Kalau tidak setuju, aplikasi tidak bisa diunduh. Sebagian izin masih seperti itu, sementara banyak izin sudah berubah menjadi model beri/cabut
Akses internet masih merupakan izin, tetapi Google Play tidak lagi menanyakannya, sehingga semua aplikasi bisa memilikinya. Namun, jika tidak diminta di manifest, izin itu tidak akan berfungsi
https://netguard.me/
Untuk pemula, tampilkan domainnya, lalu jika domain itu masuk allowlist Apple dengan cara apa pun, tandai hijau. Jika bukan allowlist maupun blocklist, tandai kuning, atau kalau warna membingungkan, cukup tampilkan namanya saja
Aplikasi yang mengirim permintaan ke blocklist bisa diblokir dari App Store sampai ada peninjauan tambahan
Untuk pengguna tingkat lanjut, akan bagus jika mereka bisa mengetuk untuk melihat detail seperti payload dan header. Fitur ini benar-benar dibutuhkan dan tampaknya tidak terlalu sulit untuk ditambahkan
[1]: https://developer.apple.com/documentation/bundleresources/en...
Penyedia app store sepertinya sebaiknya menghapus sama sekali frasa seperti “data pribadi tidak dikumpulkan atau dikirimkan ke pihak ketiga”
Sebagai gantinya, mereka harus memperingatkan: “Aplikasi ini memiliki izin terkait jaringan, sehingga bisa mengirim data apa pun yang diinginkannya ke mana pun yang diinginkannya” atau “Pembuat aplikasi mengklaim tidak memberikan data kepada pihak ketiga, tetapi kami sama sekali tidak punya cara untuk memverifikasinya”
Secara realistis, Apple atau Google tidak bisa tahu apa itu pihak ketiga. Server di Tiongkok dan Hong Kong bisa saja pihak pertama, siapa yang tahu. Tidak ada yang tahu selain pembuat aplikasi
Partai Komunis Tiongkok mungkin tidak terlalu tertarik pada data individu tertentu, tetapi sangat tertarik pada data agregat. Selain itu, data itu menjadi sangat berguna ketika dikaitkan dengan target tertentu, seperti data jutaan pegawai pemerintah AS yang dikumpulkan selama bertahun-tahun [0][1]
“Eksperimen besar” bahwa perdagangan terbuka dan pertukaran akan membawa Tiongkok pada demokrasi dan kebebasan telah gagal total. Hasilnya justru hanya memperkuat kediktatoran kejam yang mengincar ekspansi global. Jangan berbisnis dengan Tiongkok
[0] https://en.wikipedia.org/wiki/Office_of_Personnel_Management...
[1] https://www.nbcnews.com/tech/security/china-spent-years-coll...
Perlu disadari bahwa perangkat yang memantau pada akhirnya juga perlahan menguras objek yang dipantaunya. Pada akhirnya, monitor itu sendiri harus diawasi lagi secara aktif
Perangkat BLE ini perlahan, tetapi pasti, menguras aki mobil. Suatu hari ia akan mengirim peringatan bahwa aki perlu diisi, tetapi tak lama kemudian ia bahkan akan berhenti mengirim peringatan
Selain itu, ia juga akan menyedot data ponsel dan mengirimkannya ke Tiongkok, serta menguras baterai ponsel. Sulit membayangkan hadiah yang lebih buruk untuk diberikan saat hari raya; ini adalah ancaman konsumen tiga lapis yang jarang ditemui
Seriusnya, self-discharge kira-kira satu orde besaran lebih besar daripada monitor ini
Android membutuhkan fitur untuk memberikan data GPS palsu pada perangkat sungguhan. Ini akan berguna untuk aplikasi yang meminta GPS tanpa alasan apa pun
Kalau aplikasi senter membutuhkan GPS agar bisa menyala, tidak masalah. Lokasi saya saat ini adalah Gunung Kilimanjaro
Pengembang aplikasi juga mencoba menjelaskan kepada pengguna lewat popup seperti “tekan Izinkan agar Bluetooth berfungsi”
Pada titik ini, masuk akal untuk berasumsi bahwa perangkat-perangkat seperti ini mengumpulkan data dalam jumlah besar dan mengirimkannya ke kantor pusat. Saya tidak akan terkejut kalau router TP-Link juga mengirim semuanya ke Tiongkok
Namun ini tidak terbatas pada Tiongkok saja; iPhone yang Anda pakai sekarang juga mungkin mengirim semua penekanan tombol dan data lokasi ke AS
Jika Anda curiga router TP-Link mengirim semuanya ke server jarak jauh, cukup monitor trafiknya
Saat teman-teman menertawakan obsesi terhadap privasi dan pengumpulan data, contoh seperti inilah yang saya tunjukkan
Tidak ada dasar untuk percaya bahwa mereka melakukan ini dengan alasan jahat, tetapi kenyataannya kita tidak punya cara untuk mengetahuinya. Mungkin saja ini sekadar ketidaktahuan atau ketidakmampuan
Jumlah data lokasi yang dikumpulkan produsen perangkat cukup besar. Jika mereka memonetisasinya, saya bertanya-tanya apakah itu bisa dianggap berniat jahat meski tidak diungkapkan kepada pengguna akhir
AMap SDK yang digunakan aplikasi ini mengumpulkan data lokasi jauh lebih banyak. Dalam hal ini, rasanya kemungkinan besar tujuannya adalah meningkatkan akurasi layanan lokasi dan perangkat lunak peta, dan saya tidak menganggap hal itu sendiri sebagai sesuatu yang jahat
Namun ceritanya berbeda jika perilaku seperti ini tidak diungkapkan kepada pengguna dan pengembang. Situsnya berbahasa Mandarin [1], dan saya juga tidak yakin ada orang yang akan membaca sampai detail ketentuannya untuk memastikannya
[1] https://lbs.amap.com/api/lightweight-android-sdk/download
Ini mengingatkan saya pada masa ketika saya mengira tombol Facebook “Like” di semua situs web itu tidak berbahaya, lalu mengetahui betapa luas pelacakan dilakukan tanpa persetujuan
Cara khas Tiongkok adalah sengaja mengumpulkan data dengan cara yang tampak tidak berbahaya dari luar, atau sengaja membiarkan celah keamanan terbuka lebar yang dapat disalahgunakan nanti. Jika ketahuan, mereka berkata, “Maaf, kami akan segera memperbaikinya”
Yang lebih buruk adalah tidak ada konsekuensi untuk perilaku seperti ini. Seseorang di antara Google, Uni Eropa, atau FTC seharusnya mengenakan denda