Cross-Site Request Forgery (CSRF) adalah jenis kerentanan keamanan yang mengeksploitasi kepercayaan yang dimiliki aplikasi web pada peramban pengguna. Sering disebut sebagai serangan “session riding”, CSRF memungkinkan aktor jahat untuk melakukan tindakan yang tidak sah atas nama pengguna yang diautentikasi tanpa persetujuan atau sepengetahuan mereka. Hal ini dapat menyebabkan konsekuensi yang parah, seperti transfer dana yang tidak sah, pemaparan data, atau manipulasi akun.
Bagaimana CSRF Bekerja
Serangan CSRF mengeksploitasi fakta bahwa ketika peramban web mengautentikasi sesi, mereka mengingat sesi. Saat masuk ke sebuah situs web, browser sering kali menyimpan cookie sesi yang dikirim dengan setiap permintaan untuk situs web tertentu. CSRF mengeksploitasi perilaku ini dengan cara membuat korban mengirim permintaan ke aplikasi target tanpa disengaja.
![]() |
sumber: cybersecuritynews.com |
Contoh Skenario
- Seorang pengguna membuka aplikasi perbankan mereka dan menjaga agar sesi tetap hidup.
- Penyerang membuat tautan atau formulir yang menyebabkan tindakan yang tidak diinginkan (seperti mentransfer uang) terjadi.
- Penyerang menyuntikkan permintaan jahat ini ke dalam email, postingan media sosial, atau situs web lain.
- Ketika pengguna mengklik tautan tersebut (atau menavigasi ke halaman tersebut), browser mereka mengirimkan permintaan berbahaya ke aplikasi perbankan termasuk cookie sesi.
- Aplikasi perbankan memproses permintaan tersebut seolah-olah berasal dari pengguna, dan menyelesaikan transaksi yang tidak sah.
Serangan ini berhasil karena server tidak dapat membedakan antara permintaan yang sah dan yang dipalsukan ketika cookie sesi valid.
Target Umum CSRF
Aplikasi web yang melakukan operasi sensitif sangat rentan terhadap serangan CSRF. Target umum meliputi:
- Sistem perbankan online.
- Platform perdagangan elektronik.
- Situs web media sosial.
- Panel administratif berbasis web.
Dengan kata lain, aplikasi apa pun yang menggunakan cookie untuk manajemen sesi rentan terhadap CSRF jika tindakan pencegahan tertentu tidak dilakukan.
Mencegah Serangan CSRF
Memitigasi CSRF membutuhkan penerapan langkah-langkah untuk memverifikasi keabsahan permintaan pengguna. Berikut adalah beberapa strategi yang efektif:
1. Token CSRF
Setiap sesi pengguna memiliki nilai acak terpisah yang dihasilkan, yang akan dikirim bersama dengan permintaan atau elemen formulir. Server memverifikasi token sebelum menangani permintaan. Permintaan kemudian ditolak jika token tidak ada atau salah.
Langkah-langkah Implementasi:
- Batasi token hanya untuk sesi pengguna saat ini.
- Berikan token sebagai bidang tersembunyi di setiap formulir atau permintaan
- Validasi token sebelum memproses permintaan.
2. Cookie Situs yang Sama
Atribut cookie SameSite membatasi bagaimana cookie disertakan dalam permintaan lintas situs. Menggunakan SameSite = Lax atau SameSite = Tight akan membatasi cookie agar hanya dikirim bersama dengan permintaan yang dimulai dari situs yang sama.
Keterbatasan: Beberapa fungsionalitas, termasuk integrasi pihak ketiga, mungkin memerlukan SameSite = Tidak Ada. Hal ini dapat menyebabkan eksposur yang lebih besar ke CSRF.
3. Pemeriksaan Autentikasi Pengguna
Untuk tindakan sensitif, aplikasi dapat meminta pengguna untuk mengautentikasi ulang atau memberikan konfirmasi tambahan, seperti memasukkan kata sandi atau melengkapi CAPTCHA.
4. Validasi Header Perujuk
Sebagai contoh, server dapat menggunakan header HTTP Referer untuk memeriksa dari mana permintaan datang. Namun, pendekatan ini tidak dapat diandalkan karena beberapa peramban dan jaringan memblokir atau memodifikasi header Referer untuk alasan privasi.
5. Kebijakan Keamanan Konten (CSP)
CSP yang kuat dapat membatasi jenis sumber daya yang dapat dimuat oleh sebuah halaman, sehingga mengurangi kemungkinan konten jahat dieksekusi. Meskipun CSP itu sendiri tidak secara langsung melindungi dari CSRF, CSP bekerja sama dengan langkah-langkah perlindungan lainnya dengan mengurangi kemungkinan skrip disuntikkan dengan konten berbahaya.
Insiden CSRF di Dunia Nyata
Celah CSRF telah digunakan dalam serangan-serangan besar:
- Pada tahun 2008, kerentanan Netflix memungkinkan penyerang untuk mengubah pengaturan akun pengguna yang masuk dengan mengeklik tautan berbahaya.
- Situs web seperti Twitter dan Facebook juga telah menjadi korban serangan CSRF yang memposting konten yang tidak sah atas nama pengguna.
Kesimpulan
Pemalsuan Permintaan Lintas Situs adalah kerentanan aplikasi web yang meresap dan berpotensi menghancurkan. Eksploitasinya bergantung pada kepercayaan implisit antara peramban pengguna dan server. Dengan mengimplementasikan token CSRF, menggunakan cookie SameSite, dan menggunakan langkah-langkah verifikasi tambahan, pengembang dapat secara efektif melindungi aplikasi dari serangan ini. Karena keamanan web terus berkembang, tetap waspada dan mengadopsi praktik terbaik sangat penting untuk melindungi pengguna dan menjaga kepercayaan pada platform online.
Kembali ke>>>> Kerentanan Web Umum: Gambaran Umum