Pengantar
Dalam komunikasi web, setiap permintaan dari browser akan dijawab oleh server melalui HTTP response. Respons ini terdiri dari header dan body yang berisi informasi penting seperti status kode, tipe konten, cookie, hingga lokasi redirect.
Namun, jika aplikasi tidak memvalidasi input dengan benar, penyerang dapat menyisipkan karakter khusus untuk memanipulasi struktur respons tersebut. Teknik ini dikenal sebagai HTTP Response Splitting.
Meski terdengar teknis, dampaknya bisa sangat serius. Serangan ini dapat digunakan untuk melakukan cache poisoning, cross-site scripting (XSS), hingga penyisipan konten berbahaya yang terlihat berasal dari server resmi.
Apa Itu HTTP Response Splitting?
HTTP Response Splitting adalah kerentanan yang terjadi ketika aplikasi web memasukkan input pengguna ke dalam header HTTP tanpa proses sanitasi yang tepat. Penyerang memanfaatkan karakter khusus seperti carriage return (CR) dan line feed (LF) untuk “memecah” satu respons HTTP menjadi dua respons terpisah.
Menurut OWASP, serangan ini terjadi ketika data yang tidak divalidasi memungkinkan injeksi karakter CRLF sehingga menghasilkan respons HTTP tambahan yang tidak sah (dikutip dari OWASP).
baca juga : Web Cache Deception: Celah Tersembunyi yang Membocorkan Data Lewat Sistem Cache
Bagaimana Cara Kerja HTTP Response Splitting?
1. Aplikasi Menyisipkan Input ke Header
Contoh kasus umum adalah parameter yang dimasukkan ke dalam header Location saat proses redirect.
2. Penyerang Menyisipkan Karakter CRLF
Karakter:
%0d%0a
merepresentasikan CR (carriage return) dan LF (line feed) dalam encoding URL.
Dengan menyisipkan karakter tersebut, penyerang dapat mengakhiri header pertama dan memulai header baru.
3. Terbentuk Respons Tambahan
Manipulasi Header
Penyerang dapat menambahkan header palsu seperti:
Set-Cookie: session=attacker
Penyisipan Body Berbahaya
Dalam beberapa kasus, penyerang dapat menyisipkan konten HTML atau JavaScript.
Dampak HTTP Response Splitting
Cross-Site Scripting (XSS)
Jika respons kedua berisi skrip berbahaya, pengguna dapat menjalankan kode tanpa sadar.
Web Cache Poisoning
Respons yang telah dimanipulasi bisa disimpan dalam cache dan diberikan kepada pengguna lain.
Manipulasi Cookie
Penyerang dapat mengubah atau menambahkan cookie untuk mengganggu sesi pengguna.
Pengalihan ke Situs Berbahaya
Header Location dapat dimodifikasi untuk mengarahkan korban ke halaman phishing.
baca juga : Homograph Attack: Ancaman Unicode yang Menyamarkan Domain Berbahaya
Mengapa Kerentanan Ini Terjadi?
Validasi Input yang Lemah
Aplikasi tidak memfilter karakter kontrol seperti CR dan LF.
Kurangnya Sanitasi Output
Data pengguna langsung dimasukkan ke dalam header tanpa encoding yang benar.
Ketidak konsistenan Framework
Beberapa framework lama tidak secara otomatis memblokir karakter berbahaya dalam header.
Cara Mencegah HTTP Response Splitting
Validasi dan Sanitasi Input
Blokir atau hapus karakter CR (\r) dan LF (\n) dari input pengguna.
Gunakan Framework Modern
Framework modern biasanya telah memiliki perlindungan terhadap injeksi CRLF.
Hindari Memasukkan Input ke Header Secara Langsung
Jika diperlukan, lakukan encoding yang sesuai sebelum menambahkan data ke header.
Lakukan Pengujian Keamanan
Uji aplikasi terhadap potensi CRLF injection melalui penetration testing atau security scanning.
Mengapa Serangan Ini Masih Relevan?
Meskipun termasuk kerentanan lama, HTTP Response Splitting masih ditemukan pada aplikasi yang menggunakan kode legacy atau validasi yang tidak konsisten. Dalam beberapa kasus, serangan ini menjadi pintu masuk untuk eksploitasi yang lebih kompleks seperti request smuggling atau cache poisoning.
Karena menyerang struktur dasar komunikasi HTTP, dampaknya bisa meluas jika tidak ditangani dengan benar.
baca juga : DHCP Starvation: Serangan Sunyi yang Melumpuhkan Jaringan dari Dalam
Kesimpulan
HTTP Response Splitting adalah kerentanan yang memungkinkan penyerang memanipulasi struktur respons HTTP melalui injeksi karakter CRLF. Dengan memecah respons menjadi dua bagian, pelaku dapat menyisipkan header atau konten berbahaya.
Pencegahan utama terletak pada validasi input yang ketat, sanitasi karakter kontrol, serta penggunaan framework yang aman. Dalam keamanan aplikasi web, kontrol terhadap header HTTP sama pentingnya dengan perlindungan terhadap body respons.







