Curriculum
- 4 Sections
- 7 Lessons
- 6 Hours
- Güvenli Yazılım Geliştirmeye Giriş: Güvenli Yazılım Geliştirme Anlayışı3
- Güvenli Geliştirme Uygulamaları: Güvenli Kodlama Teknikleri, Tehdit Modelleme ve Risk Değerlendirmesi3
- Uygulama ve Bakım: Güvenli Yazılım Dağıtımı ve Dağıtım Sonrası Güvenlik Uygulamaları3
- Ek Okumalar1
Teorik Temeller
Güvenli Yazılım Geliştirmeye Giriş: Güvenli Yazılım Geliştirmeyi Anlama
Güvenli Yazılım Geliştirmeye yönelik bu temel alt-üniteyee hoş geldiniz; bu, günümüz dijital çağında tüm Küçük ve Orta Ölçekli İşletmeler (KOBİ’ler) için kritik bir konudur. Bu bölüm, güvenli yazılım geliştirmenin önemini, temel kavramlarını ve ilkelerini tanıtmaya adanmıştır. Bu modülde, yazılım güvenliği kavramları açıklanacak ve güvenli yazılım geliştirme sürecindeki temel adımlar vurgulanacaktır. Ayrıca, güvenli yazılım geliştirme pratiği için gerekli bilgi ve becerileri sağlama üzerine odaklanarak, katılımcıların güvenlik açıklarını azaltmaları ve siber tehditlere karşı daha dayanıklı yazılımlar oluşturmaları teşvik edilecektir.
Güvenli Yazılım Geliştirmeyi Anlamak
Güvenli yazılım geliştirme, yazılım geliştirme sürecinin her aşamasında güvenliği dikkate almanın önemini vurgulayan bir yaklaşımdır. Bu, güvenlik açıkları ve tehditlerin yazılım uygulamalarını etkilemesini önlemek için proaktif ve kapsamlı bir stratejidir. Konsepti daha derinlemesine inceleyelim:
- -Güvenli Yazılım Geliştirmenin Anahtar Yönleri: Güvenlik dikkate alındığında, tasarım ve mimarinin en erken aşamalarından itibaren entegre edilir; sonradan eklenen bir düşünce değil.
- -Risk Analizi: Geliştiriciler ve güvenlik ekipleri, yazılım ve verileri için potansiyel riskleri ve tehditleri değerlendirir. Bu, güvenlik özellikleri ve kontrollerinin önceliklendirilmesine yardımcı olur.
- -Güvenli Kodlama Uygulamaları: Geliştiriciler, SQL enjeksiyonu, çapraz site betimleme (XSS) ve tampon taşmaları gibi yaygın güvenlik açıklarını önlemeye yardımcı olan kodlama standartlarını ve yönergelerini takip eder.
- -Kod İnceleme ve Statik Analiz: Kod düzenli olarak akranlar tarafından gözden geçirilir ve potansiyel güvenlik sorunlarını taramak için statik analiz araçları kullanılır.
- -Dinamik Analiz ve Test: Yazılım, çalıştırma zamanındaki güvenlik açıklarını tanımlamak ve düzeltmek için dinamik analiz ve güvenlik testi, penetrasyon testi dahil olmak üzere testlere tabi tutulur.
- -Bağımlılık Yönetimi: Üçüncü taraf kütüphaneler ve bağımlılıklar güncel tutulur ve bilinen güvenlik açıkları için kontrol edilir.
- -Olay Yanıtı: Güvenlik olaylarına yanıt vermek için bir plan, yamanın yönetimi ve iletişim stratejileri dahil olmak üzere hazırlanmıştır.
- -Eğitim ve Öğretim: Geliştiriciler ve ilgili personel, güvenli kodlama uygulamaları konusunda eğitim alır ve en son güvenlik tehditleri hakkında bilgilendirilir.
Güvenli Yazılım Geliştirmenin Önemi:
- -Hassas Verileri Koruma
- -Güveni Koruma
- -Düzenleyici Uyum
- -Maliyetleri Azaltma
- -Hizmet Kesintilerini Önleme
- -Rekabet Avantajı
- -Hukuki Sonuçları Önleme

