Güvenli SDLC Yazılım Geliştirme Yaşam Döngüsünün Aşamaları
Yayınlanan: 2021-02-26Güvenli yazılım oluşturmaya yönelik akıllı yaklaşım, Güvenli SDLC veya Yazılım Geliştirme Yaşam Döngüsü'dür. Yazılım oluşturup ardından onu güvenlik açıkları için test etmek yerine, onu güvenliğe vurgu yaparak oluşturmak daha iyidir.
Güvenli SDLC nedir?
Daha geniş anlamda, Güvenli SDLC, mevcut yazılım geliştirme yaşam döngüsünde güvenlik testi ve diğer önlemleri entegre etme sürecidir. Bu şunları içerebilir:
- İşlevsel gereksinimlerle birlikte güvenlik gereksinimlerinin yazılması.
- Mimari analizi yapmak.
- Bilinen güvenlik açıkları olmayan açık kaynaklı bileşenler kullanmak.
- Yazılımı her aşamada test etmek ve güvenlik açıklarının/tehditlerinin ileriye taşınmasını önlemek.
Güvenli SDLC Neden Önemli?
Güvenli Yazılım Geliştirme Yaşam Döngüsü uygulamalarının uygulanması önemlidir çünkü geliştiriciler güvenlik açıklarına sahip bir ürünü piyasaya sürmeyi göze alamazlar. Yazılımın ve verilerin tehdit ve saldırılardan korunabilmesi için güvenliği sağlayacak şekilde geliştirilmesi gerekir.
Bunun bir diğer nedeni de, güvenliğe odaklanmadan, test edip düzeltmeden yazılım geliştirmenin verimli bir yaklaşım olmamasıdır.
Güvenli SDLC'nin Aşamaları
Güvenli SDLC'nin tüm konsepti, kötülüğü tomurcuktan kıstırmak etrafında döner. Süreç, hataların yazılım geliştirme yaşam döngüsünün bir sonraki aşamasına taşınmasını önler. Burada, Güvenli SDLC'de yer alan aşamaların ve her birinde uygulanan güvenlik önlemlerinin bir taslağı yer almaktadır.
Güvenli SDLC'nin Gereksinimler Aşaması
Yazılımın işlevsel gereksinimlerinin yanı sıra, güvenlik gereksinimleri de güvenli SDLC'nin başlangıcında açıklanmaktadır. Bu gereksinimler, yazılımı doğal olarak güvenli hale getirmek için geliştiricilerden nelerin gerekli olduğunu ayrıntılı olarak açıklar.
Geliştirme başlamadan önce Güvenlikle ilgili tüm Kullanım Durumları ve Senaryolarının ayrıntılı bir listesi derlenir. Bu daha sonra güvenlik özelliklerini oluşturmak ve güvenlik testi senaryoları tasarlamak için kullanılır.
Bu gereksinimler şöyle görünebilir:
- Tüm ağ geçitleri ve giriş noktaları, yerinde doğrulama önlemlerine sahip olmalıdır.
- Sistem, güvenli bir oturum açma ekranı aracılığıyla kimlik doğrulaması yapmalıdır.
- Tüm kişisel veriler her zaman şifrelenmelidir.
- Hassas veri aktarımı için birden fazla kimlik doğrulama kanalı kullanılmalıdır.
Güvenli SDLC için Planlama Aşaması
Planlama aşaması, Güvenli SDLC'deki en önemli adımdır. Planlama durumdan duruma farklılık gösterebilir ancak dikkat edilmesi gereken en temel şeylerden bazıları şunlardır:
- Yazılımın güvenlikle ilgili tüm önlemlerini tarafsız bir şekilde gözden kaçırmak ve yönlendirmek için deneyimli bir özel güvenlik ekibi oluşturulmalıdır. Tercihen proje yönetim ofisinin dışında konuşlandırılan bu ekip, bir güvenlik görevlisi, güvenlik mimarları ve güvenlik test uzmanlarından oluşmalıdır. Tüm ekip üyelerinin açıkça tanımlanmış rolleri ve sorumlulukları olmalıdır.
- Projenin güvenlik sorunlarıyla ilgili herhangi bir belirsizlik veya eskalasyon, ürün güvenlik görevlisi tarafından ele alınmalıdır. Doğru kararların alındığından emin olması için güvenlik ekibi tarafından bilgilendirilmelidir.
- Ürün güvenliğinde yapılan herhangi bir değişikliğin güvenlik ekibi tarafından fark edilmemesi için bir güvenlik irtibat noktası oluşturulmalıdır.
SDLC'nin Mimari ve Tasarım Aşaması
Tasarım aşamasında ayrıntılı bir Ürün Güvenliği Risk Değerlendirmesi yapılmalıdır. Bu, programın kodlama aşamasına girmeden güvenlik açısından gözden geçirilmesini içerir. Bir sonraki aşamaya geçmeden önce herhangi bir güvenlik riski ortadan kaldırılmalıdır. Güvenliği sağlamak için tüm değerlendirmeler endüstri standartlarına göre yapılmalıdır.

