SRLABS - security research labs
Makaleler


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.

©2005-2005 SRLABS
Gizlilik Beyanı ve Yasal Uyarı