Holy Application Security! Uygulama ve Yazılım Güvenliğinde Bilinen tüm Tehdit Noktalarının Güvenliği |TR
Uygulama güvenliği, uygulamaların ve kullandıkları protokollerin korunmasını, bu uygulamaların modüler bileşenlerini, bu bileşenlerin uyarlanmış güvenlik teknolojilerini ve bunları kullanan kurumsal uygulamaların güvenliğini sağlar. Uygulama güvenliği, uygulamaların ve protokollerin iç işleyişini, veri akış ve kontrollerini, işleyişinden doğan kusurları belirleyip, sömürü metod ve prensiblerini anlayarak bu uygulamaların korunmasına odaklanmıştır. Uygulama güvenliğinin önemli bir yönü prosedürdür. Örneğin, geliştiricilerin, özel iş uygulamalarının, BoF( Buffer Overflow), SQLi (SQL Injection) veya siteler arası komut dosyası oluşturma gibi bilinen saldırılara karşı savunmasız kalmamasını sağlamak için güvenli uygulama geliştirme yöntemlerini kullanması gerekir.
Uygulama Güvenliğinin iç ve dış korunma çözümleri ile ilgili gerekliliklerini “ Enterprise Cybersecurity” kitabında yapılan mükemmel inceleme başlıklarını temel alarak açıklayalım. Bu başlıklar Uygulama Güvenliğinin Kurumsal bazda hem bir Uygulamanın iç güvenlik adımlarını hemde olası koşullar altında riske gireceği adımları niteleyebileceğimiz genel gereklilik ve önlemleri ele alıyor;
AS-01: Secure Application and Database Software Development
Yazılım geliştirme aşamalarında S-SDLC( Güvenli Yazılım Geliştirme Yaşam Döngüsü) ve Agile, Dev-Ops gibi prensip ve metodolojilerde kullanılan adımların yazılım projelerinin geliştirim aşamasında güvenlik yöntemlerinin ve denetimlerinin etkili oluşu hem projenin seyrinin hemde product’a çıktıktan sonra oluşacak zaman, maliyet ve negative reputation yönünden doldurulamaz ve geri dönülemez bir durumun içinde bulunmaktan hem projeyi hemde kurumu kurtaracaktır. Bir kuruluşun “Kale Duvarları” ne kadar güçlendirilmiş olursa olsun, uygulamada bilinen güvenlik açıklarına(Non-ZeroDay Vuln.) sahipse, kötü niyetli bir saldırganın güvenlik kontrollerini atlaması her zaman ihtimal dahilinde olacaktır. Yazılım geliştiricilerine güvenli uygulamaların nasıl oluşturulacağı konusunda rehberlik etmek için ortak güvenlik standartları mevcuttur.
AS-02: Software Code Vulnerability Analysis
Here We Come !
Ana konumuza gelecek olursak Yazılım Kaynak Kodlarının Güvenlik Zafiyet Analiz’lerinin yapılması öncelikle neden önemlidir buna değinmeliyiz.
Uygulama Güvenliğinde bazı zafiyet tespit ve tarama teknolojileri vardır. Bunlar; SAST (Static Application Security Testing), DAST (Dynamic Application Security Testing), IAST (Interactive Application Security Testing) ve OAST (Out-of-band Application Security Testing) olarak ayrılmaktadır. Ilerde bu teknolojiler içinde bir makale yayınlıyor olacağım. Ancak şuan ilk adımda SAST konusuna değinelim.
Birçok yazılım projesinde özellikle Uygulama tabanlı projelerde yazılımdan doğan kusurların ilk aşamada tamamlanması en önemli konulardandır. Birçok Yazılım Dilinin gerek yapısı gerekse kullanım metodları bakımından doğan ana zafiyetler dışında doğan zafiyetlerin başlıca nedenleri Yazılım ekiplerinin Güvenli Yazılım bilgi eksikliklerinden kaynaklanmaktadır. Bu konuda ekipler kendilerini sürekli eğitmeli, OWASP ve SANS gibi kuruluşların yayınladığı Secure Code Practice benzeri dokümanlardan faydalanmalıdır. Yazılım Güvenliğinde doğan temel kusurlara karşı önlem alınması gereken birimler;
- Input Doğrulama
- Output Encode Etme
- Kimlik Doğrulama ve Şifre Yönetimi
- Session(Oturum) Kontrolleri
- Access Kontrolleri
- Kriptografik Pratikler
- Hataların Ele alınması ve Işlenmesi ile Loglama
- Veri Güvenliği
- Iletişim Güvenliği
- Sistem Konfigürasyonları ve Yamalandırma
- Database Güvenliği
- Dosya Yönetimi
- Memory Alan Yönetimi
- Genel Kodlama Pratikleri
AS-03: Application Firewalls
Uygulama güvenlik duvarları bazen uygulama düzeyinde çalışan proxy olarak bilinirler. Bu güvenlik duvarları, veri paketlerini denetler ve veri paketlerinin içeriğine göre inceleyerek kararlar alırlar. Adından da anlaşılacağı gibi, bu güvenlik duvarları uygulama katmanında çalışır. Uygulama başına atanmış bir vekil genellikle gereklidir.
AS-04: Database Firewalls
Database Firewall, iç ve dış saldırıların veritabanı ile etkileşim kurmasını önlemesine yardımcı olarak veritabanlarının güvenliğinin ilk adımını sağlar. SQLi saldırıları gibi database’i etkileyecek saldırıları temel alın teknikleri tespit ve engellemesini sağlayarak korunmasını sağlar. Fakat yinede ilk adımda bu gibi engelleme yöntemleri olsada en önemli nokta Input Sanatization and Validation olacaktır.
AS-05: Forward Proxy and Web Filters
Forward proxy, Internet’e erişen internal clientlardan giden istekleri işler. Örneğin, bir Forward proxy, dahili web tarayıcıları adına web isteği trafiğini maskeler ve işler. Web içeriği filtrelemesini kullanmak için web filtreleri (veya web proxy’leri) tercih edilir. Bu iki sınır çizgisi Uygulama’lara ulaşabilirliği ve belirlenen politikalar kapsamında ihlal sınırlarının aşılmamasına katkıda bulunuyor.
AS-06: Reverse Proxy
Reverse Proxy (ters vekil sunucu),Client ile Suncu arasındaki istemci isteklerini alarak, onları diğer sunuculara göndererek dağıtımını sağlayan ve ilgili sunucunun kendisinden sanki gönderilmiş gibi Responce’ları client’lara ileten bir temas noktasıdır. DDoS ve DoS gibi saldırılara karşı veya Load Balancing gibi dengelemeleri sağlarken kullanılacağı durumalarda da oldukça fayda sağlar.
AS-07: Data Leakage Protection (DLP)
DLP, kurumdaki verilerin izinsiz erişimlere karşı korunmasını, saldırı öncesi ve sonrasında Veri ihlal ve sızıntılarını engellemek için geliştirilmiş bir çözümdür. Hassas veriler sınıflandırılması belirlendikten sonra, DLP’nin erişim ağı kapsamında etkileşimde olduğu Client ve Bölgelerde yetkisiz bir girişim olduğunda devreye girer.
AS-08: E-mail Security
E-posta en yaygın iş ve kişisel iletişim biçimlerinden biridir. Bir e-posta iletisini spoofing, tampering, phishing, vb. tekniklerle tehlikeye atmak nispeten kolaydır. İyi bir güvenlik programı, e-posta sistemlerini ve taşıdıkları mesajları korumak için güvenlik yeteneklerini kullanır. Dağıtılan e-posta güvenlik koruma özelliklerinden bazıları arasında spam filtreleme, e-posta engelleme, e-posta yönlendirme, özel kötü amaçlı yazılım tespit imzaları, malware yazılım ekleri taraması, e-posta şifreleme, e-posta kimlik doğrulaması, e-posta arşivleme ve içerik filtrelemedir.
AS-09: Webshell Detection
Webshell, saldırganların belirli bir güvenlik zafiyetini istismar ederek güvenliği ihlal edilmiş bir web sunucusu ile kurdukları bir web kabuğudur. Web kabuğu ile saldırganlar yetkinlikleri dahilinde tüm isteği komut betiklerini sorgulayabilir ve çalıştırabilir. Web kabuğunun bulunması çok zor olabilir. Webshell tespiti, saldırganın aktivitelerinin SOC ekiplerince veya Anomali tespit sistem ve yöntemleri ile tespitini sağlayabiliriz.