𝗞𝗲𝗮𝗺𝗮𝗻𝗮𝗻 𝗟𝗼𝗴𝗶𝗻 𝗕𝗲𝗿𝘀𝗮𝗺𝗮𝗮𝗻
Login tanpa batas dapat menyembunyikan celah logika bisnis yang serius.
Seorang pengguna login di laptop. Beberapa detik kemudian, akun yang sama login di browser yang berbeda. Kemudian di perangkat seluler. Lalu di klien API. Semuanya berjalan dengan sempurna.
Ini tampak tidak masalah karena banyak aplikasi mendukung banyak perangkat. Namun Anda harus bertanya: Haruskah setiap aplikasi mengizinkan sesi tanpa batas?
Di beberapa sistem, sesi ganda adalah sebuah fitur. Di sistem lain, itu adalah celah yang digunakan penyerang untuk tetap tersembunyi. Ini adalah kerentanan logika bisnis. Kodenya bekerja sesuai rancangan, tetapi rancangannya sendiri lemah.
Perbedaannya: • Bug tradisional mengeksploitasi kesalahan pengodean. • Bug logika bisnis mengeksploitasi keputusan desain.
Bayangkan layanan streaming film. Jika satu langganan memungkinkan sepuluh orang menonton secara bersamaan, sistem login-nya bekerja. Namun aturan bisnisnya gagal.
Hal ini berlaku untuk perbankan, panel admin, dan produk SaaS.
Cara mengujinya:
- Login melalui Browser A dan biarkan tetap aktif.
- Buka jendela incognito di Browser B.
- Login dengan kredensial yang sama.
- Periksa apakah sesi pertama masih berfungsi.
- Periksa apakah Anda dapat melakukan tindakan sensitif di keduanya.
Aplikasi dengan keamanan tinggi sering kali menerapkan aturan-aturan ini:
- Satu sesi aktif per akun.
- Mengeluarkan sesi lama saat login baru terjadi.
- Kontrol untuk mengelola perangkat.
- Peringatan untuk login baru.
Jika penyerang mencuri kredensial, mereka dapat tetap login selamanya jika Anda mengizinkan sesi tanpa batas. Mereka tetap aktif sementara pengguna asli juga tetap aktif. Tidak ada satu pun dari mereka yang menyadari adanya penyusup.
Konteks adalah segalanya. Aplikasi yang membutuhkan banyak sesi:
- Aplikasi pesan.
- Media sosial.
- Layanan email.
Aplikasi yang membutuhkan kontrol ketat:
- Sistem perbankan.
- Dasbor admin.
- Platform layanan kesehatan.
Cara memperbaikinya:
- Simpan ID sesi aktif di dalam database.
- Saat login baru terjadi, akhiri sesi yang lama.
- Biarkan pengguna melihat perangkat dan lokasi yang aktif.
- Tambahkan tombol "Keluar dari semua perangkat".
- Kirim peringatan email atau SMS untuk login baru.
Jangan hanya mencari bug kode seperti SQL injection. Carilah celah antara apa yang dilakukan aplikasi Anda dan apa yang dibutuhkan bisnis Anda.
Tinjau kebijakan sesi Anda hari ini. Risiko terbesar Anda mungkin bukan kode yang rusak. Bisa jadi itu adalah logika yang rusak.