Web uygulamalarının en cezbedici özelliklerden biri kullanım kolaylığıdır. Sıralamada güvenlik, kullanım kolaylığından daha sonra gelse de standardlar, politikalar, şöhret ve para kaybı korkuları bu özelliğin de geliştirilmesinde itici güç olmaktadır.  Diğer yandan, bir uygulamayı hem güvenli hem de kolay kullanılabilir hale getirme çabası ise her zaman istenen etkiyi yaratmayabilir.


    Örneğin, birbirine güvenen iki web uygulamasından birine giriş yapıldıktan sonra, kullanıcıların diğer uygulamayı gösteren linklere tıklayarak tekrar parola girmeden giriş yapabilmesi karşılaşılan gereksinimlerdendir. Bu gereksinim için klasik bir SSO yapısı kullanılması hem maliyetli olacak hem de kullanım kolaylığını negatif olarak etkileyecektir.
    1. Kullanıcı önce A uygulamasının sağladığı kimlik doğrulama arayüzünü kullanarak kendine verilmiş olan kullanıcı adı ve şifre ile giriş yapar.
    2. A uygulamasını kullanırken, A uygulamasındaki bazı parametreler ile B uygulamasının özelliklerini kullanmak için hazırlanmış linklere tıklar.
    3. B uygulaması browser’da açılır ve kullanıcının karşısına tekrar kimlik doğrulama ekranı çıkar.
    İş sahipleri genellikle kullanıcıyı negatif etkileyecek bu tür güvenlik mekanizmalarından çekinirler. Bu nedenle süreç aşağıdaki şekilde genellikle Çakma SSO olarak nitelendirilen bir teknik ile değiştirilebilir. 

    Çakma SSO süreci
    A ve B uygulamaları gizlilik kurallarına uyarak bir random değer (anahtar) paylaşırlar. Kullanıcı A uygulamasına kendi kullanıcı adı ve şifresi ile giriş yapar. A uygulaması açılan web arayüzünde, kullanıcının sağladığı bilgilerden; kullanıcı adı, zaman bilgisinin yanısıra kullanıcı adı, zaman ve anahtar üçlüsünün SHA1 hash'ini kullanarak, B uygulamasını hedef alan bir link hazırlar. 

    Kullanıcı linke tıkladığında B uygulaması, ilgili parametreler ve kendisinde de bulunan anahtar ve zaman bilgisi ile bir SHA1 hash hesaplar. A uygulamasının gönderdiği hash değeri ile karşılaştırılan değer aynı ise, A uygulamasının gönderdiği kullanıcı adı ile uygulamaya otomatik giriş yaptırılır.

    Merkle-Damgard blok yapısı
    SHA gibi Merkle–Damgård yapısı kullanan hash fonksiyonları şekilde gösterildiği gibi çalışır. Hash’i alınmak istenen mesaj, algoritmanın kullandığı blok uzunluğuna göre (128, 256, v.b.) parçalara bölünür. İlk mesaj bloğu bilinen bir Initialization Vektörü (IV) ile beraber bir fonksiyona sokulur. Fonksiyon çıktısı diğer mesaj bloğu ile aynı fonksiyona sokulur. En son mesaj bloğu eğer blok uzunluğundan kısa ise, 0 veya null karakterler ile ekleme yapılarak (padding) tam blok uzunluğuna eşitlenir ve son olarak fonksiyona sokulur. Çıktı mesajın hash’ini vermektedir. 
    SHA1 için IV: 67452301, EFCDAB89, 98BADCFE, 10325476, C3D2E1F0 şeklindedir.

    Length Extension Attack, Çakma SSO tekniklerine karşı gerçekleştirilebilecek bir saldırı çeşididir.

    Saldırgan, hedef uygulamaya erişimi olan bir kullanıcıdır. Ancak kendi kullanıcısı ile değil başkasının kullanıcısı ile sisteme girmekte hedeflemektedir. Dolayısıyla ilk olarak yapması gereken kaynak uygulamadan kendi kullanıcısı için bir hash oluşturmasını sağlamaktır. Kaynak uygulama, yansıdaki gibi kullanıcı adı, timestamp gibi parametreler ve Markle-Damgard yapısının gerektirdiği şekilde null byte padding’ler ile SHA1 algoritmasını çalıştırır ve hash değerini üretir. Bu değerlerden gizli anahtar hariç bir link oluşturur ve saldırgana gönderir.
    Saldırgan kaynak uygulamanın ürettiği hash değerini, IV değeriymiş gibi yine SHA1 algoritmasına bu sefer kendi girdileri ile besler
    Saldırgan gizli anahtarı bilmemektedir ancak, kaynak uygulamanın çalıştırmaya başladığı SHA1 algoritması sanki yarıda kalmış gibi link içinde aldığı hash değerini IV’ymiş gibi algoritmaya verir. Ayrıca hedef uygulamaya giriş yapmak istediği farklı kullanıcı adını ve öncesinde SHA1 algoritmasının tam bloklar halinde çalışmasını sağlayacak gerekli padding’leri kullanarak yeni bir hash değeri üretir.

    Hedef uygulamaya, kaynak uygulamadan kendisine gelen link değerlerinin yanında kendisinin ürettiği değerleri ve yine orijinal link’teki hash değerini yerine yeni oluşturduğu hash değerini kullanarak yeni bir link ile gider. Hedef uygulama bu değerlerin başına kendisinde ve sadece kaynak uygulamada olan gizli anahtar değerini ekler. Ve sonra klasik SHA1 algoritmasını çalıştırır. Üreteceği hash değeri saldırganın ürettiği ve linkde yer alan hash değeridir. Saldırgan gizli anahtar değerini bilmeden hedef uygulamaya başka bir kullanıcı adı ile girebilmeyi başarır.

    IV değerinin custom bir değer ile değiştirilebilmesini sağlayan bir SHA implementasyonuna aşağıdaki linklerden erişilebilir.

    http://force.vnsecurity.net/download/rd/shaext.py
    http://force.vnsecurity.net/download/rd/sha-padding.py
    http://force.vnsecurity.net/download/rd/sha.py

    0 comments:

    Post a Comment

     
    Top