Pengantar
Aplikasi web modern sering menggunakan beberapa server dalam satu alur komunikasi. Request dari pengguna dapat melewati reverse proxy, load balancer, WAF, hingga server aplikasi.
Arsitektur tersebut meningkatkan performa dan fleksibilitas. Namun, perbedaan cara server membaca request dapat menciptakan celah keamanan yang dikenal sebagai HTTP Request Smuggling.
Dua varian klasik yang sering dibahas adalah CL.TE dan TE.CL. Keduanya memanfaatkan perbedaan interpretasi antara server front-end dan back-end terhadap panjang HTTP request.
Apa Itu HTTP Request Smuggling?
Memahami Konsep Dasarnya
HTTP Request Smuggling adalah teknik yang memanfaatkan ketidaksesuaian cara beberapa server memproses batas akhir sebuah HTTP request.
Masalah muncul ketika front-end dan back-end memiliki interpretasi berbeda terhadap request yang sama. Akibatnya, sebagian data dapat dianggap sebagai bagian dari request berikutnya.
IETF menjelaskan bahwa request smuggling terjadi ketika perbedaan interpretasi terhadap pesan HTTP memungkinkan request tambahan disembunyikan di dalam request lain. (dikutip dari: IETF RFC 9112 – HTTP/1.1)
baca juga : Container Escape: Ketika Container Tidak Lagi Menjadi Batas Keamanan
Mengenal CL.TE dan TE.CL
1. CL.TE
CL.TE berarti server front-end menggunakan Content-Length (CL) untuk menentukan panjang request, sedangkan server back-end menggunakan Transfer-Encoding (TE).
Perbedaan tersebut dapat menyebabkan kedua server membaca batas request pada posisi yang berbeda. Dalam kondisi tertentu, data yang dianggap sebagai bagian dari request oleh front-end dapat dibaca sebagai request baru oleh back-end.
Karena itu, CL.TE dapat menyebabkan koneksi antara front-end dan back-end mengalami desinkronisasi.
2. TE.CL
TE.CL merupakan kebalikan dari CL.TE.
Pada skenario ini, front-end menggunakan Transfer-Encoding, sedangkan back-end menggunakan Content-Length.
Perbedaan interpretasi tersebut kembali menciptakan batas request yang tidak sama. Jika kondisi server memungkinkan, attacker dapat memanfaatkan perbedaan tersebut untuk memengaruhi request berikutnya.
PortSwigger menjelaskan bahwa CL.TE dan TE.CL merupakan varian klasik HTTP Request Smuggling yang bergantung pada perbedaan cara front-end dan back-end menentukan panjang request. (dikutip dari: PortSwigger Web Security Academy – HTTP Request Smuggling)
Mengapa Content-Length dan Transfer-Encoding Penting?
Content-Length
Header Content-Length menunjukkan ukuran body dalam satuan byte.
Server dapat menggunakan nilai tersebut untuk menentukan kapan body sebuah request berakhir.
Transfer-Encoding
Sementara itu, Transfer-Encoding: chunked menggunakan mekanisme chunk untuk menentukan panjang data yang dikirim.
Masalah keamanan dapat muncul ketika dua server menggunakan mekanisme berbeda untuk membaca request yang sama.
Dalam RFC 9112, jika sebuah pesan HTTP menerima Content-Length dan Transfer-Encoding secara bersamaan, Transfer-Encoding memiliki prioritas terhadap Content-Length. Kondisi seperti ini juga dapat menjadi indikasi percobaan request smuggling dan seharusnya ditangani sebagai error.
Bagaimana Desinkronisasi Terjadi?
Front-End dan Back-End Tidak Sepakat
Bayangkan sebuah aplikasi menggunakan reverse proxy di depan server aplikasi.
Front-end menerima request dari pengguna. Setelah itu, request diteruskan melalui koneksi yang sama ke back-end.
Jika keduanya menentukan panjang request dengan cara berbeda, posisi akhir request juga dapat berbeda.
Akibatnya, back-end mungkin menganggap sebagian data sebagai awal dari request berikutnya.
Connection Desynchronization
Kondisi tersebut disebut HTTP desynchronization.
Setelah koneksi berada dalam keadaan tidak sinkron, request berikutnya dapat diproses secara tidak sesuai dengan maksud pengguna.
Inilah alasan HTTP Request Smuggling dapat menjadi berbahaya pada arsitektur yang menggunakan proxy atau load balancer.
Dampak HTTP Request Smuggling
Melewati Security Control
Request yang terlihat aman bagi front-end belum tentu diproses dengan cara yang sama oleh back-end.
Karena itu, mekanisme keamanan pada front-end berpotensi dilewati jika kedua komponen memiliki interpretasi berbeda.
Web Cache Poisoning
Dalam kondisi tertentu, desinkronisasi dapat dikombinasikan dengan mekanisme caching. Dampaknya dapat berupa manipulasi respons yang kemudian diberikan kepada pengguna lain.

