2. Kimlik Doğrulaması ve Oturum Yönetiminin Ele Geçirilmesi (Broken Authentication and Session Management)
Web siteleri genellikle her geçerli oturum için oturum çerezi ve oturum kimliği oluşturur. Bu çerezler kullanıcı adı, parola vb. gibi hassas verileri içerebilir. Oturum, oturum veya tarayıcı kapatılarak sona erdirildiğinde, önceki çerezler geçersiz kılınmalıdır, yani her oturum için yeni bir çerez oluşturulmalıdır.
Oturum kapatıldığında çerezler geçersiz kılınmazsa, hassas veriler halen sistemde kalacaktır. Örneğin, halka açık bir internet kafede bilgisayar kullanan bir kullanıcı, -güvenlik açığı bulunan sitenin çerezleri sistemde halen bulunacağı için-, bir saldırgan tarafından istismar edilebilir. Saldırgan bir süre sonra aynı ortak bilgisayarı kullandığında hassas veriler tehlikede olabilir.
Aynı şekilde ortak bilgisayar kullanan bir kullanıcı, oturumu kapatmak yerine tarayıcıyı kapatıp çıktığında, saldırgan, savunmasız siteye göz atıp, kurbanın önceki oturumunun açık olduğunu görebilir. Saldırgan, kullanıcının profil bilgilerini, kredi kartı bilgilerini vb. çalabilir.
Muhtemel Saldırı Alanları:
-
URL'de gösterilen oturum kimlikleri, oturum sabitleme (Session Fixation) saldırısına neden olabilir.
-
Oturum açmadan önce ve sonra aynı olan Oturum kimlikleri.
-
Oturum Zaman Aşımları doğru şekilde uygulanmayan uygulamalar.
-
Her yeni oturum için aynı oturum kimliğini atamayan uygulamalar.
-
Oturum, düşük yetkili bir kullanıcı tarafından yeniden kullanılabilir.
Etkileri:
-
Bu güvenlik açığından yararlanan bir saldırgan, bir oturumu ele geçirebilir ve sisteme yetkisiz erişim sağlayabilir.
-
Oturum yetkisi, çalınan çerezler kullanılarak veya XSS ile yüksek seviyeye çıkarılabilir.
Örnekler:
-
Havayolu rezervasyonu uygulamasında oturum kimliği URL'de görülmektedir:
http://bookingair.com/sale/saleitems;jsessionid=MEOC2oJM0DPXS2P0PL3/dest=Antalya
Sitenin gerçek bir kullanıcısı, arkadaşlarına satış hakkında bilgi vermek istiyor ve bir e-posta gönderiyor. Bu e-posta kötü niyetli kişilerin eline geçtiğinde, oturum kimliği çalınabilir.
-
Saldırganın, XSS’e karşı savunmasız bir uygulamadan oturum kimlik bilgilerini XSS ile ele geçirip kullanması.
-
Uygulama zaman aşımları doğru ayarlanmamış uygulamalarda, kullanıcı genel bir bilgisayar kullanır ve oturumu kapatmak yerine tarayıcıyı kapatıp, uzaklaşır. Saldırgan bir süre sonra aynı tarayıcıyı kullanır ve açık oturumdan istediği değişiklikleri yapabilir veya bilgileri çalabilir.
Öneriler:
-
Tüm kimlik doğrulama ve oturum yönetimi gereksinimleri, OWASP Uygulama Güvenliği Doğrulama Standardına göre tanımlanmalıdır.
-
Kimlik bilgilerini asla URL'lerde veya Log’larda göstermeyin.
-
Oturum kimliklerini çalmak için kullanılabilecek XSS açıkları için de çok dikkatli olmak gerekir.
4. Güvenli Olmayan Doğrudan Nesne Referansları (Insecure Direct Object References)
Geliştirici, bir dosya, dizin veya veritabanı anahtarı gibi dahili nesnelere ulaşım için bir referansı URL’de açığa çıkardığında zafiyet de ortaya çıkar. Saldırgan bu bilgileri diğer nesnelere erişmek için kullanabilir ve yetkisiz verilere erişmek için bir saldırı oluşturabilir. Bu zafiyet gerçek kullanıcılar tarafından da istismar edilebilir, bu sebepten oturum açma yetkisi olan kullanıcılarda da bu açığa dikkat etmek gerekir.
Etkileri:
Bu güvenlik açığını kullanan bir saldırgan, yetkisiz dahili nesnelere erişim sağlayabilir, verileri değiştirebilir veya uygulamanın güvenliğini ihlal edebilir.
Muhtemel Saldırı Alanları:
-
Veritabanıyla etkileşime giren URL'ler.
Örnekler:
Aşağıdaki URL'deki "kullanıcı id – user_id" değiştirilerek diğer kullanıcıların bilgilerini görüntülemek mümkün olabilir.
http://www.website.com/user_id=789563
Öneriler:
-
Erişim kontrollerini sıkı bir şekilde uygulayın.
-
URL'lerde nesne referanslarını göstermekten kaçının.
-
Tüm referans nesneler için yetkilendirmeye göre doğrulama talep edin. User_id ile birlikte her kullanıcı için oluşturduğunuz bir user_token kullanabilrsiniz, bu sayede saldırgan user_id’yi değiştirse bile user_token tahmin edemeyeceği için bilgileri görüntüleyemeyecektir, aşağıdaki URL’yi inceleyin:
https://www.website.com/user_id=789563&user_token=14lxHK5f8Z6x6QunGaqduiPDoxcgMJtD
5. Siteler Arası İstek Sahteciliği (Cross Site Request Forgery)
Siteler Arası İstek Sahteciliği, siteler arası gerçekleştirilen bir sahte taleptir (http request). CSRF saldırısı, kötü amaçlı bir web sitesi, e-posta veya program vasıtasıyla kullanıcının tarayıcısının o anda kimliğini doğruladığı güvenilen bir sitede istenmeyen bir eylem gerçekleştirmesine neden olduğunda meydana gelir.
Bir CSRF saldırısında, oturum açmış bir kurbanın tarayıcısını, kişinin kimlik doğrulama bilgileri dahil olmak üzere tüm bilgilerini, savunmasız bir web uygulamasına sahte bir HTTP isteği göndermeye zorlar.
Örneğin, kullanıcının orijinal web sitesinde (Banka uygulaması olabilir) oturum açtığını ve aynı zamanda da maillerini kontrol ettiğini düşünelim. Maillerinden birinde nereden gönderildiği tam olarak bilinmeyen veya kendisi ile ilgili olduğunu düşündüğü zararlı bir linke tıkladığında, saldırgan tarafından hazırlanmış düzenek sayesinde yan sekmede açık olan orijinal web sitesinin kullanıcı bilgilerini çalabilir.
Sonuçlar:
Bu güvenlik açığı ile saldırgan, kullanıcı profili bilgilerini ele geçirebilir, istediği gibi değiştirebilir, yönetici adına yeni bir kullanıcı oluşturabilir vb.
Muhtemel Saldırı Alanları:
-
Kullanıcı Profili sayfaları
-
Kullanıcı hesap formları
-
Ticari işlem sayfaları
Örnekler:
Kurbanın, geçerli kimlik bilgilerini kullanarak bir bankanın web sitesinde oturum açtığını düşünelim. Aynı zamanda da maillerini kontrol ettiğini ve “Banka hesaplarınızda bir problem var, detaylar için lütfen tıklayın” yazan sanki kendi bankasından gönderilmiş gibi bir mail aldığını düşünelim.
Bu linke tıkladığında, bankanın başka bir hesaba para transferi yapan formunu iyice analiz etmiş ve buna göre bir talep oluşturmuş olan saldırganın linki çalışır; oturum doğrulandığından ve talep bankanın kendi web sitesinden geldiğinden dolayı, banka şüphelenmeden talebi işleme koyar ve saldırganın hesabına para aktarılır.
Öneriler:
-
Hassas eylemler gerçekleştirirken kullanıcının varlığını ispatlamasını zorunlu kılın.
-
CAPTCHA, Yeniden Kimlik Doğrulama ve Benzersiz İstek Belirteçleri (User Token) gibi mekanizmalar kullanın.