Apa itu Pemalsuan Permintaan Lintas Situs (CSRF)?

Diterbitkan: 2023-04-12

Kerentanan Cross-Site Request Forgery (CSRF atau XSRF) jarang tinggi atau kritis dalam peringkat keparahannya. Namun, mereka masih dapat melakukan banyak kerusakan. Mereka telah menjadi kerentanan WordPress paling umum kedua dalam beberapa tahun terakhir setelah kerentanan Cross-Site Scripting (XSS). Anda akan memahami cara melindungi situs web Anda dengan lebih baik jika Anda mengetahui apa itu kerentanan CSRF dan bagaimana penyerang biasanya mengeksploitasinya.

Berkeliling dengan Kebijakan Asal-Sama

Kerentanan CSRF memungkinkan penyerang menghindari fitur browser standar yang disebut kebijakan asal yang sama. Semua browser web mengikuti aturan ini untuk mencegah jenis interferensi yang diaktifkan oleh CSRF. Biasanya saat Anda memuat halaman web, browser Anda hanya berinteraksi dengan satu domain atau subdomain, terlepas dari pengecualian yang diizinkan. Dan itu hanya akan menerima konten melalui satu protokol, HTTP atau HTTPS (tidak keduanya), tanpa memperingatkan Anda ada masalah. Jika orang jahat mengabaikan kebijakan asal yang sama, mereka mungkin juga mengelabui Anda agar mengeklik tautan yang melakukan tindakan yang tidak diinginkan dengan berinteraksi secara tidak terduga dengan situs lain.

Jika situs WordPress Anda telah dieksploitasi melalui kerentanan CSRF, Anda dan pengunjung Anda dapat mengalami phishing, clickjacking, dan lebih buruk lagi. Untungnya, pembaruan tepat waktu, autentikasi yang kuat, dan kunci sandi untuk pengalaman masuk tanpa kata sandi akan memperkuat situs WordPress Anda dan meniadakan banyak eksploit, termasuk upaya CSRF.

Secara visual, Anda memiliki sedikit atau tidak ada sama sekali petunjuk bahwa Anda berinteraksi dengan situs lain dengan cara yang tidak diinginkan. Clickjacking berfungsi seperti ini. Jika situs WordPress Anda telah dieksploitasi melalui kerentanan CSRF, Anda dan pengunjung Anda dapat mengalami phishing, clickjacking, dan lebih buruk lagi.

Dalam panduan ini, kami akan menggali detail pemalsuan permintaan lintas situs. Kami akan melihat contoh spesifik dari kerentanan CSRF sehingga Anda memahami cara kerjanya. Kemudian kami akan menunjukkan kepada Anda apa yang dapat Anda lakukan untuk mencegah kerentanan CSRF muncul di situs Anda. Kami juga akan menyarankan beberapa cara untuk meniadakan atau membatasi kerusakan yang dapat dilakukan oleh eksploitasi CSRF yang berhasil dengan memperkuat situs Anda terhadap serangan ini dan jenis serangan lainnya.

Mari lihat.

Bagaimana Serangan Cross-Site Request Forgery (CSRF) Mempengaruhi Situs WordPress Anda?

Saat serangan CSRF berhasil, korbannya secara tidak sengaja mengotorisasi tindakan berbahaya, seperti memperbarui kredensial login mereka. Mereka mungkin tertipu untuk mengizinkan penyerang mengambil alih akun pengguna mereka. Lebih buruk lagi, korban eksploitasi CSRF mungkin membiarkan penyerang melakukan transfer keuangan atas nama mereka.

Jika plugin di situs WordPress Anda mengandung kerentanan CSRF, penyerang mungkin dapat membajak beberapa akun pengguna. Itu akan menjadi salah satu skenario terburuk. Jika akun yang dicuri memiliki peran administratif di WordPress atau pengguna menggunakan kembali kata sandinya di situs lain, kerusakannya bisa sangat parah.

Pemalsuan Permintaan Lintas Situs

Bagaimana Cara Kerja Serangan CSRF?

Tiga kondisi berbeda harus ada bagi seorang peretas untuk membuat serangan CSRF berhasil. Jika Anda memahaminya secara umum, Anda akan memiliki pemahaman yang baik tentang beberapa dasar keamanan web.

1. Penanganan Sesi Berbasis Cookie

Seperti aplikasi tanpa kewarganegaraan lainnya, WordPress mengandalkan cookie sesi untuk mengidentifikasi pengguna. Di bawah kondisi keamanan yang rendah atau disusupi, penyerang mungkin dapat membuat beberapa cookie sesi palsu atau memanipulasi pengguna yang masuk untuk melakukan beberapa tindakan yang tidak diinginkan. WordPress akan menerima permintaan yang dipalsukan dan dimanipulasi yang merupakan atau tampaknya berasal dari pengguna yang masuk.

