EN YAYGIN GÜVENLİK AÇIKLARI | Aslan Neferler
top of page
956-web-guvenlik.jpg

Web Dünyasındaki En Yaygın 10 Güvenlik Açığı

OWASP (Open Web Application Security Project - Açık Web Uygulama Güvenliği Projesi), yazılım ve web uygulamalarının güvenliğini artırmaya hedefleyen, kar amacı gütmeyen bir kuruluştur.

Çeşitli güvenlik kuruluşlarından gelen verilere dayalı olarak en önemli web güvenlik açıklarının bir listesini yayınlar.

Web güvenlik açıkları, güvenlik açığının istismar edilebilmesinin kolaylık derecesi, tespit edilebilirlik ve yazılım üzerindeki etkisine göre önceliklendirilir.

  • Facebook
  • Twitter
  • LinkedIn
  • Instagram

İÇERİK DETAYI

  • Güvenlik açığının istismar edilebilmesinin kolaylık derecesi (Exploitability): Güvenlik açığını istismar edebilmek için ne gerekli? Saldırının gerçekleştirilebilmesi için sadece web tarayıcısı gerekiyorsa yüksek, gelişmiş programlama ve gelişmiş araçlar gerekiyorsa düşük exploitability var demektir.

  • Tespit edilebilirlik (Detectability): Tehdidi tespit edebilmek kolay mı? Açığı tespit etmek için sadece URL, Form veya Hata mesajında ​​görüntülenen bilgiler gerekiyorsa yüksek, kaynak kodunun incelenmesi gerekiyorsa düşük detectability var demektir.

  • Etki veya Hasar: Güvenlik açığı ortaya çıktığında veya saldırıya uğradığında sisteme ne kadar zarar verecek? Sistemin çökmesi ile sonuçlanıyorsa yüksek, herhangi bir zarar vermiyorsa düşük etki veya hasar var demektir.

OWASP’ın açıkladığı en bilinen 10 güvenlik açığının temel amacı, geliştiricileri, tasarımcıları, yöneticileri, mimarları ve kuruluşları en önemli güvenlik açıkları konusunda eğitmektir.

1. SQL Enjeksiyonu (SQL Injection)

SQL Enjeksiyonu, bir saldırganın kullanıcı tarafından sağlanan verileri manipüle ederek arka uç SQL ifadelerini değiştirmesine olanak tanıyan bir güvenlik açığıdır.

Enjeksiyon, kullanıcı girdisi komut veya sorgunun bir parçası olarak bir yorumlayıcıya gönderildiğinde ve yorumlayıcıyı istenmeyen komutları yürütmesi için kandırdığında ve yetkisiz verilere erişim sağladığında meydana gelir.

Etkileri:

  • Bir saldırgan, savunmasız alanlara kötü amaçlı içerikleri enjekte edebilir.

  • Kullanıcı Adları, Parolalar vb. Gibi hassas veriler veritabanından okunabilir.

  • Veritabanı verileri değiştirilebilir (Ekle / Güncelle / Sil).

  • Veritabanı üzerinde yönetim işlemleri yapılabilir.

Muhtemel Saldırı Alanları:

  • Giriş Alanları (Oturum Açma, Kayıt, Mesaj, Yorum Alanları)

  • Veritabanıyla etkileşime giren URL'ler.

Örnekler:

  • Oturum Açma Sayfasında SQL enjeksiyonu. Geçerli kimlik bilgilerine sahip olmadan bir uygulamada oturum açma.

Oturum açma bilgilerinden "Kullanıcı Adı" tespit edildiyse ve gerekli önlem alınmadıysa, aşağıdaki bilgi "Şifre" kısmına yazılarak, gönderilen verinin veritabanında eşleşmesi sağlanabilir; bu durumda yazılan şifre SQL ile veritabanında kontrol edildiğinde zafiyet kullanılmış olur.

Kullanıcı adı: kullanici

Şifre: 1=1’ or pass123

