Infografik: 396 Açık Kaynak Kodlu Web Uygulamasını Taradık
2011 yılından bu yana 396 adet açık kaynak web uygulamasını taradık. Tarayıcılarımız bu uygulamalarda 269 güvenlik zafiyeti tespit etti ve bunlarla ilgili birisi 0-day olmak üzere 114 öneri yayınladık. Geçtiğimiz yıllardan bugüne kadar geçen süre içerisinde keşfedilen web güvenliği zafiyetlerini de araştırarak bazı istatistikler çıkardık. Popüler zafiyetlerle ilgili yaptığımız araştırmayı yazımızın devamında okuyabilirsiniz.
Netsparker ile taradığımız açık kaynak web uygulamalarında tespit ettiğimiz güvenlik zafiyetleri hakkında sık sık güvenlik bildirileri (advisory) yayınlıyoruz.
Örneğin bu sene içerisinde, popüler bir WordPress eklentisi olup 300.000'den fazla sitede kullanılan MailPoet uygulamasında XSS zafiyeti tespit ettik ve bununla ilgili güvenlik bildirisi yayınladık. Ayrıca internette yer alan websitelerinin yaklaşık %2'sinde kullanılan LiteSpeed web sunucusunda HTTP Header Injection zafiyeti bulduk. LiteSpeed'de bir zafiyet bulmak bizi oldukça heyecanlandırdı, çünkü bu zafiyet bir web uygulamasında değil, bir web sunucusunda bulunuyordu.
Zafiyetlerin Otomatik Olarak Belirlenmesi
Yukarıda bahsedilen iki güvenlik zafiyeti ve bugüne kadar yayınladığımız diğer zafiyetler, Netsparker Desktop ve Invicti Enterprise tarafından otomatik olarak tespit edilmiştir.
396 Açık Kaynak Uygulama Taramasından Derlediğimiz İstatistikler
2011 yılından bu yana 396 adet açık kaynak web uygulamasını taradık. Tarayıcılarımız bu uygulamalarda 269 güvenlik zafiyeti tespit etti ve bunlarla ilgili birisi 0-day olmak üzere 114 güvenlik bildirisi yayınladık. Bu istatistiklere göre, taradığımız açık kaynak web uygulamalarının yaklaşık %30'unda, bu uygulamalara direkt olarak etki eden güvenlik zafiyetleri tespit ettik.
Bu istatistikler, internette kullanılan web uygulamalarının sayıca ufak bir bölümünü baz alsa da, saldırganların birçok websitesine nasıl saldırılarda bulunabileceğine dair bizlere ipuçları vermekte. Aslında, düşündüğümüzde %30 oldukça düşük bir yüzde. Yıllardır araştırmacıların ve web güvenliği kuruluşlarının yayınladığı raporların büyük çoğunluğu, test edilmiş web uygulamalarının çok büyük bir yüzdesinin zafiyet barındırdığını söylüyor. Bu yüzdeler %60-%80 arasında değişiklik göstermektedir.
En Popüler 3 Web Uygulaması Zafiyeti Tipi
Netsparker web güvenlik tarayıcılarının tespit ettiği 269 zafiyet içindeki diğer zafiyet çeşitleri:
- Reflected, Stored, DOM Based XSS ve RFI tabanlı XSS'i içeren 180 XSS zafiyeti.
- Boolean ve Blind (Time Based) SQL Injection'ı içeren 55 SQL Injection zafiyeti.
- Remote ve Local olmak üzere 16 File Inclusion zafiyeti.
Bunların dışında kalan güvenlik zafiyetleri CSRF, Remote Command Execution, Command Injection, Open Redirection, HTTP Header Injection ve Frame Injection'dır.
XSS ve SQL Injection En Popüler Zafiyetler... Önceki Yıllarda Olduğu Gibi
XSS zafiyetleri, belirlenmiş zafiyetlerin %67'lik bir bölümünü, SQL Injection zafiyetleri ise %20'lik bir bölümünü oluşturmaktadır. Yani bu iki zafiyet tipi bütün tespit edilen güvenlik açıklarının %87'sine tekabül ediyor.
XSS ve SQL Injection zafiyetleri, OWASP Top 10 projesine ilk başladığında dahil edilmiştir. Çünkü bu zafiyetlerin büyük bölümü çok kolay bulunabilmekte ve aynı zamanda kolaylıkla istismar edilebilmektedir. Ayrıca, bu zafiyet tipleriyle ilgili yıllardan beri kullanıcıları bilinçlendirme eylemi devam etse de, günümüzde kullandığımız web uygulamalarının büyük bir bölümü halen bu zafiyetleri içermekte.
Neden XSS Zafiyetleri Web Uygulamalarındaki En Yaygın Zafiyet?
Veritabanları ile çalışırken, parametreli sorgular yardımıyla, yaygın olan bütün CRUD (create, read, update, delete) operasyonlarında SQL Injection saldırılarına karşı önlem almak çok kolaydır.
XSS enteresan bir nokta olmakla birlikte, günümüzün komplike web uygulamaları geliştiricilerin işini zorlaştırmaktadır. Geliştiriciler, XSS zafiyetlerine karşı güvenli kod yazabilmek için XSS saldırılarının bütün farklı türlerini bilmelidir. Bu türler anlaşılmadıkça ve bütün çıktı türlerine karşı (HTML, attribute, JavaScript, cilent-side template vs.) bir kütüphane yazılıp kullanılmadıkça, uygulamalarda daha az SQL Injection, daha fazla XSS zafiyeti eğilimi görmeye devam edeceğiz. Popüler inanışın aksine XSS zafiyetleri, en az SQL Injection zafiyetleri kadar tehlikelidir.
Taradığımız Uygulamalarda En Çok Kullanılan Diller
Taradığımız 396 açık kaynak web uygulamasının 326 tanesi PHP, 31 tanesi ASP/ASP.NET ile geliştirilmişti. Geriye kalan 39 uygulama ise Java, Ruby (Ruby on Rails) ve Python da dahil olmak üzere 10’dan fazla dille geliştirilmiş uygulamalardı.
Bu, PHP dilinin güvensiz olduğu anlamına gelmiyor. Biz genellikle açık kaynak web uygulamalarını tarıyoruz ve bu uygulamaların çoğunluğu PHP dili ile geliştiriliyor. Bu yüzden sayısal olarak PHP ile yazılmış uygulamaların çoğunlukta olması normal bir durum diyebiliriz. PHP’nin de diğer dillerde olduğu gibi kendi problemleri mevcut, fakat bu durum farklı bir blog yazısının konusu :)
Daha Güvenli Web Uygulamaları Oluşturmak
2013 yılında tespit edip yayınladığımız zafiyetlerin istatistiğinin yer aldığı infografikte, XSS ve SQL Injection zafiyetleri listenin başını çekiyordu. Aradan 3 yıl geçmiş olmasına rağmen, bu liste hemen hemen hiç değişmedi. Ne yazık ki, web uygulaması güvenliğinde birçok faktör olduğu için, birçok geliştirici gerçek anlamda güvenli kod yazamıyor. Yine de eğer XSS, SQL Injection zafiyetlerine karşı odaklanırlarsa, 2018 istatistikleri biraz daha farklı olacaktır. En azından daha iyi olmasını umuyoruz.
Ücretsiz Invicti Enterprise Taraması
Özgür yazılım geliştiricilerine daha güvenli kod yazmaları konusunda yardımcı olabileceğimiz fikri bizi mutlu ediyor. Bu yüzden bütün özgür yazılım projelerinizi taramanız için sizlere Invicti Enterprise’u sunuyoruz, hiçbir ücret ödemeden ve tamamen koşulsuz.
Eğer özgür yazılım kapsamında bir web projesiyle ilgileniyorsanız, bu fırsatı kaçırmayın ve bizimle iletişime geçin. Bundan sonra geliştireceğiniz güvenli web uygulamaları, geceleri daha iyi uyumanızı sağlayacak.