Tavsiyemiz
Filtreler
Hizmet Kategorileri
Sağlık
blog-image tavsiyemiz

Web Uygulama Güvenliği Nedir? Popüler Açıkları Nelerdir?

Web Uygulama Güvenliği Nedir? Popüler Açıkları Nelerdir?

author
Gözen Esmer
29/10/2024

Herkese merhaba. Bu yazımda İngilizce Web Application Security olarak bilinen Web Uygulama Güvenliği’nden bahsedeceğim. Bu başlık altında aynı zamanda bu uygulamalara yönelik olan popüler açıklardan söz edip, nasıl önlem alınabilir? güvenliği nasıl sağlanır? gibi başlıklara da değinmeye çalışacağım.

 

Web Uygulama Güvenliği Nedir?


 


Öncelikle “web uygulamaları”nın neler olduğundan söz edelim. Web uygulamaları, internet ağı ile ulaşılan programlara genel olarak verilen isimdir. Geleneksel programlara göre daha pratik olan web uygulamaları yaygın şekilde kullanılmaktadır. Kurumlar açısından düşündüğümüz zaman web uygulamaları, kurumların dışarıya bakan yüzü olarak görülmelidir. Web uygulama güvenliği kavramı da, özellikle web siteleri, web uygulamalrı ve API*’ler gibi web hizmetlerini çevreleyen güvenlik ile ilgilenir.

 

*API: Uygulama programlama ara yüzüdür. Bir uygulamanın işlevlerine dışarıdan veya uzaktan erişilip bu işlevlerin kullanılmasını sağlayan ara yüzdür.

 

İnternetin yaygınlaşmasıyla beraber masaüstü uygulamaları yerine web uygulamaları kullanılmaya başlanmıştır. Web uygulamaları günlük hayatımızda önemli bir yer tutmakta, etkileşimli bir yapı ile resimler, videolar, sesli materyaller gibi zengin özellikler sunmaktadır.

 

Web uygulamalarında oluşan zafiyetlerin büyük bir nedeni, geliştirilen uygulamanın güvenlik bilgisinden yoksun kişilerin web uygulaması geliştirmesi gelmektedir. Geliştiricilerin, güvenliği bir kenara bırakıp ya da düşünmeden yazdıkları kodlamalar web uygulamalardaki açıkların büyük bir kısmını tetiklemektedir.

 

CENZIC’in “Uygulama Güvenlik Açıklığı Eğilimleri Raporu 2014” te, uygulamaların %96’sında bir ya da birden fazla ciddi açıklı bulunduğunu bildirmiştir.

 

Neden Web Uygulamalarına Yönelik Saldırılar Yapılıyor?


 

Bir önceki kısımda, kurumlar için web uygulamalarının dışarıya bakan yüzü olduğunu belirtmiştik. Saldırganlar, web uygulamalarına saldırarak kurumların iç ağlarına sızmayı, zarar vermeyi ya da para kazanma gibi birçok etkene umut bağlayarak saldırılar düzenlemektedir. Bir başka nedenleri ise;

 

Kurumsal uygulamaların, güvenlik ürünlerinin yönetimi web ara yüzleri ile yapılmaktadır. Bu da web uygulamalarına saldırıyı cazip kılmaktadır.

 

Eskiye göre daha sıklıkla kullanıldığı için atak yüzeyi daha da genişlemiştir.

 

Web uygulamaları artık gömülü yani statik değil daha kompleks bir yapıya sahiptir.

 

En önemli nedenlerden biri de kurumların çoğu genel olarak web uygulamalarına yönelik güvenlik testi yaptırmamaktadır. Burada oluşabilecek zafiyetleri bilemediklerinden dolayı web uygulama tarafı daha savunmasızdır.

 

En Çok Bilinen Web Uygulama Zafiyetleri

 

