Analisa aplikasi Peduli Lindungi oleh Citizen Lab


Saya baru baca laporan Citizen Lab tentang aplikasi Peduli Lindungi. Citizen Lab ini sebuah lab atau kelompok studi di Universitas Toronto yang melakukan riset tentang IT, HAM sama keamanan.

Mereka melakukan analisa terhadap aplikasi PeduliLindungi (versi 2.2.2) versi android. Analisa dilakukan dengan menguji permission dari app, terutama yang menurut google “dangerous permissions” . Maksudnya permission yang dapat melakukan akses ke data private pengguna, atau yang mengandung informasi pribadi. Contohnya akses ke foto, kamera, lokasi, kontak, kalendar, status telepon dll.

Metode yang mereka lakukan studi literatur (pemberitaan media, analisa pihak lain), review kebijakan privasi apps serta klaim dari developer, reverse engineering sama analisa trafik jaringan. Diuji juga apakah dangerous permission tadi diperlukan untuk fungsi dari app.

Di Android, semua apps harus menyebutkan permission yang digunakan pada file manifest (“AndroidManifest.xml”). Dari daftar permission, permission yang tidak berbahaya, biasanya diminta pada saat instalasi. Sementara “Dangerous permissions” diminta menggunakan model “runtime permissions” yang mulai digunakan pada Android versi 6.

Runtime permissions di-request melalui sebuah interface dialogue, biasanya ketika permission tersebut pertama kali diminta. Hanya setelah pengguna menyetujui runtime permission, baru app diijinkan menggunakan permission tersebut. Bila user menolak runtime permission requests, apps tetap berjalan tanpa menggunakan permission tersebut.

Namun ada juga apps yang menyatakan runtime permissionnya di manifes tapi tidak meminta requests  permission tersebut melalui runtime permission dialog. Pada kasus ini permissions tidak diijinkan. Selain itu ada juga apps yang telah diijinkan sebuah permission, namun tidak menggunakan permission tersebut.

Citizen lab menamakan permission yang disebut pada manifes namun tidak diminta, serta diminta namun tidak digunakan sebagai unused permission. Unused permissions tidak memberikan ancaman security dan privacy. Namun bisa disalahgunakan oleh penyerang (hacker)

Ketika melakukan reverse engineering, citizen lab melakukan pendekatan analisa statik berikut:

  1. Mencari nama permission’s di source code untuk mencari bagian kode yang meminta permission.
  2. Mencari callers dari segmen kode untuk melihat pada kondisi apa permission ini diminta atau digunakan.
  3. Dari konteks callers kode tadi, ditentukan tingkatan operasi yang akan dilakukan callers, dan fitur high level apa yang digunakan kode.

Sementara itu untuk analisa dinamik yang dilakukan:

  1. Apps dijalankan untuk melihat permission apa yang diminta, karena dangerous permission harus diminta pada saat runtime.
  2. Melakukan analisa trafik jaringan.

Untuk menangkap trafik jaringan, mereka menjalankan aplikasi dalam android yang sudah di root, dan pake sertifikat Authority SSL custom. Dengan setingan ini mereka dapat menangkap dan mendekrip trafik SSL. Menurut mereka ada beberapa keterbatasan dari metode ini, diantaranya:

  1. Dengan pendekatan statis, ada kemungkinan bila developer menyembunyikan permission dalam source code (obfuscation) . Biasanya analisa statik dapat dilengkapi dengan mengamati behaviour app’s runtime. Cuman mengamati app’s runtime behaviour (dynamic analysis) juga ada keterbatasan.
  2. Dengan pendekatan analisis dinamis, running environment yang digunakan bisa jadi tidak sama dengan kondisi ketika apps meminta permission atau mengirimkan informasi. Contohnya ketika apps minta pengguna untuk sign-in. Sehingga citizen labs hanya mengamati behaviour apps dari awal dijalankan sampai ke halaman login.

Dengen pendekatan reverse engineering, analisa yang dilakukan bisa jadi hanya mendapatkan hanya sebagian dari behaviour dari apps.

Aplikasi Peduli lindungi mengunakan bluetooth untuk scanning perangkat bluetooth terdekat, mirip dengan Exposure Notification System yang dimiliki google dan apple. Fungsi ini diperlukan untuk memberi notifikasi kepada pengguna bila mereka berada di zona merah. Selain itu juga notifikasi bila pasien meninggalkan area isolasi.

Peduli lindungi memiliki fitur baru yaitu fitur “digital diary” yang merekam lokasi pengguna. Selain itu fungsi facial recognition untuk mengukur temperatur pengguna dan menentukan apakan pengguna menggunakan masker atau tidak ketika memasuki gedung atau ruang publik.

Selain itu sebuah kebijakan privacy ditambahkan pada web PeduliLindungi setelah adanya surat terbuka (open letter) dari 13 organisasi terhadap kominfo. Analisa citizen lab menemukan bahwa app menuliskan berbagai dangerous permissions, termasuk location permissions yang dapat merekam geolocation, camera permissions yang dapat mengambil foto dan merekam video, serta device storage permissions yang dapat membaca foto pengguna dan file lainnya.

1. Lokasi

Peduli lindungi menggunakan beberapa permission untuk meminta lokasi diantaranya, ACCESS_BACKGROUND_LOCATION, ACCESS_COARSE_LOCATION, dan ACCESS_FINE_LOCATION. Dua permession terakhir mengijinkan app untuk mendapatkan informasi lokasi sistem operasi, permission pertama mengijinkan app untuk melakukannya di background. Sehingga peduli lindungi dapat melacak lokasi setiap saat.

