Web Uygulaması Güvenliği, bir web uygulamasının şunları yapmasını sağlayan sayısız güvenlik kontrolünden oluşur:
- Beklendiği gibi işlevler.
- Sınırların dışında faaliyet göstermek için istismar edilemez.
- Yapılmaması gereken işlemler başlatılamaz.
Web Uygulamaları, son yıllarda Sosyal Medya Platformlarının, E-Ticaret web sitelerinin ve e-posta istemcilerinin internet alanlarını doldurduğu Web 2.0’ın yaygınlaşmasıyla her yerde bulunur hale geldi.
Uygulamalar daha hassas ve kapsamlı verileri tüketip sakladıkça, saldırganlar için giderek daha çekici bir hedef haline geliyor.
Yaygın Saldırı Yöntemleri
Bu alanda bulunan en yaygın üç güvenlik açığı, Enjeksiyonlar (SQL, Uzaktan Kod), Şifreleme Hataları (önceden hassas verilerin açığa çıkması) ve Bozuk Erişim Kontrolü’dür (BAC). Bugün Enjeksiyonlara ve Kırık Erişim Kontrolüne odaklanacağız.
Enjeksiyonlar
SQL, kullanılan en yaygın Veritabanı yazılımıdır ve çok sayıda ödeme verisini, PII verilerini ve dahili iş kayıtlarını barındırır.
SQL Enjeksiyonu, görüntülenmesi amaçlanmayan bilgilere erişmek amacıyla arka uç veritabanı manipülasyonu için kötü amaçlı SQL kodu kullanan bir saldırıdır.
Bunun başlangıç noktası aşağıdaki gibi bir komuttur:
VEYA 1=1 her zaman DOĞRU olduğundan, bu “Kullanıcılar” tablosundaki TÜM satırları döndürecektir. Daha da ileri giderek, bu yöntem, varsa şifreleri de döndürecektir.
Büyük bir sosyal medya şirketine veya büyük bir e-ticaret şirketine böyle bir saldırının yapıldığını hayal edin ve tek bir komutla ne kadar hassas verinin alınabileceğini görmeye başlayın.
Bozuk Erişim Kontrolü
Kırık Erişim Kontrolü (BAC), OWASP sıralamasında beşinci sıradan en yaygın Web Uygulaması Güvenlik Riskleri sıralamasına yükseldi. OWASP’nin son testleri sırasında, Kırık Erişim Kontrolü ile eşlenen 34 Ortak Zayıflık Sayımı (CWE), uygulamalarda diğer tüm kategorilerden daha fazla meydana geldi.
En yaygın BAC türleri Dikey ve Yatay ayrıcalık yükseltmedir. Dikey ayrıcalık yükseltme, bir kullanıcının şunları yapabileceği durumlarda gerçekleşir: yükseltmek ayrıcalıklarına sahip olmaları ve eylemleri gerçekleştirmeleri için erişimlerinin olmaması gerekir.
Apache Yerel Ayrıcalık Artışı olan CVE-2019-0211. 2019’dan itibaren bu kritik güvenlik açığı, Unix sistemlerinde çalışan Apache HTTP sunucularını, özellikle de mod_prefork, mod_worker ve mod_event kitaplıklarını kullananları etkiledi.
Bu, saldırganlara ayrıcalıksız komut dosyalarını yürütme yeteneği kazandırdı ve bu da potansiyel olarak root erişimine ve paylaşılan barındırma hizmetlerinin tehlikeye atılmasına yol açtı. Bu kusurdan yararlanmak, Apache’nin çalışan süreçlerindeki paylaşılan bellek bölgelerinin manipülasyonunu gerektirir; bu, Apache’nin sorunsuz yeniden başlatılmasından önce yapılmalıdır.
Aşağıda POC kodunun ekran görüntüsü bulunmaktadır. Görüldüğü gibi, bu konuda belirli bir düzeyde teknik beceri gereklidir, ancak dikey ayrıcalık artışı, kullanıcının izinlerinin aşırı derecede müsamahakâr olması veya işten ayrıldıklarında iptal edilmemesi durumunda da aynı kolaylıkla gerçekleşebilir.
Bu bizi, BT dünyasının her yerinde yaygın olarak kullanılan ve web uygulamalarının ne kadar önemli hale geldiğinin farkına vardıkça artık daha yaygın hale gelen en az ayrıcalık ilkesine geri götürüyor.
Yatay Ayrıcalık Yükseltmesi, bir kullanıcının erişmesi gerekmeyen verilere erişim kazanması, ancak bu verilerin kendi izinleriyle aynı düzeyde tutulmasıdır. Bu, bir standart kullanıcının başka bir standart kullanıcının verilerine erişmesiyle görülebilir. Buna izin verilmemesi gerekirken, ayrıcalıklar dikey olarak artmıyor, yatay olarak yayılıyor. Bu bazen güvenlik sistemlerinde herhangi bir uyarı verilmeden gerçekleşebileceği için daha tehlikeli olarak görülür.
BAC’ın son birkaç yılda daha da yaygınlaşmasıyla birlikte şunu hatırlamak önemlidir:
- Yalnızca gizlemeye bağlı olmak erişim kontrolü için yeterli bir yöntem değildir.
- Bir kaynağın kamuya açık olması amaçlanmamışsa, varsayılan olarak erişimin reddedilmesi gerekir.
- Geliştiriciler, erişim reddini varsayılan ayar olarak kullanarak, kod düzeyinde her kaynak için izin verilen erişimi açıkça belirtmelidir.
En İyi Uygulamalar – Satır Aralarını Okuyun (kod!)
Güvenliği korumak için geliştiricilerin gelen verileri doğrulaması, veritabanlarıyla etkileşimde bulunurken parametreli sorgular uygulaması ve hassas verileri korumak için etkili oturum yönetimi yöntemleri uygulaması gerekir. Bunun büyük bir kısmı hem web tarayıcılarının güvenliğine hem de web içeriği sağlayan web sunucularının arka uç güvenliğine bağlıdır ve bu da web güvenliğinde görev ayrılığına yol açar.
Burada ortaya çıkan en büyük sorun, Web Uygulaması Güvenlik Duvarlarının (WAF’ler) bu riskleri azaltabilmesine rağmen, web içeriğinin güvenli bir şekilde uygulanmasına yönelik sorumluluğun büyük kısmının, bu siteleri bir araya getiren geliştiricilerin sorumluluğunda olmasıdır. Siber güvenlik çoğu zaman sonradan akla gelen bir düşünce haline gelebilir ve işlevsellik tercih edilir.
Pratik Örnek – Giriş Doğrulaması
Giriş Doğrulaması, bu örnekte SQL enjeksiyonlarını önlemek için güvenli kodlamayı uygulamanın en basit ve en etkili yoludur.
- Kullanıcı Girişi: Kullanıcı giriş sağlar, örneğin:
- Temizleme: Kullanıcı girişi doğrudan SQL sorgusuna eklenmez. Temizlenir ve SQL kodu olarak değil veri olarak ele alınır.
- Sorgu Yürütme: SQL sorgusu, parametre olarak kullanıcı girişiyle yürütülür:
- Bu nedenle sorgu arka uca aşağıdaki gibi girer:
Bu kodda, (user_input,) kullanıcının girişini içeren bir tanımlama grubudur. Veritabanı sürücüsü bu girdiden kaçma ve bu girdiyi doğru şekilde işlemeyle ilgilenir. Girişin yürütülebilir SQL kodu olarak değil, bir veri değeri olarak değerlendirilmesini sağlar.
Kullanıcı girişi “105 veya 1=1” gibi kötü amaçlı kod içeriyorsa SQL olarak yürütülmez. Bunun yerine, veritabanındaki UserId ile karşılaştırılacak bir değer olarak ele alınır.
Veritabanı sürücüsü, girişin kaçmasını otomatik olarak yöneterek, SQL sorgusunun yapısını etkilemesini veya güvenlik açıklarına neden olmasını önler.
Web Uygulaması Güvenlik Duvarları (WAF’ler)
WAF, OSI modelinin 7. katmanında çalışır ve ters proxy görevi görerek istemci trafiğinin arka uç sunucusuna girmeden önce WAF üzerinden geçmesini sağlar. WAF’taki kurallar veya politikalar, bu arka uç sunucularda bulunan belgelenmiş güvenlik açıklarına karşı koruma sağlar ve kötü amaçlı trafiği filtreler.
Piyasada çok sayıda WAF vardır ve bunların hepsi daha yeni saldırılara karşı güçlü bir savunma sağlayabilir ve derinlemesine savunma yaklaşımına iyi katkıda bulunabilir. Güvenli kodlama uygulaması, web uygulamasının temellerinin sağlam olmasını sağlayan bir şeydir. güvenlidir ve gelecekte daha karmaşık veya yeni saldırıların kurbanı olmayacaktır.
WAF’ler şu anda kötü niyetli tehditleri tespit etmek ve web sitelerine yönelik düşük çaba gerektiren saldırılar için kullanılan daha gelişmiş ‘bot’ların tehditlerini daha da azaltmak için davranışsal analiz teknolojilerini kullanan bir güvenlik modeli karışımına doğru ilerlemektedir.
WAF kullanmanın, eklenen gecikme süresi ve HTTP ek yükünün yanı sıra ana dezavantajı, bir WAF’ın, bir web uygulamasına karşı 0 günlük bir istismar kullanılarak atlanabilmesidir; bu, güvenli kodlama ve doğru temizlemenin, WAF’yi daha etkili bir şekilde azaltabilmesidir. tüm Web uygulaması güvenliğini bir WAF’a dengelemek. WAF’ın çözümün tamamı değil, yalnızca bir güvenlik katmanı olduğunu unutmamak önemlidir.
Olay Müdahalesi ve Kurtarma
SecurityHQ’nun saldırılara karşı önlem alma önerileri:
- WAF’ı ilk savunma hattı olarak kullanmak, işletmenin büyük hacimli saldırılara karşı savunma yapabilmesini sağlamak açısından kritik öneme sahiptir.
- Güncel ve güçlü standart algoritmaların ve protokollerin kullanıldığından emin olun; bu, uygun anahtar yönetimiyle eşleştirilmelidir.
- İletim halindeki verileri, ileri gizlilik (FS) şifreleri ve sunucu tarafından şifre önceliklendirmesi ile TLS gibi güvenli protokollerle şifreleyin. HTTP Strict Transport Security (HSTS) gibi yönergeleri kullanarak şifrelemeyi zorunlu kılın.
- Web sitelerinde bot yönetimi stratejilerini etkinleştirin ve belgelenmiş bir olay müdahale planına sahip olun.
- Web uygulamalarında yeni özelliklerin test edilmesine yönelik belgelenmiş bir süreçle güvenli geliştirme uygulamalarının mevcut olduğundan emin olun ve giriş doğrulamasının uygulandığından emin olun.
- Bu, en az ayrıcalık ilkesinin sağlanmasıyla birleştirilmelidir.
Bu tehditler hakkında daha fazla bilgi için buradan bir uzmanla görüşün. Veya bir güvenlik olayından şüpheleniyorsanız olayı buradan bildirebilirsiniz.
Not: Bu makale SecurityHQ Kıdemli Siber Güvenlik Müdürü Tim Chambers tarafından ustalıkla yazılmıştır.