Bu durumda muhtemel SQL şu şekilde olacaktır.

SELECT * FROM Users WHERE User_Name = kullanici AND Password = 1=1' or pass123;

Bu durumda kesme işaretinden sonraki bölümü dikkate almayacak ve 1=1 ibaresi TRUE olacağı için de sisteme girişe izin verecektir.

Öneriler:

  • Giriş alanları için beyaz liste (Sadece kabul edilecek veri tipi ve özelliklerini içeren liste) oluşturun.

  • Saldırgan için yararlı olabilecek ayrıntılı hata mesajlarını görüntülemekten kaçının.

2. Siteler Arası Komut (Cross Site Scripting)

Siteler Arası Komut (Cross Site Scripting) kısaca XSS olarak bilinir.

XSS güvenlik açıkları, istemci tarafında, yani sunucu tarafında değil, kullanıcı tarayıcısında yürütülen bir sayfaya gömülü komut dosyalarını çalıştırmayı hedefler. Bu açıklar, güvenilmeyen verilerin alınıp uygun doğrulama olmadan web tarayıcısına gönderildiğinde ortaya çıkabilir. Tarayıcı komut dosyasının güvenilir olup olmadığını bilemeyeceği için komut dosyası çalıştırılır ve saldırgan oturum tanımlama bilgilerini ele geçirebilir, web sitelerini tahrif edebilir veya kullanıcıyı istenmeyen ve kötü niyetli web sitelerine yönlendirebilir.

XSS, saldırganın komut dosyalarını kurbanın tarayıcısında çalıştırmasına izin veren bir saldırı türüdür.

Etkileri:

Bu güvenlik açığından yararlanan bir saldırgan, uygulamaya komut dosyaları ekleyebilir, oturum tanımlama bilgilerini çalabilir, web sitelerini tahrif edebilir ve kurbanın makinelerinde kötü amaçlı yazılım çalıştırabilir.

Muhtemel Saldırı Alanları:

  • Giriş Alanları (Oturum Açma, Kayıt, Mesaj, Yorum Alanları)

  • Veritabanıyla etkileşime giren URL'ler.

Örnekler:

1. http://www.yoursite.com/anasayfa? "< script > alert (" you are hacked! ")

Yukarıdaki komut dosyası bir tarayıcıda çalıştırıldığında, site XSS'ye açıksa bir mesaj kutusu görüntülenir. Daha ciddi saldırılarda, oturum tanımlama bilgileri görüntülenebilir veya depolanabilir.

2. http://www.yoursite.com/search.php?txtSearch< iframe>< /iframe> < src 500="" google.com="" height="" width="500" >

Yukarıdaki komut dosyası çalıştırıldığında, tarayıcı http://google.com'u gösteren bir “iframe” yükleyecektir.

Öneriler:

  • Giriş alanları için beyaz liste (Sadece kabul edilecek veri tipi ve özelliklerini içeren liste) oluşturun.

  • Giriş Çıkış verilerinin temizlenerek gönderilmesini (Sanitize) sağlayın.

3. 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:

  1. 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.

  1. Saldırganın, XSS’e karşı savunmasız bir uygulamadan oturum kimlik bilgilerini XSS ile ele geçirip kullanması.

  2. 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.

6. Yanlış Güvenlik Yapılandırması (Security Misconfiguration)

Güvenlik Yapılandırması, uygulamalar, uygulama sunucusu, web sunucusu, veritabanı sunucusu ve platform için tanımlanmalı ve dağıtılmalıdır. Bunlar doğru şekilde yapılandırılmadığında, saldırganın hassas verilere veya işlevlere yetkisiz erişime sahip olması mümkün olabilir.

Bazen bu tür kusurlar, sistemin tamamen çökmesine bile sebep olabilir. Platformlarda ve sunucularda kullanılan yazılımın güncel tutulması da iyi bir güvenliktir.

Etkileri:

