𝗖𝗲𝗹𝗮𝗺𝗮𝘁𝗮𝗻 𝗟𝗼𝗴 𝗠𝗮𝘀𝘂𝗸 𝗦𝗲𝗿𝗲𝗻𝘁𝗮𝗸
Log masuk tanpa had boleh menyembunyikan kelemahan logik perniagaan yang serius.
Seorang pengguna log masuk menggunakan komputer riba. Beberapa saat kemudian, akaun yang sama log masuk pada pelayar yang berbeza. Kemudian peranti mudah alih. Kemudian klien API. Semuanya berfungsi dengan sempurna.
Ini kelihatan tidak bermasalah kerana banyak aplikasi menyokong pelbagai peranti. Tetapi anda mesti bertanya: Adakah setiap aplikasi patut membenarkan sesi tanpa had?
Dalam sesetengah sistem, pelbagai sesi adalah satu ciri. Dalam sistem lain, ia adalah kelemahan yang digunakan oleh penyerang untuk kekal tersembunyi. Ini adalah kerentanan logik perniagaan. Kod berfungsi seperti yang direka, tetapi reka bentuk itu sendiri adalah lemah.
Perbezaannya: • Pepijat tradisional mengeksploitasi kesilapan pengekodan. • Pepijat logik perniagaan mengeksploitasi keputusan reka bentuk.
Fikirkan tentang perkhidmatan penstriman filem. Jika satu langganan membenarkan sepuluh orang menonton pada satu masa, sistem log masuk berfungsi. Peraturan perniagaan pula gagal.
Ini terpakai kepada perbankan, panel admin, dan produk SaaS.
Cara untuk mengujinya:
- Log masuk melalui Pelayar A dan biarkannya aktif.
- Buka tetingkap inkognito dalam Pelayar B.
- Log masuk dengan kredensial yang sama.
- Semak jika sesi pertama masih berfungsi.
- Semak jika anda boleh melakukan tindakan sensitif pada kedua-duanya.
Aplikasi keselamatan tinggi sering menguatkuasakan peraturan ini:
- Satu sesi aktif bagi setiap akaun.
- Log keluar sesi lama apabila log masuk baharu berlaku.
- Kawalan untuk mengurus peranti.
- Amaran untuk log masuk baharu.
Jika penyerang mencuri kredensial, mereka boleh kekal log masuk selama-lamanya jika anda membenarkan sesi tanpa had. Mereka kekal aktif sementara pengguna sebenar juga kekal aktif. Tiada sesiapa yang menyedari kehadiran penceroboh tersebut.
Konteks adalah segala-galanya. Aplikasi yang memerlukan banyak sesi:
- Aplikasi mesej.
- Media sosial.
- Perkhidmatan e-mel.
Aplikasi yang memerlukan kawalan ketat:
- Sistem perbankan.
- Papan pemuka admin.
- Platform penjagaan kesihatan.
Cara untuk memperbaikinya:
- Simpan ID sesi aktif dalam pangkalan data.
- Apabila log masuk baharu berlaku, tamatkan sesi lama.
- Benarkan pengguna melihat peranti dan lokasi yang aktif.
- Tambah butang "Log keluar daripada semua peranti".
- Hantar amaran e-mel atau SMS untuk log masuk baharu.
Jangan hanya mencari pepijat kod seperti SQL injection. Cari jurang antara apa yang aplikasi anda lakukan dengan apa yang perniagaan anda perlukan.
Semak semula polisi sesi anda hari ini. Risiko terbesar anda mungkin bukan kod yang rosak. Ia mungkin logik yang rosak.