Sementara eksploitasi CSRF sering menargetkan penanganan sesi berbasis cookie, itu bukan satu-satunya target mereka. Serangan CSRF bisa efektif terhadap aplikasi apa pun yang secara otomatis menambahkan kredensial pengguna ke permintaan. Otentikasi berbasis sertifikat dan otentikasi Dasar HTTP juga rentan terhadap kerentanan CSRF karena alasan ini.

2. Tindakan yang Relevan Dapat Ditargetkan

Harus ada beberapa tindakan dalam aplikasi yang ditargetkan yang dapat ditipu oleh korban. Ini bisa menjadi tindakan istimewa seperti mengubah izin pengguna. Ini bisa terkait dengan data khusus pengguna, seperti memperbarui kata sandi pengguna. Ini adalah tindakan umum di semua aplikasi web, termasuk WordPress. Mereka memiliki nilai sebagai target bagi peretas karena mereka mungkin membuka jalan bagi mereka untuk mencuri akun pengguna dan menggali lebih dalam cara untuk terlibat dalam pencurian, penipuan, atau aktivitas jahat lainnya.

3. Tidak Ada Parameter Permintaan yang Tidak Dapat Diprediksi

Permintaan yang melakukan tindakan yang ditargetkan harus diketahui atau diprediksi. Jika permintaan yang ditargetkan tidak perlu berisi parameter yang nilainya tidak dapat ditentukan atau ditebak oleh penyerang, permintaan tersebut lebih rentan terhadap manipulasi.

Misalnya, jika permintaan perubahan kata sandi yang valid harus menyertakan kata sandi yang ada, itu aman — selama penyerang tidak mengetahui kata sandinya. Token CSRF dan cookie SameSite menambah hambatan lebih lanjut bagi penyerang saat pengembang menggunakannya untuk mengamankan kode mereka. Namun terkadang pengembang tidak menerapkan metode keamanan ini dengan benar atau tidak sama sekali. (Inilah mengapa autentikasi pengguna tanpa kata sandi yang kuat sangat berharga.)

Memanfaatkan Kerentanan CSRF untuk Mengubah Email Akun Pengguna — Sebuah Contoh

Inilah contoh yang lebih mendalam. Ini tidak akan benar-benar berfungsi, tetapi ini menggambarkan konsep utama yang dimainkan untuk eksploitasi CSRF yang efektif.

Pertimbangkan permintaan perubahan email. Saat pengguna melakukan tindakan ini, mereka membuat permintaan HTTP yang terlihat seperti ini ke server web yang menerimanya:

 POST /test HTTP/1.1 Host: yourwebsite.com Content-Type: application/x-www-form-urlencoded Content-Length: 60 Cookie: session=yvthgjrudhgeQkAPzeQ5gHgTvlyxHfsAfE;[email protected]

Mengapa Ini Bekerja

Ini memenuhi persyaratan yang diperlukan untuk CSRF jika/karena:

  • Situs/aplikasi yang ditargetkan menggunakan cookie sesi untuk mengidentifikasi pengguna mana yang mengeluarkan permintaan, dan tidak ada token atau mekanisme lain untuk melacak sesi pengguna. Inilah mengapa pengembang harus menggunakan token CSRF dan/atau cookie SameSite.
  • Mengubah alamat email pengguna adalah tindakan yang relevan untuk kepentingan penyerang. Pastilah itu! Jika Anda dapat mengubah alamat email pengguna menjadi yang Anda kontrol, Anda dapat mengambil kendali penuh atas akun mereka.
  • Penyerang mengetahui parameter permintaan yang mereka perlukan untuk mengubah alamat email pengguna dan dapat menghasilkan nilai yang valid untuk mereka. Parameter ini bukan rahasia, dan tidak sulit untuk menentukan alamat email apa yang digunakan banyak orang untuk akun online mereka. Cookie sesi lebih rumit.

Bagaimana Penyerang Dapat Mencuri Cookie Sesi

Rintangan utama penyerang adalah menentukan nilai aktual untuk parameter yang akan mengakses akun pengguna tertentu. Mereka mungkin melakukannya dengan membuat halaman web yang ditujukan untuk pengguna situs yang ditargetkan. Situs penipuan ini mungkin memiliki tautan atau tombol yang tampaknya memiliki tujuan yang sah, seperti meminta hadiah gratis. Pada kenyataannya, jika Anda mengklik tautan atau tombol tersebut, satu-satunya orang yang mendapatkan barang manis secara gratis adalah si penyerang.

