Genel Bakış
Oturum sabitleme, bir saldırganın web uygulamasıyla geçerli bir oturum kurduğu, ilgili oturum kimliğini (session ID) elde ettiği ve ardından kurbanı bu oturum kimliğini kullanarak kimlik doğrulamaya yönlendirdiği bir oturum yönetimi güvenlik açığı sınıfıdır. Uygulama, başarılı oturum açma işleminin ardından yeni bir oturum kimliği üretmediği için saldırgan, sunucunun şu anda kimliği doğrulanmış kullanıcıyla ilişkilendireceği oturum kimliğini zaten bilmekte ve kurbanın kimliğine bürünmek için bu kimliği hemen kullanabilmektedir.
Oturum ele geçirme saldırılarında saldırganın kimlik doğrulamasından sonra oturum kimliğini çalması gerekirken, oturum sabitleme yönteminde saldırganın yalnızca oturum kimliğini önceden sağlaması yeterlidir. Bu fark, ağ trafiği şifreli olsa bile saldırıyı mümkün kılar; yeter ki uygulama, oturum kimliklerinin URL, gizli form alanı veya saldırgan tarafından ayarlanmış bir çerez aracılığıyla enjekte edilmesine izin versin.
Nasıl çalışır?
Saldırı öngörülebilir bir sıra izler:
- Oturum kimliği elde etme. Saldırgan, hedef uygulamayı ziyaret eder ve geçerli, kimlik doğrulama öncesi bir oturum kimliği alır (örn.
JSESSIONID=abc123). - Sabitlenmiş oturum kimliğini kurbana iletme. Yaygın iletim mekanizmaları şunlardır:
- Oturum kimliğinin sorgu parametresi olarak gömülü olduğu özel hazırlanmış bir URL (örn.
https://example.com/login?SESSIONID=abc123) — uygulama URL'den oturum kimliği kabul ediyorsa geçerlidir. - Saldırganın bir alt alan adını kontrol etmesi durumunda alt alan adı veya aynı site üzerinden çerez enjeksiyonu.
- HTTP (TLS olmayan) bağlantısında ortadaki adam konumundan doğrudan
Set-Cookiebaşlığı ayarlama. - Oturum çerezinin değerini yerleştirmek için kullanılan XSS (Cross-Site Scripting).
- Oturum kimliğinin sorgu parametresi olarak gömülü olduğu özel hazırlanmış bir URL (örn.
- Kurbanın kimlik doğrulaması. Kurban bağlantıya tıklar, oturum açma sayfasıyla karşılaşır ve giriş yapar. Uygulama kullanıcının kimliğini doğrular; ancak kritik nokta olarak oturum kimliğini yenilemez.
- Saldırganın kimliği doğrulanmış oturuma erişimi. Saldırgan oturum kimliğini zaten bildiğinden (kendisi seçtiği için), bu kimliği kullanarak uygulamaya istek gönderebilir ve kimliği doğrulanmış kurban gibi davranabilir.
Bir uygulamayı savunmasız kılan temel teknik ön koşullar:
- Uygulamanın URL parametreleri, gizli alanlar veya güvenilmeyen kaynaklardan gelen
Set-Cookiebaşlıkları aracılığıyla sağlanan oturum kimliklerini kabul etmesi. - Uygulamanın başarılı bir oturum açma işleminin ardından (ayrıcalık yükseltme noktası) mevcut oturumu geçersiz kılmaması ve yeni bir oturum kimliği üretmemesi.
- Hızlı süresi dolmayan, uzun ömürlü kimlik doğrulama öncesi oturum belirteçleri.
İş etkisi
Başarılı bir oturum sabitleme saldırısı, saldırgana kurbanın kimliği doğrulanmış oturumunun tam kontrolünü verir. Kurban hesabının ayrıcalık düzeyine bağlı olarak şu sonuçlar ortaya çıkabilir:
- Yetkisiz veri erişimi veya sızdırılması — saldırgan hassas kişisel, finansal veya tescilli verileri okur, kopyalar veya indirir.
- Hesap ele geçirme — saldırgan kurbanın kimlik bilgilerini değiştirerek meşru kullanıcıyı hesabından kilitler.
- Ayrıcalık yükseltme — kurban bir yöneticiyse, saldırgan uygulama üzerinde yönetim kontrolü kazanır.
- Sahte işlemler — e-ticaret veya bankacılık uygulamalarında saldırgan, kurban adına finansal işlem başlatabilir.
- Yasal ve uyumluluk yükümlülükleri — KVKK, GDPR, PCI DSS ve HIPAA kapsamında oturum sabitleme kaynaklı bir ihlal; zorunlu ihlal bildirimi, para cezaları ve denetim yükümlülükleri doğurabilir.
- İtibar kaybı — hesapları ele geçirilen kullanıcılar uygulamaya ve kuruluşa olan güvenini yitirir.
Nasıl giderilir?
- Kimlik doğrulamasının ardından oturum kimliğini yenileyin. Bu, birincil ve en kritik kontroldür. Başarılı bir oturum açma işleminin hemen ardından (veya herhangi bir ayrıcalık düzeyi değişikliğinde) mevcut oturumu geçersiz kılın ve yeni, şifreli olarak rastgele üretilmiş bir oturum kimliğiyle yeni bir oturum oluşturun. Çoğu framework buna özel bir yöntem sunar (örn. PHP'de
session_regenerate_id(true), Java EE'derequest.getSession(false); request.getSession(true);, ASP.NET'teSession.Abandon()+ yeni oturum). - Dışarıdan sağlanan oturum kimliklerini reddedin. Uygulamayı, URL sorgu parametrelerinden veya HTTP istek gövdelerinden oturum kimliklerini asla kabul etmeyecek şekilde yapılandırın. Oturum kimlikleri yalnızca sunucunun kendisi tarafından ayarlanan çerezlerden kabul edilmelidir.
- Güvenli,
HttpOnlyveSameSiteçerez niteliklerini kullanın. Oturum çerezleriniSecure(yalnızca HTTPS),HttpOnly(JavaScript ile erişilemez) veSameSite=StrictveyaSameSite=Laxolarak işaretleyerek çerez enjeksiyonu ve XSS tabanlı sabitleme saldırılarının saldırı yüzeyini azaltın. - Kimlik doğrulama öncesi oturumlar için kısa süre sonu belirleyin. Oturum açmadan önceki oturumlar (kimlik doğrulama öncesi) hızlıca sona ermeli (örn. birkaç dakikalık hareketsizlik sonrasında) ve sabitlenmiş bir oturum kimliğinin geçerli kaldığı pencere daraltılmalıdır.
- Her yerde TLS zorunlu kılın. Oturum açma formları dahil tüm sayfalarda HTTPS kullanımını zorunlu hale getirerek ağ düzeyinde oturum çerezi enjeksiyonunu önleyin.
- Ek oturum bağlama uygulayın. İsteğe bağlı olarak oturumları istemcinin IP adresi veya User-Agent dizesi gibi ikincil tanımlayıcılara bağlayın. Bunlar aşılabilse de saldırgana ek engel oluşturur; tek kontrol olarak bunlara güvenmeyin.
- Framework varsayılanlarını denetleyin. Kullandığınız web framework'ünün varsayılan oturum yönetiminin URL'ye gömülü oturum kimliklerini kabul etmediğini ve oturum açılışında oturum yenilemenin etkin olduğunu doğrulayın. Pek çok framework URL tabanlı oturum takibini varsayılan olarak devre dışı bırakır; ancak kendi yapılandırmanızda bunu teyit edin.
Sensagraph, URL parametrelerinden oturum kimliği kabul eden ve kimlik doğrulama sınırlarında oturum belirtecini döndürmeyen uygulamalar da dahil olmak üzere oturum sabitleme göstergelerini otomatik olarak tespit eder.
Referanslar
- OWASP – Session Fixation Saldırı Açıklaması
- OWASP – Oturum Yönetimi Hızlı Başvuru Kılavuzu
- MITRE CWE-384: Session Fixation
- OWASP Top 10 2021 – A07: Kimlik Tespiti ve Doğrulama Hataları
- NIST SP 800-63B – Dijital Kimlik Kılavuzu: Kimlik Doğrulama ve Yaşam Döngüsü Yönetimi
- RFC 6265 – HTTP Durum Yönetim Mekanizması (Çerezler)
- MDN Web Docs – HTTP Çerezleri