Yazılım Güvenliği

   YAZILIM GÜVENLİĞİ (SOFTWARE SECURITY)

Yazılım Güvenliği

Genel anlamda güvenlik , “risk veya tehditten uzak olma vaziyetidir”. Özellikle yazılım sistemlerinin güvenliği geniş bir mevzudur.

Fotoğraf 7: Yazılım Güvenliği, https://bit.ly/3hIZw0V 2021

 Yazılım güvenliği, yazılım sistemlerini güvenlik sarihlerinden değerlendiren, eksilten ve gözeten tekniklerin uygulanmasıdır. Bu teknikler, yazılımın çalışmaya devam etmesini ve ataklara karşı tehlikesiz olmasını sağlar. Tehlikesiz yazılım geliştirmek, yaşam döngüsünün her düzeyinde güvenliği dikkate almayı içerir. Ana emel, hataları ve hataları olabildiğince erken tespit etmektir.

1Yazılım Güvenliği Teknikleri

Yazılım geliştirmeye yazılım güvenliği tekniklerini uygulamak daha yüksek nitelik seviyeleri sağlar Daha tehlikesiz yazılımlar doğru ve öngörülebilir tavra sahiptir.

Gary McGraw, Software Security: Building Security In kitabında yedi en iyi uygulama sunuyor. Bu çerçeve, yazılımınızın güvenliğini sağlamaya harika bir giriş niteliğindedir.

·         Hataları, güvenlik açıklarını ve zayıflıkları bulmak için araçları kullanarak kod incelemesi

  • Kusurları belirlemek için mimari risk analizi
  • Penetrasyon testi
  • Risk tabanlı güvenlik testi
  • Bir sistemin saldırı altında nasıl davrandığını incelemek için kötüye kullanım vakaları
  • Güvenlik gereksinimleri
  • Güvenlik işlemleri
  • Bu tür bir çerçevede aşağıdakiler gibi birçok teknik uygulanabilir:
  • Savunma programlama
  • Güvenli kodlama
  • Tehdit modelleme (ör. STRIDE )
  • Saldırı yüzeyinizi anlamak
  • Korumalı alan oluşturma
  • Kod denetimi
  • Uygulama güvenliği (ör. OWASP Top Ten)

DevSecOps

DevSecOps, güvenliğin DevOps yaklaşımına derinlemesine geçimidir. Güvenlik takımlarının ve geliştiricilerin, yazılım güvenliği tahlilini daha evvel ve yazılım geliştirme yaşam döngüsü süresince otomatikleştirerek " sola " kaymasını sağlar.

DevSecOps, geliştiriciler ve BT harekâtları için kullanılan DevOps uygulamalarına güvenlik sunar. Güvenlik kontrolleri, derleme boru hatları ve CI / CD iş akışları gibi süreçlere dâhil edilmiştir. Bu uygulamalar anında geri bildirim döngüleri sağlar. Bu anlayışta güvenlik herkesin sorumluluğudur.

Güvenlik Testi

Otomatik güvenlik testi ve güvenlik tahlili teknikleri, DevSecOps‘ un bir parçasıdır. Bunlar, Değişmez Uygulama Güvenliği Testi SAST ve Zinde Uygulama Güvenliği Testini DAST içerir. SAST vasıtaları, derlenmeden evvel bir uygulamanın kaynak kodunu tahlil eder. DAST vasıtaları, güvenlik sarihlerini tanımlamak için çalışan uygulama ile bağlantı kurar.

Güvenlik testi taşıtlarını aralıksız çalıştırmak en iyi uygulamadır. Geleneksel süreçler, büyük bir sürümden evvel güvenlik testine odaklanır. Korunma sanayiindeki ortaklaşa güvenlik anlayışı sola kayıyor. DevSecOps’ un özümsenmesi çoğalıyor ve aralıksız güvenliğin reele dönüşmesini sağlıyor.