Ketika Anda mengklik tautan penipuan ini, mereka akan membuat permintaan perubahan alamat ke situs yang ditargetkan dan rentan terhadap CSRF. Jika Anda masuk ke situs itu, permintaan akan valid. Akun Anda telah dicuri — Anda menyerahkan kunci Anda.

Pengguna situs WordPress yang tetap masuk ke dalamnya memiliki cookie sesi aktif di browser mereka yang tetap ada meskipun mereka berada di situs yang berbeda. Browser mereka akan secara otomatis menyertakan cookie sesi tersebut dalam permintaan palsu. WordPress mungkin melihat ini sebagai permintaan perubahan alamat yang benar-benar valid — meskipun itu berasal dari situs lain dan pengguna tidak tahu mereka membuatnya.

Dengan asumsi tidak ada tindakan keamanan lain, seperti atribut cookie SameSite, situs target yang rentan akan memproses permintaan yang dipalsukan sama seperti permintaan yang valid. Jika situs web yang ditargetkan tidak menerapkan langkah konfirmasi perubahan alamat, atau jika penyerang memiliki jalan lain, penyerang akan berhasil mengubah alamat pengguna ke alamat yang dipilih penyerang.

Bagaimana Serangan CSRF Disampaikan ke Situs Web Rentan

Mekanisme pengiriman untuk serangan CSRF dan serangan Reflected Cross-Site Scripting (Reflected XSS) serupa.

Dalam kebanyakan kasus, penyerang akan menempatkan kode berbahaya mereka di situs penipuan yang mereka kendalikan. Ini bisa jadi situs sah yang telah mereka retas, itulah sebabnya Google menyimpan daftar situs yang menipu. Semua browser akan memperingatkan penggunanya jika Anda ada di daftar ini! Inilah sebabnya Keamanan iThemes memeriksa setiap hari untuk memastikan situs Anda tidak menjadi alat peretas.

Membuat calon korban mengunjungi situs web yang menipu hanyalah masalah media sosial dasar dan pemasaran email. Terkadang kode berbahaya ditempatkan begitu saja di situs populer di area aktif.

Penyerang bahkan mungkin tidak memerlukan situs web untuk memikat korbannya. Beberapa eksploitasi CSRF sederhana menggunakan metode GET. Inilah yang dilakukan browser Anda saat Anda mengeklik tautan atau memasukkan URL di bilah alamat. Itu membuat permintaan GET menggunakan URL di tautan atau yang Anda berikan. Terkadang serangan CSRF dapat dieksekusi sepenuhnya dengan satu permintaan GET ke situs web yang rentan. Dalam situasi seperti ini, penyerang mungkin tidak perlu menggunakan situs web yang menipu. Mereka dapat dengan mudah memberi makan korbannya URL jahat secara langsung.

Melindungi Situs Anda dari Serangan Cross-Site Request Forgery (CSRF).

Kerentanan CSRF sering muncul di plugin dan terkadang tema. Saat peretas menargetkan mereka, tidak sulit untuk melindungi diri sendiri. Gunakan plugin dan tema berkualitas yang Anda percayai, hapus yang tidak Anda gunakan, dan perbarui semua perangkat lunak Anda . Anda juga harus menerapkan kebijakan keamanan pengguna yang dipertimbangkan dengan baik dan mempertimbangkan untuk tidak menggunakan kata sandi. Jika kerentanan CSRF (atau lainnya) dieksploitasi di situs Anda untuk mendapatkan akses ke akun pengguna, itu tidak akan banyak membantu penyerang jika Anda menggunakan kunci sandi. Tidak ada yang bisa mencuri apa yang tidak ada.

Selain mengelola pembaruan dan memperingatkan Anda tentang plugin dan tema yang rentan, iThemes Security Pro mempermudah pengaturan dan pengelolaan aturan keamanan berbasis pengguna dan peran. Delegasikan hak istimewa berdasarkan prinsip hak istimewa terkecil. Amankan login, pemulihan kata sandi, dan formulir kontak Anda dengan CAPTCHA. Jangan berikan kemampuan yang lebih besar kepada pengguna Anda daripada yang mereka butuhkan. Wajibkan pengguna dengan hak istimewa yang lebih tinggi untuk menggunakan metode autentikasi yang lebih kuat. Dan pastinya mengadopsi cara sederhana yang paling nyaman dan mematikan untuk masuk ke WordPress tanpa kata sandi: Kunci sandi!