Dampak
Penyerang yang berhasil mengeksploitasi kerentanan Cross-Site Scripting (XSS) dapat menyamar sebagai pengguna korban, melakukan tindakan apa pun yang diizinkan dilakukan oleh pengguna, dan mengakses data pengguna mana pun [S1]. Ini termasuk mencuri cookie sesi untuk membajak akun, menangkap kredensial login melalui formulir palsu, atau melakukan perusakan virtual [S1][S2]. Jika korban memiliki hak administratif, penyerang dapat memperoleh kendali penuh atas aplikasi dan datanya [S1].
Akar Penyebab
XSS terjadi ketika aplikasi menerima input yang dapat dikontrol pengguna dan memasukkannya ke dalam halaman web tanpa netralisasi atau pengkodean [S2] yang tepat. Hal ini memungkinkan masukan ditafsirkan sebagai konten aktif (JavaScript) oleh browser korban, menghindari Kebijakan Asal yang Sama yang dirancang untuk mengisolasi situs web satu sama lain [S1][S2].
Jenis Kerentanan
- Tercermin XSS: Skrip berbahaya tercermin dari aplikasi web ke browser korban, biasanya melalui parameter URL [S1].
- XSS yang disimpan: Skrip disimpan secara permanen di server (misalnya, di database atau bagian komentar) dan disajikan kepada pengguna di kemudian hari [S1][S2].
- XSS berbasis DOM: Kerentanan sepenuhnya ada pada kode sisi klien yang memproses data dari sumber tidak tepercaya dengan cara yang tidak aman, seperti menulis ke
innerHTML[S1].
Perbaikan Beton
- Enkode Data pada Output: Ubah data yang dapat dikontrol pengguna menjadi bentuk yang aman sebelum merendernya. Gunakan pengkodean entitas HTML untuk isi HTML, dan pengkodean JavaScript atau CSS yang sesuai untuk konteks spesifik tersebut [S1][S2].
- Filter Masukan Saat Kedatangan: Terapkan daftar yang diizinkan secara ketat untuk format masukan yang diharapkan dan tolak apa pun yang tidak sesuai dengan [S1][S2].
- Gunakan Header Keamanan: Setel tanda
HttpOnlypada cookie sesi untuk mencegah akses melalui JavaScript [S2]. GunakanContent-TypedanX-Content-Type-Options: nosniffuntuk memastikan browser tidak salah menafsirkan respons sebagai kode yang dapat dieksekusi [S1]. - Kebijakan Keamanan Konten (CSP): Terapkan CSP yang kuat untuk membatasi sumber dari mana skrip dapat dimuat dan dijalankan, memberikan lapisan pertahanan mendalam [S1][S2].
Bagaimana FixVibe mengujinya
FixVibe dapat mendeteksi XSS melalui pendekatan berlapis-lapis berdasarkan metodologi pemindaian yang sudah ada [S1]:
- Pemindaian Pasif: Mengidentifikasi header keamanan yang hilang atau lemah seperti
Content-Security-PolicyatauX-Content-Type-Optionsyang dirancang untuk memitigasi XSS [S1]. - Probe Aktif: Memasukkan string alfanumerik unik dan tidak berbahaya ke dalam parameter URL dan kolom formulir untuk menentukan apakah string tersebut tercermin dalam isi respons tanpa pengkodean [S1] yang tepat.
- Pemindaian Repo: Menganalisis JavaScript sisi klien untuk mencari "sink" yang menangani data tidak tepercaya secara tidak aman, seperti
innerHTML,document.write, atausetTimeout, yang merupakan indikator umum XSS berbasis DOM [S1].
