
Faydasız SSL
SSL protokolü HTTP protokolü üzerinde en yaygın kullanım amacı, geliştirilmesinin
en önemli nedenlerinden biri olan web server ile browser arasındaki iletişimi
şifreleyerek izinsiz olarak verileri dinlenmesine engel olmaktır.
Buna rağmen, kimi zaman web uygulama geliştiricileri SSL kullanmalarına rağmen veri
iletişiminin şifrelenmesini anlamsız kılacak hatalar yapmaktadırlar. Bu hatalar kimi
zaman tecrübesizlikten kimi zaman bilgisizlik ve dikkatsizlikten kaynaklanmaktadır.
Web uygulama geliştiriciler, SSL'in şifreleme özelliğini aslında herhangi bir şekilde
bozmamakta veya etkisiz hale getirmemekte, yaptıkları mantıksal hatalar nedeniyle
kullanılmasını anlamsız hale getirmektedirler.
Aslında formlardaki bilgileri SSL içerisine alınarak verilen server'a iletilmesi esnasında
şifrelenmesini ve dinlenmesi durumunda çözümlenmesi çok zor ve/veya oldukça uzun sürecek
veriler olarak network üzerinde dolaştırılması sağlanmaktadır.
Hatalı uygulamalarda bu güven içerisinde yapılmaktadır. HTTP protokolünün tasarımı gereği
bağlantının sürekli olmaması durumu web uygulamalarında "session" adı verilen geçici ve
kısa süreli cookie'lerin kullanılması ile bir nebze kapatılmış ve tüm web uygulama
sunucuları da doğal sayılır bir şekilde otomatik olarak session cookie'lerine destek
vermişlerdir.
Tüm web uygulama geliştiriciler de durum kontrolleri gereken anlarda "session değişkenleri" ni
kullanmaktadır. Aslında "session değişkeni" öngörülmesi ve tahmin edilmesi zor bir etiket
(session id) ile web uygulama sunucusunun hafızasının bir kısmının ayrılmasından başka bir
şey değildir.
Web uygulama geliştiriciler bu hafıza alanına, "isim=değer" formülü ile bir kısım veriler
yazar, web uygulama sunucusu da bu hafıza etiketini browser'a gönderdiği cevap içerisinde
cookie olarak yazar. Browser ise (kapatılması gibi yeni bir instance'ının oluşturulması
işlemi dışında) aynı domain için yapılan her request'e kendisine bildirilen cookie'yi ekler.
Session ID değerinin öngörülmesi ve tahmin edilmesinin zor olma nedeni bu aşamada çok önemlidir.
Sonuç olarak birisinin session id'sini ele geçirip o session id ile web server'a request
gönderdiğinizde artık o kişinin durum (state) bilgileri ile işlem görecek; bir anlamda
session id'nin sahibi olan kişi artık siz olacaksınız.
SSL'in faydasızlaşması durumu tam olarak session id'nin güvenliğinin tam olarak
sağlanamaması ile ortaya çıkmaktadır.
Session id'ler aynı host name'leri (www.deneme.com gibi) için aynı tutulmaktadır.
SSL siteleri için de aynı durum söz konusudur. http://www.deneme.com ile
https://www.deneme.com siteleri IIS üzerinde farklı siteler olarak bölünmedikleri
sürece cookie işleme yöntemi açısından aynı domain üzerindeki işleme tabidirler.
Yani http://www.deneme.com sitesinden IIS üzerinde aynı site olarak tanımlanmış olan ve
SSL kullanan https://www.deneme.com üzerine state'leri de taşımaktasınız. Bu şekilde;
network hattını dinleyen herhangi biri; kurbanının session id'sini SSL kullanmayan sitedeki
dolaşaması esnasında alabilir, kurbanı SSL kullanan siteye mesela login olarak girip kendi
durumunu belirledikten sonra, dinleyen kişi aynı session id'si ile login olmuş gibi diğer
kişinin durum bilgileri ile işlem yapabilir.
Bu tip bir hatanın sonucunda da hattın login bilgilerini gizlemek için şifrelenmesi
de anlamsızlaşacaktır.
|