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 |
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.
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