Cross-Site Request Forgery

Penulis: Benny Bangun, Kemal Anshari Elmizan, Yuni Muharomah

Pembimbing: Nico Surantha, PhD

Cross-site request forgery, dikenal juga dengan one click attack atau session riding disingkat dengan CSRF atau XSRF, merupakan bentuk eksploitasi website yang dieksekusi atas wewenang korban, tanpa dikehendakinya. CSRF menipu web site melalui request dari user yang dipercaya. Serangan bekerja melalui link atau script pada halaman site yang diakses user. Link tersebut dapat berupa gambar/image yang terhubung ke website tertentu. Jika website menyimpan informasi otentikasi dalam sebuah cookie yang belum expire, maka dengan melakukan klik ke link tersebut akan menyebabkan website diakses menggunakan cookie user yang melakukan klik. Dengan kata lain, penyerang menipu browser user untuk mengirimkan HTTP requests ke website target.

Figure 1. Cara Kerja CSRF

Dari ilustrasi diatas dapat dijelaskan bagaimana CSRF bekerja. Pertama, user akan login ke sebuah website applikasi bank. Setelah user login maka langkah kedua yaitu, website tersebut memberikan response dengan authentication kemudian sukses masuk ke website. Pada langkah ketiga, penyerang akan mengirimkan link atau halaman berisi request tersembunyi pada user yang akan dieksekusi. Sebelumnya penyerang telah mempelajari kelemahan website tersebut untuk dapat dimanfaatkan dengan teknik CSRF. Website yang menyimpan cookies dan mengizinkan user untuk datang login kapanpun tanpa harus mengetikkan kembali username dan password akan menarik perhatian penyerang tersebut untuk bebas meeksplorasi fitur yang terdapat dalam website tersebut setelah user login. Pada langkah keempat, link yang telah dikirimkan ke email user akan request ke bank tersebut untuk transfer sejumlah uang dari account bank user ke akun bank penyerang. Pada langkah kelima, website bank akan otomatis melakukan request tersebut tanpa harus validasi transaksi tersebut karena user sedang login dan request datang user tersebut.

Untuk meminimalkan dampak dari celah keamanan dari CSRF user bisa melakukan beberapa pencegahan dibawah ini :

  • Website beralih dari metoda persistent authentication (menggunakan otentikasi dengan cookie atau HTTP) ke metoda transient authentication (menggunakan hidden field oleh setiap form).
  • Menyertakan token user-specific rahasia yang ditambahkan ke cookie.
  • Meskipun cross-site request forgery pada dasarnya adalah masalah dengan aplikasi web, user dapat membantu melindungi accountnya dengan logoff site sebelum mengunjungi yang lain atau membersihkan cookie browsernya pada akhir session browser.
  • Menggunakan SSL (Secure Socket Layer) and TLS (Transport Layer Security) encryption ketika berurusan dengan data yang sensitive.
  • Setting dan restrict security terkait header HTTP, diantaranya Mengatur Content-Security-Policy, Menonaktifkan X-Powered-By, Mengatur Strict-Transport-Security, Mengatur X-XSS-Protection.