İçereği Atla

Session Fixation Saldırıları ve Modern Framework’lerde Korunma

Bir web uygulamasında oturum kimliği, kullanıcının dijital pasaportudur. Eğer saldırgan bu pasaportu kullanıcı giriş yapmadan önce belirleyebiliyorsa, işte orada Session Fixation başlar. Session fixation, klasik oturum ele geçirme saldırılarından farklıdır. Burada saldırgan var olan bir oturumu çalmaz. Bunun yerine kullanıcıyı önceden belirlenmiş bir session ID ile giriş yapmaya zorlar. Giriş tamamlandığında saldırgan aynı oturum kimliğiyle sisteme erişebilir.
15 Ağustos 2026 yazan
Session Fixation Saldırıları ve Modern Framework’lerde Korunma
Amina KAPTAN
 

Session Fixation Nedir?

Session fixation, kullanıcının giriş yapmadan önce oluşturulan bir oturum kimliğinin login sonrasında da değiştirilmemesi durumunda ortaya çıkar.

Akış genellikle şöyledir:

  1. Saldırgan sistemden geçerli bir session ID üretir.
  2. Bu ID’yi kurbana iletir. Örneğin:
    1. URL parametresi
    2. XSS açığı
    3. Cookie manipülasyonu
  3. Kullanıcı bu session ile giriş yapar.
  4. Sistem login sonrası session ID’yi yenilemez.
  5. Saldırgan aynı ID ile sisteme erişir.

Bu saldırı tipi özellikle eski uygulamalarda ve yanlış konfigüre edilmiş framework’lerde görülür.

Session Hijacking ile Farkı

Session hijacking mevcut aktif oturumun çalınmasıdır.

Session fixation ise kullanıcı giriş yapmadan önce oturumun sabitlenmesidir.

Bu fark kritik önemdedir çünkü:

    1. HTTPS tek başına çözüm değildir.
    2. Network sniffing gerektirmez.
    3. Uygulama mantık hatasına dayanır.

Teknik Saldırı Vektörleri

1. URL Tabanlı Session ID

Bazı eski sistemler session ID’yi URL içinde taşır:

https://site.com/login?sessionid=ABC123

Bu model fixation için idealdir.

2. Cookie Zorlama

Saldırgan kurbanın tarayıcısına:

    1. XSS ile
    2. Alt domain manipülasyonu ile
    3. HTTP response splitting ile

sabit bir cookie yazdırabilir.

3. HTTP Üzerinden İlk Oturum

Kullanıcı login sayfasına HTTP ile gelir, ardından HTTPS’e yönlendirilirse, aradaki zayıf halka fixation’a kapı açabilir.

Modern Framework’lerde Risk Durumu

Modern framework’ler varsayılan olarak session rotation yapar. Ancak:

    1. Yanlış middleware sıralaması
    2. Custom authentication yazımı
    3. Legacy kod entegrasyonu
    4. API + Web hibrit mimariler

risk oluşturabilir.

Aşağıda yaygın framework yaklaşımlarını inceleyelim.

Spring Security (Java)

Spring Security login sonrası varsayılan olarak session ID yeniler.

Koruma mekanizması:

    1. SessionFixationProtectionStrategy
    2. migrateSession() davranışı

Ancak eğer geliştirici:

    1. Stateless JWT yapısına geçip yanlış konfigürasyon yaparsa
    2. Custom login handler yazarsa

koruma devre dışı kalabilir.

Laravel (PHP)

Laravel login işlemi sonrası otomatik olarak regenerate() çağırır.

Ancak risk oluşabilir:

    1. Eğer developer manuel session yönetimi yaparsa
    2. Remember me token yanlış implemente edilirse
    3. Load balancer cookie senkronizasyonu bozuksa

Django (Python)

Django authentication sonrası session key’i otomatik yeniler.

Risk noktaları:

    1. Custom middleware
    2. Session engine değişimi
    3. Cache tabanlı session saklama hataları

Express.js (Node.js)

Express.js kendi başına session yönetmez. express-session gibi paketler kullanılır.

Güvenli kullanım için:

req.session.regenerate(function(err) { // login sonrası yeni session });

Eğer bu yapılmazsa fixation riski doğar.

Gerçek Hayatta Görülen Hatalar

    1. Login sonrası session yenilenmiyor
    2. Logout sonrası session invalid edilmiyor
    3. Aynı session ID privilege escalation için kullanılıyor
    4. Multi-tab login senaryoları test edilmiyor
    5. SSO entegrasyonlarında session rotation atlanıyor

Session Fixation’a Karşı Güvenlik Önlemleri

1. Login Sonrası Session ID Yenileme

En kritik kontrol budur.

Authentication sonrası her zaman yeni session ID üretilmelidir.

2. Secure Cookie Ayarları

Cookie özellikleri:

    1. HttpOnly
    2. Secure
    3. SameSite=Strict veya Lax

Bu ayarlar fixation riskini azaltır.

3. URL’de Session Taşımayı Yasaklama

Session ID asla URL içinde taşınmamalıdır.

4. HTTPS Zorunluluğu

HTTP → HTTPS yönlendirmesi ilk istekte yapılmalı.

Login sayfası doğrudan HTTPS olmalıdır.

5. XSS Koruması

XSS fixation’ın en büyük tetikleyicisidir.

CSP politikaları etkinleştirilmelidir.

6. Privilege Escalation Kontrolü

Login sonrası:

    1. Session ID değişmeli
    2. Role bilgileri yeniden oluşturulmalı
    3. Eski session invalidate edilmeli

API ve JWT Ortamlarında Fixation

Stateless yapılarda klasik session fixation yoktur. Ancak:

    1. Refresh token sabitlenebilir
    2. Token reuse saldırıları yapılabilir
    3. Local storage hijack senaryoları oluşabilir

JWT mimarilerinde:

    1. Token rotation
    2. Short expiration
    3. Refresh token blacklist

kritik önemdedir.

OWASP Perspektifi

OWASP, session fixation’ı kimlik doğrulama zafiyetleri arasında değerlendirir ve login sonrası session rotation’ı zorunlu kontrol olarak önerir.

Test Nasıl Yapılır?

Pentest sırasında:​

    1. Login öncesi session ID alınır.
    1. Login yapılır.
    1. Session ID değişiyor mu kontrol edilir.
    1. Aynı ID ile ikinci bir tarayıcıdan erişim denenir.

Eğer ID değişmiyorsa zafiyet vardır.

Sonuç

Session fixation gürültülü bir saldırı değildir.

Firewall’u aşmaz. Şifre kırmaz. Trafiği dinlemez.

Sadece sistemin unutkanlığından faydalanır.

Modern framework’ler büyük ölçüde güvenlidir.

Ancak güvenlik, varsayılan ayarlarla değil; bilinçli konfigürasyonla korunur.

Oturum kimliği küçük bir string olabilir.

Ama doğru yönetilmezse, o string bir anahtar haline gelir.

Ve anahtarın kopyası saldırgandaysa, kapı çoktan açılmıştır.

Session Fixation Saldırıları ve Modern Framework’lerde Korunma
Amina KAPTAN 15 Ağustos 2026
Bu gönderiyi paylaş
Etiketler
Arşivle
Giriş to leave a comment