Menurut app’s interface message, informasi lokasi digunakan untuk memberi notifikasi user ketika mereka berada di kerumunan atau zone merah selama lebih dari 30 menit. Zone merah adalah area yang tercatat memiliki kasus positif COVID-19 atau ada orang yang sedang karantina.

Dari analisa trafik, ditemukan PeduliLindungi mengirimkan koordinat geolokasi dan device identifiers ke dua endpoints: (1) https://api.pedulilindungi.id/zone/v2 dan (2) https://oat.udata.id/addTrackingPLLive.php. Endpoint pertama digunakan untuk menentukan apakah user berada pada area zona merah. Endpoint kedua dikelola oleh PT Telekomunikasi Indonesia Tbk. (Telkom Indonesia). Selain user’s geolocation dan WIFI MAC address, nama lengkap user name dan nomer HP juga dikirim ke endpoint kedua.

Menurut citizen lab, tidak satupun data ini diperlukan untuk contact tracing. Mengirimkan koordinat ke sebuah server tidak diperlukan karena bisa menggunakan bluetooth. Kemudian data yang dikirimkan ke telkom juga tidak dijelaskan akan digunakan untuk apa, dan bisa saja digunakan untuk kepentingan pemasaran digital

2. Kamera

Dari analisa media, ada dua fitur berbeda dari apps yang menggunakan kamera. Pertama untuk QR code scanner. Fitur ini untuk “digital diary” yang merekam lokasi yang dikunjungi pengguna. Fitur kedua adalah  facial recognition dimana pengguna mengukur suhu dan mendeteksi apakah pengguna menggunakan masker atau tidak.

3. Penyimpanan (Device storage)

App menggunakan dua permissions untuk mengakses external storage, READ_EXTERNAL_STORAGE dan WRITE_EXTERNAL_STORAGE. Penyimpanan eksternal pada Android adalah penyimpanan yang dapat diakses langsung oleh user, biasanya untuk menyimpan file, dokumen dan media. Storage ini dishare ke semua apps.

Bila pengguna memberi akses ke PeduliLindungi ke penyimpanan external storage, maka apps dapat mengakses file yang dibuat oleh pengguna dan oleh apps lainnya. Pada Android 10 dan versi terbaru, akses ini dibatasi dengan fitur baru  “scoped storage” system feature, yang membatasi jenis file yang dapat diakses.

Dari hasil reverse engineering PeduliLindungi, ditemukan kode untuk secara periodik meng-eksport local Bluetooth contact history ke penyimpanan external dengan nama file “pedulindungi.json” (sic). Namun tidak menemukan behaviour ini ketika menjalankan app. Bisa jadi karena kondisi pengujian yang tidak memerlukan backup. Penemuan ini membuktikan kenapa permission WRITE_EXTERNAL_STORAGE ada pada manifes.

Belum jelas kenapa informasi ini dieksport ke storage. Dengan menyimpan Bluetooth contact data ke external storage, apps lainnya dengan permission yang sama juga dapat membaca data ini pada Android sebelum versi10.

Sementara itu permission READ_EXTERNAL_STORAGE tidak diminta, dan tidak ditemukan pada source code.

Isu lainnya

Mereka melaporkan mengmukan “root” detection library RootBeer pada source code. Ketika app dijalankan pada hp yang di-root, app akan menampilkan pesan yang menyatakan perangkat tidak disupport. App kemudian tidak dapat dijalankan. Library deteksi root adalah metode yang banyak digunakan untuk mempersulit proses reverse engineering. Citizen lab kemudian melakukan modifikasi sistem dengan Frida dan skrip bypass deteksi root  untuk menjalankan app pada HP yang di root.

Mereka kemudian menampilkan analisa menggunakan Exodus, sebuah sistem analisis permission secara otomatis yang dikembangkan dari Exodus Privacy, sebuah organisasi non-profit Prancis. Hasilnya Apps Peduli lindungi mengandung permission yang berbahaya berikut:

  1. Access coarse location
  2. Access Fine Location
  3. Camera
  4. Read External Storage
  5. Write External Storage

WHO dan organisasi HAM lainnya telah mengeluarkan pedoman untuk tools tracing kontak COVID-19. Prinsip utamanya adalah minimalisasi data, yaitu tools harus mengumpulkan informasi “seminimal mungkin”. Aplikasi contact tracing seharusnya tidak mengumpulkan “personally identifiable data”. Protokol seperti s DP-3T dan Exposure Notification System dari Apple dan Google’s menunjukan bahwa contact tracing dapat dilakukan tanpa mengumpulkan informasi sensitiv seperti lokasi pengguna. Contohnya adalah aplikasi resmi Kanada (COVID Alert) dan Saudi Arabia (Tabaud), yang mengikuti sistem Exposure Notification dari Apple dan Google.

PeduliLindungi menurut citizen labs mengumpulkan data jauh lebih banyak daripada yang dibutuhkan untuk contact tracing. Permission ini digunakan pada fungsi tambahan selain contact tracing. Contohnya notifikasi zona merah COVID-19. Penggunaan kamera untuk mengambil gambar atau mengakses external storage untuk menyimpan dokumen tidak diperlukan.

Laporan lengkapnya bisa dilihat disini:

https://citizenlab.ca/2020/12/unmasked-ii-an-analysis-of-indonesia-and-the-philippines-government-launched-covid-19-apps/

tentang citizen labs:

https://citizenlab.ca/about/

laporan populer citizen labs lainnya tentang hacking team:

https://citizenlab.org/2012/10/backdoors-are-forever-hacking-team-and-the-targeting-of-dissent/

https://citizenlab.org/2014/06/backdoor-hacking-teams-tradecraft-android-implant/


Silahkan tuliskan tanggapan, kritik maupun saran