|
Yazılım geliştirme
sürecinin yaygın olarak kullanılmaya başlandığı ilk yıllarda
kaliteli ve olgun yazılım üretmek için, son yıllarda ise
özellikle güvenli yazılım geliştirmek için çok sayıda model
ve çerçeve üzerinde çalışılmıştır. Son yıllarda
karşılaşılan güvenlik açıklıklarındaki artış bunun
tetikleyicisi olmuştur.
Şekil 1. Yıllara Göre
Açıklıklar
Bu süreç CMM
(Capability Maturity Model) ile başlamış daha sonrasında CMMI
(Capability Maturity Model Integration), FAA–iCMM (Federal Aviation
Administration Maturity integrated Maturity Model), Trusted CMM,
SSE-CMM (Security System Engineering CMM), Microsoft Security
Development Lifecycle, OpenSAMM modelleri gibi modeller
geliştirilmiştir.
Bu modellerin bir kısmı
kurum genelinin BT altyapısının güvenli hale getirilmesi ile
ilgili kapsamlıca bir içeriğe sahipken bir kısmı yazılım
geliştirme güvenliğine odaklanır. Fakat herbirinin yazılım
geliştirme güvenliği ile ilgili güvenlik modeli önerileri
vardır.
1. Mevcut
Durum
Gerek kurumsal
şirketlerde gerekse daha orta ölçekteki yapılarda kurum
bünyesinde geliştirilen, dış kaynaklarca geliştirilen ya da
dışarıdan satın alınıp uyarlanan yazılımlarda güvenli
yazılım geliştirme döngüsünün olmazsa olmaz kabul ettiği bazı
alanlarda önemli eksiklikler mevcuttur.
Kurum bünyesinde
yaygınlaştırılacak yazılımların son güvenlik gözden
geçirmelerinin çoğu zaman ihmal edildiği görülmektedir. Bu
gözden geçirmeler yaygınlaşan ürünün maruz kalacağı ilk
saldırıların önlenmesi için oldukça kritiktir. Gözden
geçirmeler kapsamında konfigürasyona dair eksiklikler de
araştırılmaktadır. İhmal edilen gözden geçirmeler,
konfigürasyonun kolaylıkla manipüle edilmesi, ele geçirilmesi
gibi sonuçlar doğurabilir. Bu da “gizlilik” vasfı olan kurum
verisinin korunmasında ciddi sorunlar ortaya koyabilir.
Kurumlarda karşılaşılan
bir diğer önemli eksiklik geliştirici takım ile test ve analiz
yapan takımın birbirinden net bir biçimde ayrılamamış
olmasıdır. Bu gibi etkileşimlerin olduğu yazılım ofislerinde
geliştirici bakış açısıyla yapılan yazılım analizleri
güvenlik anlamında birçok kriterin atlanmasına neden olabilir.
Aynı şekilde test takımının geliştiricilerden ayrılamamış
olması geliştirilen ürünün hakkıyla test edilmesinin önünde
bir engel oluşturur.
Yine geliştirilen
yazılımların dokümantasyon eksikliği, güvenlik odaklı
konfigürasyon prosedürlerinin belirlenmemiş olması da güvenliğin
sürekliliği konusunda ciddi şüpheler uyandırmaktadır.
2. Güvenli
Yazılım Geliştirme Döngüsü
Yazımızın başında
bahsettiğimiz güvenli yazılım geliştirme süreci konusunda
geliştirilmiş modeller sentezlendiğinde ortaya çıkan temel
adımlar Şekil 2’de özetlenmiştir.
Şekil 2. Güvenli
Geliştirme Döngüsü
Bu adımların içeriğini
detaylandırmak gerekirse:
Güvenli yazılım geliştirme döngüsünün ilk aşaması olan ve
projenin tüm sürecinde de sürdürülebilecek eğitim ve
farkındalığın artırılması çalışmalarında “Güvenli
Tasarım/Geliştirme”, “Tehdit Modelleme”, “Güvenlik
Testlerinin İcrası” gibi temel kavramlar yazılım geliştiricilerine bir eğitim dahilinde anlatılmalı,
ihtiyaca göre “Güvenli Tasarım Mimarileri”, “Hata
Detaylandırma”, “Güvenlik Geri Dönüş Değerlendirme” gibi
daha ileri konulara da bu eğitimlerde değinilmelidir.
İhtiyaçların
belirlenmesi aşamasında muhtemel güvenlik riskleri ile
ilgili proje takımına anketler yapılır, bir güvenlik danışmanı
belirlenir ve hata takip sisteminin çalışırlığı kontrol
edilir. Aynı zamanda gizlilik(privacy) anlamında da proje ekibinden
kontaklar belirlenir. Güvenlik ve gizlilik kabul edilebilir
hata eşiği de bu aşamada saptanmaktadır.
Bir diğer önemli
kontrol yazılım geliştirme ortamının güvenliğinin
sağlanmasıdır. Bu kontrol aşamasında geliştirme ortamının
fiziksel güvenliği, yönetimsel güvenliği ve yapılandırma
güvenliği tespit edilmeli ve kontrolleri sağlanmalıdır.
Bu ön kontrollerin
tamamlanması sonrasında gelen tasarım aşaması güvenlik
anlamında belirlenen en iyi pratiklere uyumluluk çerçevesinde
yürütülmelidir. Bu aşamada sistemin güvenlik yönüyle risk
analizi yapılmalıdır. Risk analizinde, tehditler ve
zafiyetler, dış kaynaklardan uygulamaya eklenen kodların
oluşturduğu riskler, tehdit modelleme şemaları ve detaylı bir
gizlilik risk analizi yapılmalıdır. Tehdit modelleme çalışması
tasarım aşamasının en önemli faaliyetidir. Bu faaliyette ticari
olmayan, açık kaynak kodlu modelleme ürünlerinin sürece dahil
edilmesi planlanmaktadır.
Gerçekleştirilen
tasarımın güvenlik en iyi pratiklerine göre gözden geçirilmesi
yapılmalı yasal gereksinimlere ve prosedürlere uyum konusunda da
ihtiyaçları karşılayabilen bir model ortaya konulması
sağlanmalıdır.
Geliştirme
aşamasında tasarımda öngörülen güvenli geliştirme mimarisine
harfiyen sadık kalmak öncelikli amaçtır. Bununla beraber bu
aşamada kullanılacak derleme araçları en güvenli sürümlerinde
kullanılmalıdır. Aynı zamanda bu aşamada kaynak kodu analizi
araçlarından da yararlanmakta fayda vardır. Söz konusu aşamanın bir
diğer önemli görevi kullanıcı ve yöneticilerin ihtiyaç duyduğu
güvenli kullanım kılavuzlarını hazırlamaktır.
Doğrulama aşaması
ürünün gizlilik, bütünlük ve erişilebilirlik yönüyle, tehdit
modelleri göz önünde bulundurularak test edilmesi ile başlar.
Bulunan zafiyetlerden ileride açıklık oluşturma ihtimali olanlar
bu aşamada giderilir. Bu aşamanın diğer önemli görevi güvenlik
baskısı takımı oluşturarak yazılımdaki değişikliklerin
doğurabileceği zafiyetleri araştırarak uyarabilecek, farkındalığı
sürekli olarak diri tutacak bir anlayışı oluşturmaktır.
Doğrulanmış ürünün
devreye alımı ile ilgili güvenli prosedürlerin yürütüldüğü
devreye alım aşaması ürünün sahaya sunulduğu ve haliyle
saldırılara de açık olduğu aşamadır. Devredeki üründe
gerçekleşebilecek sorunların çözümü idare edecek ekip ve
kontak bilgisi bu aşamada netleştirilmeli ve yazılım
kullanıcılarına bildirilmelidir. Ayrıca periyodik güncellemelerin
ve yama yönetiminin konu edildiği dokümanların hazırlanması bu
aşamada gerçekleştirilir. Sahadaki ürün üzerinden son güvenlik gözden
geçirmesi ve gizlilik çözümlemesi de bu aşamada yapılmalıdır.
Devreye alınmış ürünün
bakım ve desteğinin doğru ve etkin saplanabilmesi için açıklık
yönetimi ve geri dönüş mekanizmalarının etkin çalışır
hale getirilmesi gerekir.
3. Kuruluşlarda
Güvenli Yazılım Geliştirme Döngüsüne Geçiş
Henüz çoğu yazılım
evi ve kurumsal şirketler bünyesindeki yazılım grubu herhangi bir
güvenli yazılım geliştirme döngüsü benimseyememiş ya da
belirlediği döngünün gereklerini yerine getirmez durumdadır. Bu
ekiplerin ürettiği yazılımların güvenli geliştirme döngüsü
dahilinde üretilmesi için aşağıda bahsedilecek adımların
gerçekleştirilmesi yerinde olacaktır:
Kurumun Yazılım
Geliştirme Yöntem ve Prosedürlerinin Araştırılması
Yazılım geliştirme
takımlarının kullandığı proje yönetim yaklaşımları,
geliştirmede kullanılan kuruma özel yöntemler ve kurumda
geliştirilecek yazılımlarla ilgili bağlayıcı hükümdeki
prosedürler bu adımda araştırılmalıdır.
Mevcut Modellerin
İncelenmesi ve İhtiyaca Yönelik Eğitimler
Güvenli yazılım
geliştirmede kullanılan yöntemler ve genel anlamda içeriklerinden
bir önceki bölümde bahsedilmişti. Bu modeller detaylı olarak
incelenir, kurum kültürü ile olan etkileşimleri ve ilişkileri
araştırılır, her modelin kuruma yaklaşan ve kurumdan uzaklaşan
yönleri tespit edilir. Bu tespitlerin detaylandırılması
aşamasında modellerin içerikleri ile ilgili gerekli eğitimler de
planlanmalıdır.
Kurum Şartlarına
Uygun Güvenli Modelin Belirlenmesi
İkinci adımda incelenen
modeller arasında kurumun yazılım geliştirme ve yaygınlaştırma
süreçlerine en uygun olanı belirlenir. Belirlenen model, kurumun
en hızlı şekilde ve en güvenli olarak başarılı yazılımlar
geliştirmesini sağlayacaktır. Belirlenen model kurum ihtiyaçlarına
göre uyarlanır, araya konulması güvenliği artıracak bazı ek
kontroller de modele ilave edilir.
Politika ve Prosedür
Dokümanlarının Hazırlanması
Belirlenen modelin
sağlıklı bir şekilde çalışabilmesi için politika ve prosedür
dokümanlarının hazırlanması gerekmektedir. Böylelikle tüm
çalışanların modeli aynı şekilde yorumlamaları ve belirli bir
çalışma yönetimi oluşturmaları sağlanmış olur. Politika
dokümanı uyulması gereken kuralları belirlerken prosedür
dokümanı Güvenli Yazılım Geliştirme Döngüsü'nün alt
süreçlerinde yer alan iş adımlarını tanımlar.
Eğitimlerin
Hazırlanması ve İlgili Personele Eğitim verilmesi
Yazılım süreçlerine
getirilecek güvenli yazılım geliştirme döngüsü hakkında
kapsamlı eğitimler hazırlanmalı, geliştirme sürecinin parçası
olan çalışanlara gerekli eğitim ve oryantasyonlar verilmelidir.
Ayrıca hazırlanan eğitimlerin sürekliliğinin sağlanması, daha
sonraki yıllarda geliştirici ekibine katılacak yeni personele de
güvenlik oryantasyonunun yapılabilmesi için bir eğitim planlama
stratejisinin belirlenmesi de sürecin bir parçasıdır.
Favori olarak ekle (0) | Görüntüleme sayısı: 3101
Sadece kayıtlı kullanıcılar yorum yazabilir. Lütfen sisteme giriş yapın veya kayıt olun. |