Şekil-1
(Kaynak: https://integrio.net/blog/improving-software-security)
Yazılım Geliştirme Yaşam Döngüsünde (Secure Development Life Cycle ) Güvenliğin Önemi
Yazılım Geliştirme Yaşam Döngüsünde (SDLC) güvenlik, her geliştirme aşamasında dikkat edilmesi gereken kritik bir unsurdur. SDLC’ye güvenliğin entegre edilmesi, yazılımın potansiyel siber tehditlere karşı güçlü bir savunma ile inşa edilmesini sağlar. Bu tehditler giderek daha sofistike ve sürekli değişen niteliktedir. Güvenliği baştan öncelikli olarak ele almak, geliştiricilerin güvenlik açıklarını erken aşamalarda tanımlayıp azaltmalarını sağlar. Bu, yazılım dağıtıldıktan sonra bu sorunları ele almaktan çok daha maliyet etkindir. Erken tespit sadece tasarruf sağlar, aynı zamanda düzeltme sırasında yeni sorunların ortaya çıkma riskini ve çözümün karmaşıklığını da azaltır.

Şekil-2
(Kaynak: https://softprodigy.com/secure-software-development-life-cycle-navigate-your-way-to-security/)
Güvenli Geliştirmenin Prensipleri
Güvenli geliştirme, modern yazılım mühendisliğinin kritik bir yönüdür ve yazılım geliştirme yaşam döngüsünün (SDLC) her aşamasına güvenlik prensiplerini entegre etmeye odaklanır. Güvenli geliştirme prensiplerine uyularak, organizasyonlar siber tehditlere karşı dayanıklı, kullanıcı verilerini koruyan ve saldırı altında bile işlevselliğini sürdürebilen yazılımlar üretebilirler. İşte güvenli geliştirmenin bazı temel prensipleri:
Proaktif Güvenlik Entegrasyonu: Güvenlik etkilerini tasarım aşamasında değerlendirmeyi, güvenli çerçeveler ve kütüphaneler seçmeyi ve güvenlik gereksinimlerinin işlevsel gereksinimlerle birlikte tanımlanmasını içerir.
En Az Ayrıcalık: Yazılım, görevlerini yerine getirmek için gerekli minimum ayrıcalık seviyesinde çalışmalıdır. Bu ilke, yazılımın ele geçirilmesi durumunda oluşabilecek potansiyel zararları sınırlar. Bu ilke, sadece yazılım için değil, aynı zamanda yazılım ile etkileşimde bulunan kullanıcılar ve sistemler için de geçerlidir.
Derinlikte Savunma: Tek bir güvenlik önlemi kesin olarak güvenli değildir, bu yüzden birden fazla güvenlik kontrol katmanı (fiziksel, teknik, idari) kullanmak, yedeklilik sağlayabilir ve tek bir başarısızlık noktasının riskini azaltabilir.
Güvenli Hata Yönetimi: Yazılım bir hata ile karşılaştığında, güvenliği tehlikeye atmadan güvenli bir şekilde başarısız olmalıdır.
Güvenlik Tasarımı ile Sağlanır: Güvenlik, yazılım tasarımının ayrılmaz bir parçası olmalıdır.
Düzenli Güvenlik Testi: Güvenlik testi sürekli bir süreç olmalı, sadece dağıtımdan önce bir kez yapılan bir etkinlik olmamalıdır.
En Az Bilgi Prensibi (POLK): Sistem, amacına uygun olarak gerekli olandan daha fazla bilgi veya işlevsellik açığa çıkarmamalıdır.
Güvenli Varsayılanlar: Yazılımın varsayılan yapılandırma ayarları kutudan çıkar çıkmaz güvenli olmalı, kullanıcıların daha az güvenli yapılandırmalara geçiş yapması gerekmelidir.
Açık Tasarım: Yazılımın tasarımı uzmanlar tarafından gözden geçirilmeye açık olmalıdır; şeffaflık daha sağlam güvenlik çözümlerine yol açabilir.
Girdi Doğrulama ve Temizleme: Girdileri doğrulama ve temizleme, SQL enjeksiyonu, çapraz site betimleme (XSS) gibi yaygın saldırıları önleyebilir.
Yamanın Yönetimi: Yazılımın güncel tutulması güvenlik için kritiktir. Güvenlik açıkları keşfedildiğinde hızla yamalar ve güncellemeler uygulanmalıdır.
Olay Yanıtı ve Kurtarma: Organizasyonların güvenlik olaylarına yanıt vermek için planları olmalıdır.
Eğitim ve Farkındalık: Geliştiriciler, testçiler ve son kullanıcılar dahil tüm paydaşların güvenliğin önemi hakkında eğitim alması sağlanmalıdır.

Şekil-3
(Kaynak: https://www.semanticscholar.org/paper/SECURE-SOFTWARE-DEVELOPMENT-FRAMEWORK-%3A-PRINCIPLES)