Bu güvenlik açığından yararlanan saldırgan, kullanılan teknolojiyi ve uygulama sunucusunun bilgilerini (sürüm bilgileri, veritabanı bilgileri vb.) görüntüleyebilir ve saldırı gerçekleştirmek için uygulama hakkında bilgi edinebilir.

Muhtemel Saldırı Alanları:

  • URL

  • Form Alanları

  • Giriş alanları

Örnekler:

  • Uygulama sunucusu yönetici konsolu otomatik olarak yüklenebilir. Varsayılan hesaplar değiştirilmez. Saldırgan, varsayılan parolalarla oturum açabilir ve yetkisiz erişim elde edebilir.

  • Sunucunuzda Dizin Listeleme devre dışı bırakılmamışsa saldırgan herhangi bir dosyayı bulmak için dizinleri listeleyebilir.

Öneriler:

  • Bileşenleri birbirinden ayıran ve güvenlik sağlayan güçlü uygulama mimarisi oluşturun.

  • Varsayılan kullanıcı adlarını ve şifreleri değiştirin.

  • Dizin listelerini devre dışı bırakın ve erişim kontrol denetimlerini uygulayın.

7. Güvensiz Kriptografik Depolama (Insecure Cryptographic Storage)

Güvensiz Kriptografik depolama, hassas verilerin güvenli bir şekilde depolanmadığı zaman ortaya çıkan yaygın bir güvenlik açığıdır.

Kullanıcı kimlik bilgileri, profil bilgileri, sağlık bilgileri, kredi kartı bilgileri vb. hassas verilerdir. Bu veriler, uygulama veritabanında saklanabilir. Bu veriler, şifreleme veya karma oluşturma (Hash) kullanılmayarak uygunsuz bir şekilde depolandığında, saldırganlara karşı savunmasız olacaktır.

Etkileri:

Bir saldırgan bu güvenlik açığını kullanarak,  kimlik hırsızlığı, kredi kartı dolandırıcılığı veya diğer suçları gerçekleştirmek için bu tür zayıf korunan verileri çalabilir, değiştirebilir.

Muhtemel Saldırı Alanları:

  • Uygulama veritabanı.

Örnekler:

Bir uygulama kullanıcıların şifrelerini salt (Salt, orijinal verilere eklenen rastgele bir veridir. Hashing işleminden önce şifreye eklenir ve şifrenin tahmin edilmesini zorlaştırır) ve hash olmadan saklar. Saldırgan, SQL enjeksiyonu (SQL Injection) saldırısı ile parola dosyasına erişim sağlar. Salt ve Hash uygulanmamış şifreler kaba kuvvet ile (Brute Force) ile kolayca tespit edilebilirken, salt ve hash yapılmış şifrelerini çözümlenmesi yıllar sürebilir.

Öneriler:

  • Hassas bilgilerde şifreleme yaparken uygun güçlü standart algoritmalar kullanın. Kendi şifreleme algoritmalarınızı kullanmayın. Yalnızca AES, RSA genel anahtar şifreleme ve SHA-256 gibi onaylanmış genel algoritmaları kullanın.

  • Site dışı yedeklemelerin şifreli olduğundan, ancak anahtarların ayrı olarak yönetildiğinden ve yedeklendiğinden emin olun.

8. URL Tabanlı Erişimi kısıtlayamama (Failure to restrict URL Access)

Web uygulamaları, korumalı bağlantıları ve düğmeleri işleme alamadan önce URL erişim haklarını kontrol eder. Uygulamaların, bu sayfalara her erişildiğinde benzer erişim kontrollerini gerçekleştirmesi gerekir.

Uygulamaların çoğunda ayrıcalıklı sayfalar, konumlar ve kaynaklar kullanıcılara sunulmaz. Fakat incelemeler sonrası iyi bir tahminle, bir saldırgan ayrıcalıklı sayfalara erişebilir, işlevleri çalıştırabilir ve gizli bilgileri görüntüleyebilir.