Mengakses Data Sensitif
Jika request berikutnya milik pengguna lain ikut terpengaruh, informasi tertentu dapat berpotensi terekspos.
Namun, dampaknya sangat bergantung pada arsitektur aplikasi dan kondisi kerentanan.
Gangguan terhadap Aplikasi
Desinkronisasi juga dapat menyebabkan request mengalami error, timeout, atau diproses pada endpoint yang tidak sesuai.
Dengan demikian, HTTP Request Smuggling tidak hanya berkaitan dengan pencurian data. Gangguan terhadap integritas komunikasi juga menjadi risiko penting.
baca juga : Amcache.hve Forensics: Mengungkap Jejak Program dan Bukti Digital di Windows
Cara Mendeteksi HTTP Request Smuggling
Periksa Perbedaan Parsing
Langkah pertama adalah memahami bagaimana setiap komponen dalam HTTP request chain memproses:
Content-LengthTransfer-Encoding- koneksi persisten
- request body
- HTTP/1.1 dan HTTP/2
Tujuannya adalah memastikan seluruh komponen memiliki interpretasi yang konsisten.
Gunakan Testing pada Lingkungan yang Diizinkan
Pengujian keamanan sebaiknya dilakukan pada aplikasi milik sendiri atau lingkungan yang memang memberikan izin pengujian.
Tools seperti Burp Suite dapat membantu melakukan analisis terhadap kemungkinan perbedaan parsing. PortSwigger juga menyediakan materi dan lab khusus untuk mempelajari HTTP Request Smuggling secara aman.
Amati Timeout dan Respons Tidak Normal
Perbedaan parsing dapat menghasilkan gejala seperti:
- request mengalami timeout;
- respons tidak konsisten;
- koneksi menjadi tidak stabil;
- request berikutnya diproses secara tidak terduga.
Gejala tersebut tidak selalu membuktikan adanya kerentanan. Namun, kondisi tersebut dapat menjadi indikator yang perlu dianalisis lebih lanjut.
Cara Mencegah HTTP Request Smuggling
Gunakan Parsing yang Konsisten
Pastikan seluruh komponen dalam request chain menggunakan aturan parsing HTTP yang konsisten.
Reverse proxy, load balancer, WAF, dan application server perlu dikonfigurasi agar tidak memiliki interpretasi yang bertentangan.
Tolak Request yang Ambigu
Request yang memiliki kombinasi header atau format yang ambigu sebaiknya ditolak.
Pendekatan ini membantu mencegah front-end meneruskan request yang kemudian ditafsirkan berbeda oleh back-end.
Perbarui Server dan Proxy
Gunakan versi terbaru dari web server, reverse proxy, load balancer, dan komponen HTTP lainnya.
Patch keamanan penting karena implementasi HTTP dapat memiliki perbedaan perilaku yang berpotensi menimbulkan masalah parsing.
Pertimbangkan HTTP/2
Penggunaan HTTP/2 pada komunikasi front-end dan back-end dapat mengurangi beberapa risiko klasik HTTP/1.1. Namun, HTTP/2 bukan jaminan bahwa aplikasi sepenuhnya bebas dari request smuggling.
PortSwigger mencatat bahwa request smuggling juga dapat muncul pada arsitektur yang melibatkan HTTP/2, terutama ketika terdapat downgrade atau perbedaan interpretasi antara protokol yang digunakan.
CL.TE vs TE.CL
| Aspek | CL.TE | TE.CL |
|---|---|---|
| Front-End | Content-Length | Transfer-Encoding |
| Back-End | Transfer-Encoding | Content-Length |
| Masalah utama | Perbedaan batas request | Perbedaan batas request |
| Dampak potensial | Desinkronisasi | Desinkronisasi |
| Fokus mitigasi | Konsistensi parsing | Konsistensi parsing |
Kedua varian memiliki akar masalah yang sama, yaitu perbedaan interpretasi HTTP request.
Karena itu, solusi utama bukan hanya memblokir satu pola tertentu. Konsistensi parsing di seluruh request chain jauh lebih penting.
baca juga : Encrypted Client Hello (ECH): Teknologi Baru untuk Menyembunyikan SNI dan Meningkatkan Privasi TLS
Kesimpulan
HTTP Request Smuggling via CL.TE & TE.CL memanfaatkan perbedaan cara front-end dan back-end membaca panjang HTTP request.
CL.TE terjadi ketika front-end menggunakan Content-Length dan back-end menggunakan Transfer-Encoding. Sebaliknya, TE.CL menggunakan Transfer-Encoding di front-end dan Content-Length di back-end.
Risikonya dapat berupa bypass security control, manipulasi request, cache poisoning, hingga paparan data. Karena itu, administrator perlu memastikan parsing HTTP konsisten, menolak request ambigu, memperbarui komponen server, dan melakukan security testing secara berkala.
Dengan memahami konsep HTTP desynchronization, tim keamanan dapat lebih mudah mengenali salah satu kelas kerentanan yang sering tersembunyi di antara reverse proxy dan application server.