Bu aşamada dikkat edilmesi gereken hususlar bunlarla sınırlı olmamak üzere aşağıdakileri içerir:
- Proje ekibi tarafından paylaşılan detaylara göre tüm özelliklerin, gereksinimlerin, kullanıcı hikayelerinin ve tasarım belgelerinin gözden geçirilmesi. Gerekli belgelerden herhangi birinin olmaması durumunda, her şey proje ekibi üyeleri tarafından açıkça tartışılmalıdır.
- Programın güvenlik gereksinimlerindeki boşluklar belirlenmeli ve kullanılan endüstri standartlarına göre değerlendirilmelidir. İhtiyaç halinde tespit edilen boşluklara göre tehdit modelleri oluşturulabilir.
- Yeterli güvenlik riskine sahip boşluklar listelenmeli ve bunlar için uygulanabilir bir azaltma önerilmelidir.
SDLC'nin Geliştirme Aşaması
Bu, yazılımın gerçek “geliştirilmesidir”. Uygulamanın güvenli bir mizanpajı hazırlandıktan sonra geliştiricilerin kodu güvenlik yönergelerine uygun bir şekilde yazmaları gerekmektedir. Bu içerir:
- Bilinen güvenlik açıkları olmayan açık kaynaklı bileşenlerin kullanımı.
- Yazılımın geliştirilmesi boyunca üzerinde anlaşmaya varılan güvenlik önlemlerinin kullanılması.
- Koddaki herhangi bir güvenlik açığını ortaya çıkarmak ve azaltmak için kodu soğuk test etme.
Aşamada bazı testler de yapılır. Bu, hassas verilerin düz metin olarak iletilmemesi gibi şeyleri içerebilir.
SDLC'nin Uygulama Aşaması
Yazılım geliştirildikten sonraki adım dinamik kod analizidir. Bu, Açık Web Uygulama Projesi (OWASP) testi olarak da bilinen bir uygulama güvenlik testi biçimidir.
Çözüm gerçek hayatta uygulanmadan önce Güvenlik Açığı Analizi ve Sızma Testi yapılır. Bu kontrolün gerçekleştirildiği yazılım sürümlerine test yapıları denir. Bu konuda dikkat edilmesi gereken başlıca hususlar şunlardır:
- HP WebInspect, ZAP, Burp Suite ve SOAP gibi araçlar, yazılımın güvenlik açıklarını çeşitli güvenlik açığı veritabanlarına karşı kontrol etmek için kullanılır.
- Tüm bu aşama, otomasyon ve manuel testin bir karışımıdır.
- Bu süreç, gerçeğe yakın test senaryoları sağlamak için geliştirme ortamına bağlı olmayan bağımsız bir ortamda gerçekleştirilir.
- Bu aşamada bulunan herhangi bir güvenlik açığı, yazılım piyasaya sürülmeden önce azaltılır.
- Bu aşamada yaygın ve tipik tehditler belirlenir ve bunları önlemek için adımlar atılır.
Çözüm
Yazılıma olan bağımlılığımız artmaya devam ederken, onları kullanıcılar için güvenli hale getirmek önemlidir. Yazılım ve uygulamaların güvenlik açısından en üst düzeyde olduğundan emin olmak için Güvenli SDLC uygulamaları benimsenmiştir. Nihai hedef her zaman yenilmez yazılım çözümleri yaratmaktır.
Güvenli SDLC süreci, gereksinimlerin toplanmasından dağıtım öncesi teste kadar beş aşamadan oluşur. Odak noktası, bir sonraki adıma taşınmamaları için her adımda tehditleri ve güvenlik açıklarını azaltmaktır.
