Broken Authentication and Session Management
Penulis: Yoel Frans Alfredo Situmeang – Khoirul Iman Pranadi – Yohanes Christianto
Pembimbing: Nico Surantha
Beberapa orang yang berpengalaman dengan IT Security mungkin sudah mengenal dengan beberapa hal yang disebut sebagai resiko keamanan pada aplikasi. Berdasarkan yang dipaparkan dalam penjelasan suatu website yang mengulas mengenai keamanan dalam teknologi informasi, OWASP, dijelaskan terdapat 10 jenis resiko keamanan aplikasi web yang paling kritis. Salah satunya adalah Broken Authentication dan Session Management.
Broken Authentication dan Session Management merupakan salah satu dari beberapa serangan yang dapat dilakukan oleh seseorang yang berniat jahat, biasa disebut dengan istilah hijackers, dengan memanfaatkan beberapa kelemahan pada fungsi authentification dan session management. Seringkali fungsi dari aplikasi yang berkaitan dengan authentification dan session management tidak diimplementasikan dengan tepat dan sempurna, dalam hal ini dapat menyebabkan aplikasi rentan untuk diserang dengan memanfaatkan passwords, session token, dll. untuk mengeksploitasi akun pengguna lainnya.
Broken Authentication dan Session Management ini memiliki beberapa pola serangan yang biasa digunakan dengan memanfaatkan kelemahan dari fungsi authentification dan session management, di antaranya adalah koneksi yang tidak dienkripsi dengan baik, username dan password yang mudah ditebak oleh pengguna lainnya, session yang tidak dihentikan ketika user melakukan logout dari aplikasi ataupun menutup browser, password dari user yang tidak disimpan dengan baik menggunakan enkripsi, serta session ID yang ditampilkan di URL web.
Ilustrasi skema serangan dengan memanfaatkan session
Meskipun memiliki beberapa resiko keamanan bukan berarti Broken Authentication dan Session Management ini tidak dapat dihindari. Beberapa langkah agar terhindar dari serangan seperti ini dapat dilakukan dengan meningkatkan keamanan password dengan memberikan aturan tingkat keamanan seperti diperlukannya kombinasi dari alphabet, numeric dan non-alphanumeric character dalam password user, memberikan batasan waktu kepada user untuk mengganti password secara rutin dan berkala, misalnya mengganti password secara rutin tiap bulannya, melakukan enkripsi password yang digunakan untuk melakukan login ke dalam aplikasi, membatasi upaya login yang dilakukan user dan menyimpan jumlah upaya login yang gagal serta menghalangi user untuk melakukan upaya login apabila jumlah login yang gagal telah melewati batasan yang telah ditentukan, memastikan seluruh session yang digunakan oleh user diproteksi dengan SSL, dengan demikian session ID tidak dapat diretas sembarangan, desain dari sistem aplikasi tidak boleh memberikan akses kepada user untuk mendapatkan informasi seluruh user lainnya, authentication dan data session tidak boleh dikirimkan sebagai bagian dari method GET, melainkan POST untuk mencegah hijack yang dilakukan oleh peretas karena dengan menggunakan GET maka parameter disimpan di server logs dan browser history, memberikan informasi kepada user kapan waktu terakhir user sukses melakukan login dan berapa kali percobaan login yang gagal dilakukan, dan yang terakhir dengan cara menon-aktifkan fitur auto-complete pada form login.
Video di bawah ini menunjukkan contoh serangan yang mengakibatkan broken authentication and session management