Jika Anda belum membaca, sebaiknya baca dulu pengantar seri ini: Mencari dan melaporkan bug security. Perlu dicatat: bug ini sudah dilaporkan (6 bulan yang lalu), sudah diperbaiki. Posting ini hanya untuk pelajaran bersama.
Sejujurnya: Sebelumnya saya belum pernah denger aplikasi Zohib Messenger (ZM) ini. Ternyata setelah dicari-cari, aplikasi ini pernah jadi aplikasi resmi Kominfo untuk para pemudik.
Saya ringkaskan dulu bug-bug yang saya temui sebelum masuk ke bagian cerita detail:
- Username/password kita disimpan di database dalam bentuk plaintext
- SSL dengan self signed certificate, dan certificatenya tidak dicek
- Unauthenticated/sessionless API access
Karena bug terakhir ini cukup umum, saya jelaskan lebih lanjut untuk yang awam: ketika kita login, server biasanya akan mengirimkan token atau session id random, sebagai bukti siapa diri kita, dan bahwa kita diberi akses oleh server. Jadi setiap request berikutnya, kita perlu mengirimkan lagi session id atau token ini. Analoginya begini: kalau saya mau masuk komplek tertentu di sini, saya perlu memberikan ID saya, lalu saya akan diberi kartu pengunjung. Kartu ini dikenali oleh semua satpam, jadi mereka tahu saya ini pengunjung, dan satpam juga bisa membantu atau membatasi (misalnya: “mas, maaf gak boleh parkir di sini, nanti Bu Dewi nggak bisa lewat”).