Medanese IT Geek, movie lover and (mostly) law-abiding citizen. Dreaming of cheap and easy access to ICT, healthcare and education in Indonesia.

Search:


25/02/2008

Cross Site Request Forgery (CSRF)

Category: Indonesian,Security,Web — kamaruddin @ 1:35 pm

Contoh kelemahan CSRF di Google Screenshot: “PoC (Proof of Concept) kelemahan CSRF di Gmail awal 2007. Dengan multi-tab browsing Gmail dan situs “berbahaya” (yang mendemonstasikan PoC ini) daftar kontak e-mail saya terlihat semuanya di situs tersebut.”

Jangan remehkan serangan CSRF! Serangan ini lebih berbahaya dari XSS dan sulit untuk membuktikan siapa yang bermasalah, pengguna atau situs web.

CSRF (baca: sea surf) adalah serangan/exploitasi terhadap situs web dengan memanfaatkan pengguna yang sudah terautentikasi. CSRF mengexploitasi tingkat kepercayaan situs web terhadap pengguna dan menganggap setiap perintah adalah sah untuk dijalankan. Karena sifat inilah sangat sulit untuk menentukan sebuah aksi adalah murni dari pengguna atau karena kelemahan CSRF di situs.

Perbedaan XSS dan CSRF
Banyak yang salah dengan menyamakan XSS (Cross Site Scripting) dengan CSRF. XSS memerlukan penyerang untuk menginjeksi perintah ke dalam situs web agar dijalankan langsung ketika pengguna mengakses melalui web browsernya. Inti perbedaannya, XSS mengexploitasi sisi client (melalui web browser) sedangkan CSRF mengexploitasi sisi server (situs).

Sebagai contoh anda memasuki sebuah forum diskusi dan login untuk mendapatkan hak pengguna. Ketika anda sedang membaca thread tertentu terdapat kode perintah berikut di dalam post (hanya contoh)

<IMG SRC=http://forum.tld/index.php?action=newthread?subject=Kata2kasar&body=Kalimatjorok&submit=1>

Browser menerjemahkan tag <IMG> dan menjalankan perintah tersebut tetapi akibatnya setiap user (termasuk anda) yang aktif akan memposting thread baru dengan kata kasar dan kalimat jorok. Situs menganggap andalah yang memberikan perintah tersebut untuk dijalankan (karena sudah terautentikasi sebagai pengguna). Biasanya kode perintah tersebut akan disamarkan di dalam tag <IMG>, <IFRAME> atau <SCRIPT> agar otomatis dijalankan tanpa perlu interaksi pengguna untuk mengklik link. Selain memanfaatkan session aktif, pengguna yang terbiasa dengan fitur “Remember Me” secara tidak sadar menyimpan autentikasinya (dalam bentuk cookie) juga sangat rentan terhadap bahaya ini.

Pemanfaatan dan Kemungkinan Serangan
Pemanfaatan CSRF bervariasi tergantung tingkat pengetahuan si penyerang akan situs rentan dan kehendaknya. Beberapa kemungkinannya sebagai berikut:

1. Mengganti password e-mail korban, informasi akun atau melakukan logout
2. Korban “membeli” barang dari situs belanja kesayangannya
3. Korban melakukan transaksi keuangan tanpa disadari
4. Korban melakukan voting terhadap polling situs web tertentu dengan pilihan yang sudah diatur si penyerang
5. korban melakukan posting terus menerus di forum atau situs web interaktif (DoS)

Kemungkinan serangan juga tidak hanya memanfaatkan web browser tetapi bisa juga melalui dokumen Word, animasi Flash, RSS/Atom, aplikasi yang berkemampuan XML atau media lain yang berkemampuan scripting dan “internet-ready”. Sebagai contoh ketika korban memeriksa e-mail dengan browser dan secara bersamaan browsing situs lain dengan animasi Flash (yang disisipi perintah menghapus daftar kontak) di dalamnya. Korban secara tidak sadar saat itu juga telah menghapus semua daftar kontak e-mailnya.

Pencegahan di pihak server
Tidak ada solusi efektif yang sepenuhnya mencegah CSRF. Untuk meminimalkan bisa dengan cara memberlakukan pemeriksaan HTTP referer, menetapkan waktu session yang singkat (misalnya 8 menit), atau memaksa regenerate session (login kembali/input CAPTCHA) untuk aksi penting di situs seperti beli barang atau ganti password.

Memeriksa HTTP referer bisa mencegah CSRF melalui e-mail namun tidak bila pengguna aktif dengan web browsernya. HTTP referer juga bisa dipalsukan sehingga cara ini hanya memperlambat.

Cara lain yang sederhana tapi cukup efektif adalah memberlakukan token unique per session yang disimpan di database. Misalnya:

http://belanja.tld/formbelanja.php?token=aX1ir32mnP

Permasalahannya, penyimpanan secret token ini akan memberatkan server terutama saat banyak orang mengakses secara bersamaan. Namun apabila disimpan dalam bentuk cookie di web browser maka penyerang akan mencoba memanfaatkan kelemahan XSS untuk mencurinya. Situs web yang rentan XSS akan melahirkan ancaman CSRF. Oleh karena itu amankan situs dari kelemahan XSS terlebih dahulu. Serangan CSRF terhadap situs jaringan sosial MySpace juga memanfaatkan kelemahan XSS yang ada, di mana setiap pengguna otomatis “add friend” menjadi teman dari si penyerang yang untungnya tidak bermaksud jahat. Bayangkan bila hal ini dimanfaatkan untuk kampanye politik untuk menarik sentimen masyarakat umum?

Pencegahan di pihak pengguna
Jangan mengandalkan fitur “Remember Me” dalam memakai layanan di internet. Jangan menampilkan e-mail dalam format HTML bila anda menggunakan e-mail client. Jangan menyimpan password dalam web browser, apapun alasannya! Selalu Logout dari situs web setelah selesai menggunakan layanannya dan hapus semua jejak (History, saved password, cookies dan authenticated sessions) di browser. Bukalah 1 tab browser dalam satu waktu bila melakukan transaksi keuangan atau layanan penting lainnya dan jangan tergoda untuk multi-tab browsing situs lain bersamaan. Ingatlah bahwa “Keamanan selalu berbanding terbalik dengan kenyamanan”.


Referensi:
1. http://en.wikipedia.org/wiki/Cross-site_request_forgery
2. www.cgisecurity.com
3. http://www.0×000000.com/


Tags:

• • •

1 Comment »

  1. Using Google Chrome Google Chrome 41.0.2272.89 on Windows Windows XP

    memang betul salah satu penanggulangannya adalah dengan menerapkan token, dan token sendiri biasanya kombinasi dari idsession , namesession , timestamp dll klo perlu diencrypt biar mantap ahaha, biasanya penggunaan token dipakai oleh bank (jelas butuh pengamanan tinggi apalagi klo dah urusan duit :D )

    tapi untuk implementasi palink mudah itu untuk web web biasa yaitu menggunakan captcha (untuk sekarang)… dengan begitu user akan aware karena ada aktivitas illegal ketika dia mengklik sebuah link yg ternyata adalah serangan CSRF.

    artikel yang bagus …..

    Comment by mahendra mustika wijaya — 20/03/2015 @ 11:29 am

Comments RSSTrackBack URI

Leave a comment

Using modified "Sitepoint-like" Theme. kamaruddin [-at-] gmail *dot* com