Genel olarak saldırılar web uygulamalarından gelmektedir. Web uygulama açıkları uygulama kodu açıkları, sunucu kaynaklı açıklar, iletişim altyapısı açıkları olarak ele alınabilir. İletişim altyapı açıkları olarak OSI modelinin iletişim katmanlarında (HTTP gibi) ortaya çıkan zafiyetlerdir. Bu başlıklar daha da arttırılabilir. Web uygulama zafiyeti olarak bilinen bazı zafiyetlerin neler olduğuna bakalım.

XSS

 

Cross Site Scripting olarak da bilinen açık tehlikeli bir güvenlik açığıdır. Farklı programlama dilleri ile geliştirilen birçok web uygulamasında bulunabilmektedir. Birazdan değineceğim OWASP 10 listesinde de bulunmaktadır. Bu açık, kullanıcıdan alınan verilerin kontrol edilmeden, filtrelenmeden html response olarak gönderilmesi sonucu oluşur. XSS zafiyeti sayesinde saldırganlar, kullanıcı tarayıcısında javascript çalıştırarak kullanıcı oturumunu çalabilirler.

 

XSS in 2-3 farklı türü bulunmaktadır. Sıklıkla kullanılan bir zafiyettir. Kontrol edilmeyen bir input, bütün uygulamanın ele geçirilmesine neden olabilir.

 


Injection Açıkları

 

Genellikle kullanıcıdan alınan, kontrol edilmeyen ya da önlem alınmayan verilerin, komut olarak çalıştırılması ya da sorguya dahil edilmesi yüzünden oluşur. Enjeksiyon saldırılarına örnek olarak, SQL, Command Injection, OS ve LDAP gösterilebilir.

Injection ataklarından SQL’e baktığımız zaman, hedef web sitesinin kullandığı veri tabanında yetki olmadan sql sorguları çalıştırılabilir. Örnek verecek olursak web sitelerinin admin login sayfasında herhangi bir sql açığı bulunuyorsa kısa bir betik ile “Admin’ ‘or’1=’1” login bypass edilebilmektedir. Bu betiğin anlamı sırasıyla yaptığı şey ise, kullanıcılar tablosuna gidip kullanıcı adı “Admin” olan kullanıcıyı bulur. Eğer öyle bir kullanıcı yok ise 1=1 in doğruluğuna bakıp login i bypass etmektedir. Saldırgan bu şekilde web sitenize sızdıktan sonra olacaklar hayal gücünüze kalmaktadır.

 

IDOR (Insecure Direct Object References)

 

Uygulamayı geliştiren kişinin uygulama içerisinde kullanılan dahili uygulama nesnelerine, uygun erişim kontrolü yapılmaması sonucu meydana gelmektedir. Saldırganlar yine verilere yetkisiz erişerek bu nesneleri değiştirebilmektedir.

Broken Authentication

 

Bu zafiyet genellikle, kimlik doğrulama ya da oturum yönetimi ile ilgili fonksiyonların yanlış uygulanması sonucunda ortaya çıkmaktadır. Saldırganlar, bu saldırı sonucunda session tokenları ele geçirebilir.

 

Insufficient Logging And Monitoring

 

Yeterli loglama ve monitoring işleminin yapılmaması büyük bir risk oluşturmaktadır. Girişler, başarısız giriş denemeleri, transferler ve önemli olan faaliyetler loglanmalı ve sürekli kontrol edilip gerektiği yerde yöneticiler uyarılmalıdır.

Diyelim ki web uygulamasına bir brute force saldırısı düzenlenmiştir. Eğer ki giriş denemeleri loglanır ve izlenirse, bu tür işlemlere ait loglar oluşacak ve alertler sistem adminleri tarafınca gözlemlenecektir. Bu şekilde planlanan saldırıların önüne geçilebilir.

Bu açıklar, Web Uygulama açıklarının sadece birkaçına örnektir. Her dönem bu açıklar güncellenmektedir. Bu güncellemeler OWASP kuruluşu tarafından yayınlanmaktadır.

 

OWASP 10 Nedir?

 