Etkileri:

  • Bu güvenlik açığı ile saldırgan uygulamaya giriş yapmadan yetkisiz URL'lere erişim sağlayabilir, özel sayfalara erişebilir, işlevleri çalıştırabilir ve gizli bilgileri görüntüleyebilir.

Muhtemel Saldırı Alanları:

  • URL'ler

Örnekler:

  • Saldırgan, URL'nin kullanıcı rolünü "/kullanici/detaylar" olarak gösterdiğini fark eder. "/admin/detaylar" olarak değiştirerek yetkisiz olduğu admin sayfalarına erişim sağlayabilir.

Öneriler:

  • Güçlü erişim kontrolleri uygulayın.

  • Kimlik doğrulama ve yetkilendirme politikaları rol tabanlı olmalıdır.

  • İstenmeyen URL'lere erişimi kısıtlayın.

9. Yetersiz Taşıma Katmanı Koruması (Insufficient Transport Layer Protection)

Kullanıcı (istemci) ve sunucu arasındaki bilgi alışverişi ile ilgili bir zafiyettir. Uygulamalar genellikle bir ağ üzerinden kimlik doğrulama ayrıntıları, kredi kartı bilgileri, oturum bilgileri gibi hassas bilgileri iletir.

Uygulama üzerinde zayıf algoritmalar kullanmak veya süresi dolmuş veya geçersiz sertifikalar kullanmak veya SSL kullanmamak, iletişimin güvenilmeyen kullanıcılara açık olmasına izin verebilir, bu da web uygulamasının güvenliğini tehlikeye atabilir.

Etkileri:

  • Bu web güvenlik açığından yararlanan bir saldırgan, gerçek kullanıcının kimlik bilgilerini ele geçirip uygulamaya erişim sağlayabilir.

  • Kredi kartı bilgileri çalınabilir.

Muhtemel Saldırı Alanları:

  • Ağ üzerinden gönderilen veriler.

Öneriler:

  • Güvenli HTTP'yi etkinleştirin ve yalnızca HTTPS üzerinden kimlik bilgisi aktarımını zorunlu kılın.

  • Sertifikanızın geçerli olduğundan ve süresinin dolmadığından emin olun.

Örnekler:

SSL kullanılmayan bir uygulamada, saldırgan sadece ağ trafiğini izleyerek kimliği doğrulanmış bir kurbanın oturum çerezini elde edebilir. Bu çerez çalınarak “Ortadaki Adam – Man In The Middle” saldırısı gerçekleştirilebilir.

10. Doğrulanmamış Yönlendirmeler (Unvalidated Redirects and Forwards)

Web uygulamalarında, kullanıcıları başka sayfalara yönlendirmek için birkaç yöntem kullanılır. Başka sayfalara yönlendirilirken uygun bir doğrulama yoksa, saldırganlar bunu kullanarak kurbanlarını kimlik avı veya kötü amaçlı yazılım sitelerine yönlendirebilir veya yetkisiz sayfalara erişmek için yönlendirmeleri kullanabilir.

Etkileri:

Saldırgan, kullanıcıya kodlanmış kötü amaçlı URL eklenmiş gerçek bir URL gönderebilir. Kullanıcı, saldırganın gönderdiği URL'nin yalnızca ilk kısmına bakar ve kurban olabilir.

Örnekler:

http://www.website.com/login.php?redirectURL=digersite.com

Bu şekle çevrilebilir:

http://www.website.com/login.php?redirectURL=tehlikelisite.com

Öneriler:

  • Uygulamalarınızda yönlendirmeleri kullanmaktan kaçının. Kullanılacaksa bile varış yerinin hesaplanmasında kullanıcı parametrelerinin kullanılmasına dikkat edin.

  • Hedef parametreler olmak zorundaysa, sağlanan değerin geçerli ve kullanıcı için yetkilendirilmiş olduğundan emin olun.

Contact

BİZİMLE FACEBOOK VE İNSTAGRAM SAYFALARINA YAZARAKTA İLETİŞİME GEÇEBİLİRSİNİZ

bottom of page