(Medium Web Sitesi, https://bit.ly/33nw0VO ,2021).

Güvenli Yazılım Geliştirme Yaşam Döngüsü



Yazılım geliştirme modellerine genel olarak bakıldığında gerçeğinde hepsinin temelinde, “Tehlikesiz Yazılım Geliştirme Yaşam Döngüsünün” yer aldığı görülmektedir.

Şekil 17'den de takip edilebileceği gibi eğitim ve farkındalığın geliştirilmesi, döngünün başlangıcı olup bütün süreç boyunca devam eden en önemli unsurdur. Bu aşamada, tehditlerin belirlenmesi, güvenli tasarım ve güvenlik testleri konusunda geliştiriciler eğitilmediler. İhtiyaç analizleri aşamasında yazılımın geliştirilmesi, güvenlik ve test için kontroller yapılmalı ve sonuçları analiz edilmelidir. Tasarım ve risk analizinde güvenlik açısından belirlenen kriterler uygunluk, tehdit modelleme, gizlilik risk analizi gibi kontroller yapılır. Geliştirme sırasında belirlenen güvenlik kıstas uyulmalı, kaynak kod analizlerinden faydalanılmalıdır. Doğrulama düzeyinde oluşturulmak istenen ürün/yazılım tamlık, saklılık ve ulaşılabilirlik istikametlerinden bir ekip testlere tabi yakalanarak kodun eminliği sağlanmasına ve kod yanılgılarından oluşabilecek sarihlerin önlenmesine çalışılır. Devreye alım artık son ürünün piyasaya sürüldüğü ve kullanıcının bilgilendirildiği düzeydir. Yazılım geliştirme sürecinin tehlikesiz bir biçimde yapılıp yapılmadığı bu evreden sonra kollanabilmektedir. Açıklık yönetimi ve geri dönüş safhası ise kullanıcılardan yapılan geri dönüşlerin değerlendirildiği ve bu değerlendirmelerden netice çıkarımlarının yapıldığı düzeydir. Bu neticeler farkındalık eğitimi için kaynak görevi gördüğünden döngü en başa dönmüştür.

Bu önemli alanın güvenli olarak geliştirilebilmesi ve denetlenebilmesi için geliştirilen modeller aşağıda farklı başlıklar altında açıklanmıştır.

Microsoft Security Development Lifecycle (SDL)

Microsoft yazılım geliştiricileri, karşılaşılan problemlerden dolayı 2004 senesinde güvenlik ve saklılık için bütünleştirici bir model geliştirmeyi hedeflemişler ve bir yazılım güvenliği süreci olan SDL'yi planlamışlardır Biçim 2. Bu süreç, temel yazılım güvenliği döngüsünü rol model olarak alan ve doğrudan proje idarecisine bağımlı bir modeldir.

Şekil 18'den de de görülebileceği gibi, Eğitim düzeyinde personele yazılım geliştirme modeli ve yazılım gereksinimleri yönünde temel eğitim verilmesi hedeflenir. Tahlil düzeyinde programın hedef kitlesi, kapsayacağı özellikler, test için kullanılacak atak modelleri ve program maliyetinin tanımlanması gibi ön tasarlama işlemleri asıllaştırılır. Tasarım düzeyinde tahlil safhasınındın elde edilen neticelere göre program tasarlanır. Yapılacak atak teknikleri, karşı koyma usulleri kararlaştırılır ve tehlike tahlili yapılır. Gerçekleştirim düzeyinde kod geliştirilirken ve sonrasında kullanıcının isteyebileceği güvenlik önlemleri de dikkate alınarak elastik bir yapı oluşturulmaya çalışılır. White-box Security, Code Review gibi usullerle kodun güvenliği Doğrulama düzeyinde test edilir.

Yayınlama düzeyinde uygulama bitirilmiş ve kullanıcıya sunulmuştur. Fakat bu evreye gelmeden başka bir deyişle son kullanıcıya ürün sunulmadan evvel güvenlik kontrollerinin neticelerinden emin olmak gerekir. Son düzey olan Bilgi Toplama düzeyinde ise kullanıcıdan gelen geri bildirimler dikkate alınarak sarihler tespit edilip alakalı yamalar üretilerek kullanıcıya sunulur

SAMM (Yazılım Garanti Olgunluk Modeli)

Open Web Application Security Platform (OWASP) tarafından desteklenen SAMM modeli bilgi güvenliği aktivitelerini yazılım geliştirme sürecine dâhil etmeyi hedefleyen bir modeldir [12]. Bu model organizasyonun büyüklüğünden bağımsız olup büyük bir proje için kullanılabileceği gibi organizasyonun tamamı ya da küçük bir kısmı içinde son derece uygundur

Şekil 19: SAMM (Yazılım Garanti Olgunluk Modeli)

SAMM'a gore yazılım geliştirme süreci modellemesi katmanlı bir mimariye sahiptir. İş fonksiyonları ve bunların her birinin güvenlik araştırmaları farklı katmanlarda yer alır.Şekil 3'de verilen iş fonksiyonları katmanında yönetim, gerçekleştirme, doğrulama ve yükleme ana başlıkları bulunur. Yönetim fonksiyonunda yazılım geliştirme sırasındaki güvenlik süreçlerinin yönetiminin gerçekleştirilir. Gerçekleştirme fonksiyonu, güvenli yazılım gereksinimleri ve tasarım aşamaları üzerinde yoğunlaşan, tehdit değerlendirme, güvenlik gereksinimleri ve güvenli mimari aktivitelerini içerir. Doǧrulama fonksiyonu tasarım, kodlama ve yazılım testlerinin gözden geçirilmesini ve güvenlik testlerini kapsamaktaolup tasarım, kod denetimi ve güvenlik testlerinden oluşur. Yükleme (Kurulum) fonksiyonu ürünün son kullanıcıya iletilmesi ve bakım, idame işlemlerini içerir. Bu fonksiyonun aktiviteleri ise güvenlik açığı yönetimi, platform farklılaştırması ve işletim kurulumudur.

(İSC Turkey Web Sitesi, https://bit.ly/3b6ptTZ,  2021).
 


SAMM'a göre yazılım geliştirme süreci modellemesi tabakalı bir mimariye sahiptir. İş işlevleri ve bunların her birinin güvenlik araştırmaları değişik tabakalarda yer alır. Şekil 19'da verilen iş işlevleri tabakasında idare, asıllaştırma, doğrulama ve yükleme ana başlıkları bulunur. İdare işlevinde yazılım geliştirme sırasındaki güvenlik süreçlerinin idaresinin asıllaştırılır. Asıllaştırma işlevi, tehlikesiz yazılım lüzumları ve tasarım safhaları üzerinde yoğunlaşan, tehdit değerlendirme, güvenlik lüzumları ve tehlikesiz mimari etkinliklerini içerir. Doğrulama işlevi tasarım, kodlama ve yazılım testlerinin gözden geçirilmesini ve güvenlik testlerini kapsamakta olup tasarım, kod teftişi ve güvenlik testlerinden oluşur. Yükleme Montaj işlevi ürünün son kullanıcıya iletilmesi ve bakım, idame işlemlerini kapsar. Bu işlevin etkinlikleri ise güvenlik açıklık yönetimi, platform değişikleştirmesi ve işletim kurulumudur.

(İSC Turkey Web Sitesi, https://bit.ly/3b6ptTZ,  2021).



0 Comments:

Yorum Gönder