Owasp, web uygulama güvenliği ile ilgilenen, bu konuda makaleler, uygulamalar yazan kar amacı gütmeyen bir kuruluştur. http://owasp.org sitesinde, web uygulamalarındaki zafiyetleri, zafiyetlerin nasıl oluştuğunu, nasıl exploit edilebileceğini ve nasıl önlenebileceği ile ilgili çok güzel yazılar bulunmaktadır.

 

Owasp’ın bir başka güzel özelliği ise, birçok firma ve web uygulama sızma testleri ile ilgilenen kişilerden bilgi toplayarak o yıla ait en riskli 10 güvenlik zafiyetinin istatistiğini çıkarmaktadır. Bu istatistiğe de OWASP TOP 10 adı verilmektedir. Kurumlar, bu araştırmaya sonuçlarına bakarak nerelerden saldırı gelebileceğine, sızma testleri ekiplerine ise hangi zafiyetlerin üzerinde durmaları gerektiğine anlam katabilir. OWASP Top 10’in 2019 sonuçlarına baktığımız zaman;

Injection,

Broken Authentication,

Sensitive Data Exposure,

XML External Entities,

Broken Access Control,

Security Misconfiguration,

Cross-Site Scripting XSS,

Insecure Deserizalitaion,

Known Vulnerabilities,

Insufficient Logging & Monitoring

yer almaktadır. Daha detaylı incelemek isterseniz https://owasp.org/www-project-top-ten/ linkini ziyaret edebilirsiniz.

 

Web Uygulama Güvenliği Nasıl Sağlanmalıdır?

 

Web uygulama açıkları olsun, DDoS saldırıları olsun genel olarak bakıldığı zaman yüzde yüz güvenlikten kesinlikle söz edemeyiz. Güvenliği yüzde yüz sağlayamayız fakat önlemleri maksimum seviyeye çıkartabiliriz. Bütünsel bir güvenlik stratejisi izlenerek, önlemler alınmalıdır.

 

Web uygulama açıklarında örnek verdiğimiz zafiyetlere baktığımız zaman, çoğunun kullanıcıdan gelen verinin kontrol edilmemesinden dolayı ortaya çıktığını görmekteyiz. Bu nedenle her zaman kullanıcıdan gelen veriye güvenmemek gerekmektedir. Bir başka alınabilecek önlemleri şöyle sıralayabiliriz;

 

Kullanıcılara şifre ve kullanıcı adı sorarken, kesinlikle https protokolü kullanılmalıdır. Şifreler düz metin olarak saklanmamalıdır.

Oturum yönetimi açıkları için, cookieler “secure” olarak işaretlenmelidir. Protokol https dahi olsa cookie secure olmadığında cookie hırsızlığıyla oturum çalınabilir.

Şifre uzunluğu ve karmaşıklığı kuvvetli tutulmalıdır.

Web uygulaması geliştirilirken, uygulama kodunun güvenliği sağlanmalıdır. Diglossia, SWAP, PHAN gibi birçok metot kullanarak, kodun güvenliği sağlanabilir.

Saldırı tespit sistemleri IDS,IPS, SIEM gibi sistemler mutlaka kullanılmalıdır.

Aynı zamanda ESAPI (Enterprise Security API) kullanılarak, web uygulamaları için güvenlik kontrol kütüphanesi oluşturulmalıdır. Ücretsiz ve açık kaynak kodludur.

Pentest yapılırken mutlaka web uygulama testleri de yaptırılmalı, es geçilmemelidir. Bulunan zafiyetler de hızlıca kapatılmalıdır.

Her zaman güvenliği sonradan sağlamak yerine, güvenli kod geliştirilmesi daha iyi bir seçenektir.

Sonuç olarak bu yazımda, web uygulama açıklarının neden oluştuğuna, popüler güvenlik açıklarına ve güvenlik çözümlerine değinmeye çalıştım. Bir sonraki yazımda görüşmek üzere.