HTTP Request Smuggling (İstek Kaçakçılığı) Nedir? Korunma
Request smuggling, ön uç ile arka ucun istek sınırını farklı yorumlamasıyla gizli istek kaçırmaktır. CL.TE, TE.CL ve HTTP/2 türleri tablosu, önbellek zehirleme ve oturum çalma etkisi, tutarlı ayrıştırma savunması ve KAOS ile kanıt temelli tarama.
Hızlı cevap: HTTP request smuggling (istek kaçakçılığı), bir isteğin nerede bittiğini önündeki sunucu (ön uç, proxy ya da CDN) ile arkadaki sunucunun farklı yorumlaması sonucu, saldırganın gizli bir istek kaçırabilmesidir. Saldırgan, Content Length ve Transfer Encoding başlıklarını çelişkili kullanarak bir isteğin sonunu belirsiz bırakır. Ön uç isteği bir yerde biter sayarken arka uç başka yerde biter sayar, böylece kaçırılan parça bir sonraki kullanıcının isteğine eklenir. Sonuç, önbellek zehirleme, oturum çalma, güvenlik denetimlerini atlatma ve başka kullanıcıların yanıtlarını ele geçirme olabilir. Kök çözüm, ön uç ile arka ucun aynı ve katı ayrıştırma kurallarını kullanmasını sağlamak ve belirsiz istekleri reddetmektir.
Modern web mimarilerinde bir isteğin önünde çoğu zaman bir CDN, yük dengeleyici ya da ters proxy vardır. Bu katmanlar aynı HTTP isteğini aynı biçimde yorumlamak zorundadır. Aralarında en ufak bir yorum farkı, request smuggling'e kapı açar. Bu yazı, istek kaçakçılığının nasıl oluştuğunu, türlerini ve doğru savunmayı anlatır.
Request smuggling nasıl çalışır
HTTP, bir isteğin gövdesinin nerede bittiğini iki yöntemle belirtir: Content Length başlığı gövdenin uzunluğunu bildirir, Transfer Encoding chunked ise gövde parçalar halinde gelir ve özel bir bitiş işaretiyle sonlanır. Sorun, bir istek her iki başlığı da içerdiğinde ya da başlıkları biçimsel olarak bozuk gönderdiğinde ortaya çıkar.
Ön uç sunucu bir başlığı esas alır, arka uç sunucu diğerini esas alır. Bu uyuşmazlık yüzünden bir isteğin bir kısmı, arka uç tarafından ayrı ve yeni bir istek olarak görülür. Bu kaçırılan parça, sıradaki meşru kullanıcının isteğinin başına eklenir.
Request smuggling türleri
| Tür | Ön uç ve arka uç | Kısa açıklama |
|---|---|---|
| CL.TE | Ön uç Content Length, arka uç Transfer Encoding | Ön uç uzunluğu, arka uç chunked okur |
| TE.CL | Ön uç Transfer Encoding, arka uç Content Length | Tersi yorum farkı |
| TE.TE | Her ikisi Transfer Encoding | Biri bozuk başlığı yok sayar |
| H2.CL / H2.TE | HTTP/2 ile HTTP/1 çevirisi | Protokol düşürmede oluşan uyuşmazlık |
HTTP/2 kullanan sistemlerde bile, arka uca HTTP/1 olarak çevrildiğinde bu sınıf açıklar geri gelebilir. Bu yüzden protokol çevirisi kritik bir noktadır.
Gerçek etki
Request smuggling tek başına bir bilgi ifşası değildir, bir saldırı katmanıdır. Kaçırılan istekle şunlar yapılabilir:
- Önbellek zehirleme. Zararlı yanıt önbelleğe alınıp diğer kullanıcılara servis edilir. Ayrıntı için web önbellek zehirleme mantığı ile birlikte değerlendirilmelidir.
- Oturum ve kimlik çalma. Kaçırılan istek başka kullanıcının isteğine karışıp oturum bilgisini ele geçirebilir, bu da hesap ele geçirmeye gidebilir.
- Güvenlik denetimini atlatma. Ön uçtaki WAF ya da erişim kontrolü, kaçırılan isteği görmediği için atlatılır.
- İç uçlara erişim. Ön ucun engellediği yönetim uçlarına arka uçtan ulaşılabilir, SSRF ile birleşince etki büyür.
Neden tespiti zor
Request smuggling, zamanlama ve sunucu davranışına dayandığı için basit tarayıcılarla kolayca kaçırılır. Aynı istek bir ortamda çalışırken başka bir yapılandırmada çalışmaz. Bir açığın gerçek olduğunu kanıtlamak için, isteğin arka uçta gerçekten ikiye bölündüğünü kontrollü biçimde göstermek gerekir. Yanlış pozitif riski yüksek olduğu için doğrulanmamış bir smuggling iddiası ciddiye alınmamalıdır.
Doğru savunma
1. Ön uç ve arka uçta aynı ayrıştırma
Zincirdeki tüm sunucular HTTP başlıklarını aynı ve katı kurallarla yorumlamalıdır. Content Length ve Transfer Encoding aynı anda gelen istekler reddedilmelidir.
2. Belirsiz istekleri reddetme
Bozuk ya da çelişkili uzunluk başlıkları taşıyan istekler, işlenmeden reddedilmelidir. Belirsizlik güvensizliktir.
3. Uçtan uca HTTP/2 ve bağlantı yalıtımı
Mümkünse arka uca da HTTP/2 taşınmalı, protokol düşürme en aza indirilmelidir. Bağlantıların tekrar kullanımı istemci bazında yalıtılmalıdır.
4. Güncel proxy ve CDN
İstek kaçakçılığı çoğu zaman belirli proxy ve sunucu sürümlerindeki ayrıştırma hatalarından kaynaklanır. Ön uç bileşenleri güncel tutulmalıdır.
KAOS ile request smuggling taraması
DSET'in yerel yapay zekâ güvenlik motoru KAOS, request smuggling'i zamanlama ve yanıt farklarına dayanarak, kanıt temelli test eder. Farklı CL ve TE kombinasyonlarını dener, isteğin arka uçta gerçekten bölünüp bölünmediğini gözlemler ve yalnızca gerçekten desenkron olan uçları raporlar. Zamanlama tabanlı bir sinyalin ağ gecikmesinden mi yoksa gerçek bir desync'ten mi kaynaklandığını ayırt eder, böylece yanlış pozitif olmadan doğrulanmış bulgu sunar. Bu sınıf açıklar üretim ortamını riske atabildiği için, test her zaman kontrollü ve yetkili biçimde yapılır.
Sık sorulan sorular
HTTP/2 kullanıyorum, request smuggling beni etkiler mi? Evet, etkileyebilir. Uçtan uca HTTP/2 kullanmıyorsanız ve arka uca HTTP/1 olarak çevriliyorsa, bu çeviri sırasında H2.CL ve H2.TE gibi uyuşmazlıklar oluşabilir. Protokol çevirisi olan her nokta risklidir.
WAF request smuggling'i durdurur mu? Tek başına güvenilmez. Aksine, smuggling'in sık kullanılan amaçlarından biri ön uçtaki WAF'ı atlatmaktır, çünkü kaçırılan istek WAF tarafından görülmez. Savunma, tutarlı ayrıştırma ve belirsiz isteklerin reddedilmesidir.
Bir tarayıcı bana smuggling buldu dedi, panik yapmalı mıyım? Önce doğrulanması gerekir. Zamanlama tabanlı sinyaller ağ gecikmesiyle karışabilir. Bulgunun gerçek olduğu, isteğin arka uçta bölündüğü kontrollü biçimde gösterilmeden kesin sonuç çıkarılmamalıdır.
Kaynaklar
- PortSwigger Web Security Academy, HTTP request smuggling: https://portswigger.net/web-security/request-smuggling
- OWASP, HTTP Request Smuggling: https://owasp.org
Web uygulamanızı request smuggling ve OWASP Top 10 açıklarına karşı, çalışan bir kanıtla test ettirmek için DSET ile iletişime geçin. Ankara Hacettepe Teknokent laboratuvarımızdan sızma testi ve güvenli kod denetimi sağlıyoruz.
Kimliğinizi doğrulayın
Yetkilendirilmiş erişim alanı. Tüm giriş denemeleri kayıt altına alınır.