stanford-oval/wikipedia huggingface dataset:
Yazılım güvenliği sağlama
Tarihçesi

Siber güvenlik kapsamında ortaya atılan terimlerden ilki kriptografidir. Milattan önce 400'lü tarihlerde Spartatılar tarafından askerleri arasında güvenli veri alışverişini sağlamak amacıyla ortaya atılmış bir terimdir. İletecekleri metinleri  şifrelemek amacıyla kullandıkları anahtarı silindir şifreleme anahtarı olarak adlandırırlar.
Daha eski tarihlerde metinleri şifrelemek için kaydırma yöntemleri kullanılmıştır. İletilecek mesajın harfleri  0-25 aralığında bir sayı kadar kaydırılarak alfabedeki başka bir harfle sembolize edilmiştir. Bu metnin çözülmesi için harfin alfabede kaç sayı kaydırıldığı bilinmelidir. Örneğin 'modern' kelimesinin kaydırması “421636”  olduğunda şifrelenmiş metin “rqekut”  haline gelir.Şifrelenecek metindeki 'm' harfi alfabede 4 birim kaydırıldığında 'r' harfine karşılık gelir.'o' harfi 2 birim kaydırıldığında 'q' harfine denk gelir.
Tek kullanımlık anahtarlar ise metnin aynı uzunlukta rastgele değerlerden oluşan anahtarla birleştirilmesiyle oluşur.
Günümüzde kullanılan erişim saldırıları, pasif saldırılar, aktif saldırılar, kötü amaçlı yazılım saldırıları gibi saldırılar daha karmaşık olmalarına rağmen temel mantıkları milattan önce 400'lü tarihlerdeki saldırılara dayanmaktadır.
Saldırılara Karşı Alınabilecek Önlemler

Siber güvenliği sağlamak için çeşitli yöntemler önerilmektedir.
Güvenlik Duvarları: Ağ trafiğini kontrol ederek yetkisiz erişimleri engeller. Erişim Kontrolü sağlar. Sisteme erişim yetkileri belirlenmeli ve kontrol edilmelidir.
Antivirüs Yazılımları: Zararlı yazılımları tespit edip yok eder.
Şifreleme: Verilerin gizliliğini korumak için kullanılır. Kullanılan verilerin kaybı veya kötüye kullanılmasına karşı koruma sağlanmalıdır.
Eğitim ve Farkındalık: Kullanıcıları siber tehditler konusunda bilgilendirir.
Güvenli Kodlama: Yazılım geliştirme sürecinde güvenli kodlama standartlarına uyulmalıdır.
Bu yöntemlerin her biri, siber saldırılara karşı savunma mekanizmaları oluşturmakta önemli bir rol oynamaktadır
Yazılım Güvenlik Seviyeleri

Siber saldırılar için önlem alınırken ağda iletilen verinin ve yazılımın güvenlik derecesi tespit edilmelidir.
SSA'nın güvenlik derecelerini belirlemekte kullandığı kriterler:
Yüksek Güvenlik Açıkları: Saldırganlar tarafından kolayca kötüye kullanılabilir.
Orta Güvenlik Açıkları: Hassas sistem bilgilerine ulaşılmasına neden olabilir.
Düşük Güvenlik Açıkları: Basit bilgilere erişimi kolaylaştırabilir.
Yazılım Güvenliğini Sağlama Stratejileri

Yazılım güvenliği sağlamak amacıyla siber güvenlik yöntemleri bilgi sisteminin tasarımında, uygulanmasında ve bakımında güvenlik gereksinimlerinin karşılanması için kullanılır.
Kod analizinin performansında kullanılan teknikler, tasarım analizinde kullanılanları yansıtır.
Güvenli Kod incelemeleri, belirlenen güvenlik gereksinimlerinin, güvenlik tasarım konseptlerinin ve güvenlikle ilgili tanımların karşılanıp karşılanmadığını belirlemek için geliştirme aşaması sırasında ve sonunda gerçekleştirilir.
Yazılım Güvenliğini Sağlama Stratejileri > Güvenli Yazılım Geliştirme Yaşam Döngüsü (SDLC)

Güvenli Yazılım Geliştirme Yaşam Döngüsü, yazılım geliştirme sürecinin her aşamasında güvenlik önlemlerinin alınmasını sağlar. Bu süreç, yazılımın tasarımından dağıtımına kadar olan her aşamada güvenlik standartlarının uygulanmasını içerir.
Yazılım Güvenliğini Sağlama Stratejileri > Sızma Testleri

Yazılıma yönelik kötü amaçlı yazılım saldırıları gibi potansiyel saldırıları simüle ederek zayıf noktaların tespit edilmesi.
Bilgi Toplama Aşaması hedef sistem hakkında mümkün olduğunca fazla bilgi toplanır. İnternet, arama motorları, e-posta grupları ve DNS kayıtları gibi kaynaklardan veri elde edilir. Bu bilgiler, sistemin mimarisi ve kullanılan teknolojiler hakkında fikir verir.
Keşif aşaması, pasif ve aktif bilgi toplama yöntemlerini içerir. Pasif bilgi toplamada, sistemle doğrudan etkileşimde bulunmadan bilgi toplanırken; aktif bilgi toplamada, sistemle etkileşime girerek daha fazla veri elde edilir. Bu aşamada port tarama, çalışan servislerin belirlenmesi ve ağ haritalama gibi işlemler gerçekleştirilir.
Zafiyet tarama aşaması  sistemdeki potansiyel zafiyetler tespit edilir. Zafiyet tarama araçları kullanılarak veya manuel olarak açıklıklar belirlenir. Örneğin, bir veritabanında SQL açıklığı olup olmadığı kontrol edilir.
Açıklıkların İstismar Edilmesi aşaması Tespit edilen zafiyetlerin kullanılması aşamasıdır. Örneğin, bir SQL açıklığı kullanılarak veritabanına SQL injection saldırısı gerçekleştirilir.
Sistemin Ele Geçirilmesi aşaması sisteme sızılır ve sistem yöneticisi haklarına ulaşılır. Hedef sistem üzerinde tam kontrol sağlanmaya çalışılır.
İzlerin Temizlenmesi aşaması: Sızma testinin sonunda, yapılan işlemlerin izleri temizlenir. Bu, sistem günlüğü (LOG) kayıtlarının silinmesi gibi işlemleri içerir. İzlerin temizlenmesi, gerçek bir saldırı durumunda ne tür izlerin bırakılabileceğini anlamak açısından önemlidir.
Yazılım Güvenliğini Sağlama Stratejileri > Kod İncelemesi:

Kod incelemesi, yazılımın güvenlik standartlarına uygunluğunun düzenli olarak gözden geçirilmesini içerir.
Bu süreçte, yazılımın kodu uzman ekipler tarafından incelenerek potansiyel güvenlik açıkları tespit edilir.
Kaynak Kod Zafiyet Analizi aşaması:  Kaynak kodu zayıflık analiz araçları, yazılım kaynak kodunu inceleyerek bilinen açıklık türlerine karşı örüntü eşleştirmeleri kullanarak zayıflıkları arar. Bu tür araçlar, "kaynak kodu güvenlik analiz aracı", "statik uygulama güvenlik testi aracı" veya "kod zayıflığı analiz aracı" gibi isimlendirmelere sahiptir.
Kaynak Kodundan Mimari, Tasarım ve İşlevlerin Çıkarılması aşaması: Bu araçlar, analize yardımcı olmak için kaynak kodundan mimari ve tasarıma ilişkin bilgileri çıkarır. Bu bilgiler, kaynak kodu kalitesi veya zayıflık analizi yapmak için temel olarak kullanılabilir.
İkili Kod/Sekizli Kod Analizleri aşaması: Geleneksel virüs tarayıcıları, ikili kod veya sekizli kod içinde imza taraması yapar. Modern virüs tarayıcıları ise davranış analizi de gerçekleştirebilir.
Uygulamalar Arası Akış Analizi :  Bu araçlar, haberleşme arayüzlerini ve izinleri tespit ederek uygulamalar arası veri ve kontrol akışını inceleyip güvenlik politikalarını ihlal eden akışları kontrol eder.
İnsan Tarafından Gözden Geçirme aşaması: Gözden geçirme genellikle kaynak kodu ile yapılır ancak makine kodu ile de gerçekleştirilebilir. İnsan incelemeleri, gereksinimlere, mimariye, tasarıma ve test bulgularına uygulanabilir.
Odaklı Manuel Kontrol aşaması:  Belirli soruları cevaplamak için manuel kod analizi yapılır. Genellikle 100 satırlık koddan daha azı için uygulanır.
Biçimsel Yöntemler aşaması: Yazılım ve donanım sistemlerinin geliştirilmesi ve doğrulanması için matematiksel teknikler ve araçların kullanılmasını içerir.
Yazılım Güvenliğini Sağlama Stratejileri > Güvenlik Prosedürleri ve Protokoller

HTTPS (Güvenli Hiper Metin Aktarım Protokolü): HTTPS, HTTP protokolünün güvenli bir versiyonudur ve veri iletimini şifrelemek için SSL/TLS teknolojilerini kullanır. Bu protokol, kullanıcıların tarayıcıları ile web sunucuları arasındaki veri iletimini korur. HTTPS, kullanıcıların kişisel bilgilerini (örneğin kredi kartı bilgileri) kötü niyetli kullanımlara karşı koruma sağlar 14.
SSL/TLS: HTTPS, SSL (Secure Socket Layer) veya TLS (Transport Layer Security) protokolleri ile birlikte çalışır. Bu protokoller, veri güvenliğini sağlamak için şifreleme ve kimlik doğrulama işlevleri sunar.
FTPS (File Transfer Protocol Secure): FTPS, standart FTP protokolünün güvenli bir versiyonudur. SSL/TLS kullanarak veri iletimini şifreler ve böylece dosya transferi sırasında güvenliği artırır. FTPS, hem kontrol hem de veri bağlantıları için güvenli bir iletişim sağlar.
SFTP (SSH File Transfer Protocol): SFTP, SSH (Secure Shell) protokolü üzerinden çalışan bir dosya transfer protokolüdür. SFTP, verilerin şifrelenmesini ve güvenli bir şekilde iletilmesini sağlarken, aynı zamanda dosya yönetimi işlevlerini de destekler. Bu protokol, kullanıcı kimlik doğrulaması ve veri bütünlüğü sağlamak için güçlü şifreleme yöntemleri kullanır.
SCP (Secure Copy Protocol): SCP, SSH protokolü kullanarak dosyaların güvenli bir şekilde kopyalanmasını sağlar. SCP, dosyaların bir ağ üzerinden güvenli bir şekilde aktarılmasını sağlarken, aynı zamanda hızlı bir transfer yöntemi sunar. Ancak, SFTP kadar esnek değildir ve yalnızca dosya kopyalama işlemleri için kullanılır.
Yazılım güvenliği sağlama süreci

Yazılım güvenliği sağlama süreci, yazılımın içereceği veya kullanacağı bilgilerin tanımlanması ve kategorize edilmesi aşamasını içerir. Bu süreç, bilgilerin hassasiyetine göre sınıflandırılmasını ve her bir kategorinin potansiyel etkilerini belirlemeyi amaçlar.
Yazılım güvenliği sağlama süreci > Yazılımın içereceği veya kullanacağı bilgilerin tanımlanması ve kategorize edilmesi

Bilgiler, hassasiyetine göre kategorize edilmelidir.Bu kategoriler genellikle üç ana düzeyde belirlenir: düşük, orta ve yüksek hassasiyet.
Düşük Hassasiyet : Bu kategori altında yer alan bilgiler için güvenlik ihlali durumunda etkisi minimaldir. Örneğin, yazılım sahibinin misyonu veya itibarı üzerinde önemsiz bir etki yaratır. Bu tür bilgiler genellikle genel bilgi veya kamuya açık verilerden oluşur.
Orta Hassasiyet : Orta hassasiyet kategorisindeki bilgiler, güvenlik ihlali durumunda daha belirgin bir etki yaratabilir. Bu durum, yazılım sahibinin işlevleri veya itibarında kayıplara yol açabilir. Örneğin, müşteri bilgileri veya finansal raporlar bu kategoriye girebilir.
Yüksek Hassasiyet : En üst düzeydeki bu kategori, insan hayatına tehdit oluşturabilecek bilgiler içerir. Güvenlik ihlali durumunda yazılım sahibinin misyonları, işlevleri veya itibarı üzerinde onarılamaz bir etkiye yol açabilir ve önemli varlıkların kaybına neden olabilir. Örneğin, sağlık verileri veya kritik altyapı bilgileri bu kategoriye dahil edilir.
Güvenlik kategorisi belirlemek, yazılımın korunması gereken bilgilerin türünü ve bu bilgilerin korunması için gerekli önlemleri belirlemek açısından kritik öneme sahiptir.
Yazılım güvenliği sağlama süreci > Güvenlik Gereksinimleri Geliştirilmesi

Güvenlik gereksinimleri,
Erişim kontrolü yalnızca yetkili kullanıcıların hassas verilere ulaşmasını sağlamak amacıyla gerçekleştirilir. Erişim kontrolü mekanizmaları arasında rol tabanlı erişim kontrolü (RBAC), zorunlu erişim kontrolü (MAC) ve isteğe bağlı erişim kontrolü (DAC) gibi yöntemler bulunmaktadır. Bu sistemler, kullanıcıların hangi verilere erişebileceğini ve hangi işlemleri gerçekleştirebileceğini tanımlar
Ağ erişimi yazılımın veri iletiminde güvenli iletişim protokollerinin kullanılmasını gerektirir. Güvenli ağ erişimi sağlamak için şifreleme yöntemleri, özellikle SSL/TLS gibi protokoller kullanılmalıdır. SSL/TLS sertifikaları, internet üzerinden güvenli bağlantılar kurarak verilerin gizliliğini korur ve yetkisiz erişimleri engellemek için güvenlik duvarları ile diğer ağ güvenlik önlemleri uygulanmalıdır (AWS, 2023).
Fiziksel erişim  Fiziksel güvenlik önlemleri, sunucuların bulunduğu odaların kilitlenmesi, izinsiz girişlerin engellenmesi ve fiziksel ortamın izlenmesi gibi uygulamaları içerir. Bu tür önlemler, donanımın ve verilerin fiziksel olarak korunmasını sağlar.
Veri yönetimi  verilerin güvenli bir şekilde saklanması ve işlenmesini ifade eder.
Veri erişimi ise kullanıcıların verilere nasıl ulaşabileceğini belirler. Güvenli veri yönetimi için şifreleme, veri yedekleme ve veri bütünlüğü kontrolleri gibi yöntemler kullanılmalıdır. Ayrıca, veri iletiminde güvenli iletişim protokollerinin kullanılması da önemlidir.
Çevrimdışı depolama; Verilerin çevrimdışı depolanması, hassas bilgilerin internetten izole edilerek daha güvenli bir ortamda saklanmasını sağlar. Bu yöntem, siber saldırılara karşı ek bir koruma katmanı sunar ve verilerin yetkisiz erişimden korunmasına yardımcı olur.
Yazılım Güvenliği Problemlerinin Nedenleri

Yazılımdaki tüm güvenlik açıkları, yazılım içindeki güvenlik hataları veya kusurların sonucudur. Çoğu durumda, bu kusurlar iki ana nedenden kaynaklanmaktadır: uyumsuzluk veya gereksinimlerin karşılanmaması ve yazılım gereksinimlerinde bir hata veya eksiklik.
Yazılım Güvenliği Problemlerinin Nedenleri > Uyumsuzluk veya gereksinimlerin karşılanmaması

Yazılımda uyumsuzluk nedenleri kodlama hataları gibi basit nedenler olabileceği gibi zamanlama hataları veya kullanıcı girişi doğrulama hataları gibi daha karmaşık nedenler de olabilir.
Zamanlama hataları, yazılımın belirli bir zaman diliminde beklenmedik veya istenmeyen davranışlar sergilemesine neden olan durumlardır. Bu tür hatalar genellikle çoklu iş parçacığı (threading) veya asenkron işlemlerle ilgili sorunlardan kaynaklanır. Örneğin, bir uygulama aynı anda birden fazla işlem yapmaya çalıştığında, bu işlemler arasında zamanlama sorunları ortaya çıkabilir.
Kullanıcı girişi doğrulama hataları kullanıcıların sisteme giriş yaparken sağladıkları bilgilerin doğrulanmasında meydana gelen sorunlardır. Bu tür hatalar, genellikle kullanıcıdan alınan verilerin yeterince kontrol edilmemesi veya yanlış işlenmesi sonucunda ortaya çıkar. Örneğin, 3D Secure gibi online ödeme sistemlerinde kullanıcı girişi doğrulama hataları sıkça karşılaşılan bir durumdur. Bu tür hatalar, kart sahibinin kimliğinin doğrulanamaması nedeniyle oluşur ve sonuç olarak işlem başarısız olabilir.
3D Secure doğrulama hatalarının yaygın nedenleri arasında hatalı doğrulama bilgileri (Kullanıcıların cep telefonuna veya e-posta adresine gönderilen doğrulama kodunu yanlış girmesi) ; Kartın İnternet Alışverişlerine Kapalı Olması(Kartın internet alışverişlerine kapalı olması durumunda, 3D Secure doğrulama işlemi gerçekleştirilemez), Yetersiz Bakiye(Kartta yeterli bakiye bulunmaması durumunda işlem gerçekleştirilemez) gibi nedenler bulunabilir..
Bu tür kullanıcı girişi doğrulama hataları, yazılımların güvenliğini tehlikeye atabilir ve dolandırıcılık gibi ciddi sorunlara yol açabilir. Özellikle SQL enjeksiyonu gibi saldırılar, kullanıcı girişi doğrulama hatalarının bir sonucu olarak ortaya çıkabilir.
Yazılım Güvenliği Problemlerinin Nedenleri > Uyumsuzluk veya gereksinimlerin karşılanmaması > Doğrulama Ve Geçerlilik Teknikleri

Doğrulama: Yazılımın belirli gereksinimleri karşıladığını ve beklenen sonuçları ürettiğini kontrol eder.
Geçerlilik: Yazılımın doğru bir şekilde çalıştığını ve kullanıcı ihtiyaçlarını karşıladığını garanti eder.
Yazılım Güvenliği Problemlerinin Nedenleri > Uyumsuzluk veya gereksinimlerin karşılanmaması > Zamanlama Ve Kullanıcı Girişi Doğrulama Hatalarının Tespitinde Kullanılan Yöntemler

Güvenlik güvencesi teknikleri, yazılımda potansiyel güvenlik açıklarını önlemek için tasarlanmıştır. Bu teknikler arasında şunlar bulunur:
Statik Analiz: Kodun derlenmeden önce analiz edilmesi, güvenlik açıklarını tespit etmek için kullanılır.
Dinamik Analiz: Yazılım çalışırken gerçek zamanlı olarak güvenlik açıklarını tespit etmeye yönelik testlerdir.
Penetrasyon Testleri(Sızma Testleri): Yazılıma dışarıdan sızma girişimleri simüle edilerek güvenlik açıklarının belirlenmesi sağlanır.
'Giriş Doğrulama Testleri: Kullanıcı girişlerinin doğru bir şekilde doğrulandığını kontrol etmek için yapılan testlerdir.
Yazılım Güvenliği Problemlerinin Nedenleri > Yazılım Gereksinimlerindeki Hatalar Veya Eksiklikler

Yazılıma dayalı sistemlerdeki en ciddi güvenlik problemleri, yazılım mühendisliği süreçlerinden biri olan sistem gereksinimleriyle ilgili süreçlerden kaynaklanır.
Örneğin, yazılım normal kullanımda tam olarak gerekli şekilde çalışabilir, ancak gereksinimler bazı sistem durumlarını doğru şekilde ele almıyor olabilir.
Sistem bu problem durumuna girdiğinde, beklenmeyen ve istenmeyen davranışlar ortaya çıkabilir.
Normal Kullanım Senaryosu: Bir e-ticaret uygulaması, kullanıcıların ürünleri sepete eklemesine ve satın alma işlemi gerçekleştirmesine olanak tanır. Yazılım, genel olarak bu işlevleri doğru bir şekilde yerine getirir.
Gereksinim Eksikliği: Ancak, yazılımın gereksinimleri, kullanıcıların aynı anda birden fazla tarayıcı sekmesinde işlem yapabileceğini göz önünde bulundurmayabilir. Bu durumda, sistemin birden fazla oturum açma veya işlem yapma durumunu yönetme yeteneği eksik kalır.
Problem Durumu: Kullanıcı, bir ürün satın almak için bir sekmede işlem yaparken başka bir sekmede de aynı ürünü sepete eklemeye çalıştığında, sistem beklenmedik bir şekilde davranabilir. Örneğin: Sepet güncellenmeyebilir.Kullanıcının önceki sepet içeriği kaybolabilir.Hatalı fiyatlandırmalar veya stok bilgileri gösterilebilir.
Sonuç: Bu tür bir durum, kullanıcı deneyimini olumsuz etkileyebilir ve güvenlik açıklarına yol açabilir. Kullanıcıların kişisel bilgileri veya ödeme bilgileri yanlışlıkla başka bir oturumda açığa çıkabilir.
Yazılım Güvenliğinin Sağlaması  Gereken Aşamaları

Yazılım güvenliği sağlama faaliyetlerinin iki temel türü vardır.
Bazıları, bir bilgi sisteminin işlediği bilgilere uygun bir hassasiyet kategorisi atanmasını ve uygun koruma gereksinimlerinin geliştirilip karşılanmasını sağlamaya odaklanır.
Diğerleri ise, yazılımın ve yazılım destek araçlarının ve verilerin kontrolü ve korunmasını sağlamaya odaklanır.
En azından bir yazılım güvenliği sağlama programı şunları sağlamalıdır:
Yazılım için bir güvenlik değerlendirmesi yapılmış olmalıdır.
Yazılım için güvenlik gereksinimleri belirlenmiş olmalıdır.
Yazılım geliştirme ve/veya işletim ve bakım süreçleri için güvenlik gereksinimleri belirlenmiş olmalıdır.
Her yazılım incelemesi veya denetimi, güvenlik gereksinimlerinin bir değerlendirmesini içermelidir.
Mevcut yazılım için güvenliği sağlamak ve önerilen değişikliklerin istemeden güvenlik ihlalleri veya zayıflıklar oluşturmadığını garanti etmek için bir konfigürasyon yönetimi ve düzeltici eylem süreci uygulanmalıdır.
Yazılım için fiziksel güvenlik yeterli olmalıdır.
Güvenliği İnşa Etmenin Yolları

Yazılım geliştirme sürecini iyileştirmek ve daha iyi yazılımlar üretmek, daha az hata ve zayıflık içeren yazılımlar üreterek yazılım güvenliğini artırmanın yollarıdır.
Güvenliği İnşa Etmenin Yolları > Kritik Yazılım Bileşenlerinin Tanımlanması

Kritik yazılım bileşenleri, yazılımın güvenliğini doğrudan etkileyen ve güvenlik işlevlerini kontrol eden unsurlardır.
Kimlik Doğrulama Modülleri: Kullanıcıların kimliğini doğrulamak için kullanılan bileşenlerdir. Güçlü şifreleme yöntemleri ve çok faktörlü kimlik doğrulama (MFA) gibi teknikler içerebilir.
Yetkilendirme Modülleri: Kullanıcıların sisteme erişim haklarını belirleyen bileşenlerdir. Rol tabanlı erişim kontrolü (RBAC) gibi yöntemlerle, kullanıcıların hangi verilere erişebileceği ve hangi işlemleri gerçekleştirebileceği tanımlanır.
Veri Şifreleme Bileşenleri: Hassas bilgilerin korunması için kullanılan şifreleme algoritmalarıdır. Bu bileşenler, verilerin hem depolama hem de iletim sırasında güvenliğini sağlamak için kritik öneme sahiptir.
Güvenlik Duvarları ve Ağ Güvenlik Modülleri: Ağ trafiğini izleyen ve yetkisiz erişimleri engelleyen bileşenlerdir. Bu modüller, dış saldırılara karşı koruma sağlar.
Günlükleme ve İzleme Modülleri: Sistemdeki etkinliklerin kaydedilmesi ve izlenmesi için kullanılan bileşenlerdir. Bu modüller, olası güvenlik ihlallerinin tespit edilmesine yardımcı olur.
Hata Yönetimi ve İyileştirme Bileşenleri: Yazılımda meydana gelen hataların yönetimi ve düzeltilmesi için kullanılan bileşenlerdir. Bu modüller, yazılımın sürekli olarak güncellenmesini ve güvenliğinin artırılmasını sağlar.
Güvenliği İnşa Etmenin Yolları > Araçlar ve Teknikler

Ticari Yazılım Paketleri: Yazılım güvenliği faaliyetlerini destekleyen birçok COTS (Commercial Off-The-Shelf) yazılım paketi bulunmaktadır. Bunlar kullanılmadan önce dikkatlice değerlendirilmelidir.
COTS (Commercial Off-The-Shelf) yazılımı, ticari piyasada bulunan ve belirli bir uygulama için özel olarak yapılmamış, hazır yazılım ürünlerini ifade eden bir terimdir. Bu tür yazılımlar, geniş bir kullanıcı kitlesine hitap eder ve genellikle kullanıma hazır olacak şekilde tasarlanmıştır. Örnekler arasında Microsoft Office, virüsten koruma yazılımları ve diğer standart iş uygulamaları bulunmaktadır.
Güvenliği İnşa Etmenin Yolları > Yaygın Zayıflıkların Listesi

Yazılım güvenliğini artırmanın bir yolu, yazılım güvenliğini etkileyebilecek en yaygın zayıflıkları daha iyi anlamaktır. Bu amaçla, MITRE Corporation tarafından desteklenen ve bu tür zayıflıkları tanımlamayı ve açıklamayı amaçlayan mevcut bir topluluk temelli program olan Yaygın Zayıflıklar Listesi projesi vardır.
CWE, aşağıdaki gibi çeşitli zayıflık kategorilerini içerir:
Buffer Overflows (Tampon Taşmaları):Bellek yönetimi hatalarıdır ve genellikle kötü niyetli kodların çalıştırılmasına olanak tanır.
Improper Input Validation (Yanlış Girdi Doğrulama):Kullanıcıdan alınan verilerin yeterince kontrol edilmemesi durumunda ortaya çıkar. Bu zayıflık, SQL enjeksiyonu gibi saldırılara kapı aralayabilir.
'Race Conditions (Zamanlama Hataları):Çoklu işlem veya iş parçacığı kullanımı sırasında ortaya çıkan hatalardır ve sistemin beklenmedik davranışlar sergilemesine neden olabilir.
Cross-Site Scripting (XSS):Kullanıcıların tarayıcılarında kötü niyetli kod çalıştırılmasına neden olan bir güvenlik açığıdır.
Hard-coded Passwords (Sertifika Şifreleri):Yazılım içinde sabit olarak yer alan şifreler, güvenlik risklerini artırır.
Insecure Random Numbers (Güvensiz Rastgele Sayılar):Güvenlik uygulamalarında kullanılan rastgele sayıların tahmin edilebilir olması, saldırganların bu sayıları kullanarak sisteme sızmasına neden olabilir.
Güvenliği İnşa Etmenin Yolları > Güvenlik Mimarisi/Tasarım Analizi

Güvenlik mimarisi/tasarım analizi, yazılım tasarımının güvenlik gereksinimlerini doğru bir şekilde uygulayıp uygulamadığını doğrular. Genel olarak, güvenlik mimarisi/tasarım analizi için dört temel teknik kullanılmaktadır.
Güvenliği İnşa Etmenin Yolları > Güvenlik Mimarisi/Tasarım Analizi > Mantık Analizi

Mantık analizi, yazılım tasarımının denklemler, algoritmalar ve kontrol mantığı'nı değerlendirir.
Güvenliği İnşa Etmenin Yolları > Güvenlik Mimarisi/Tasarım Analizi > Veri analizi

Veri analizi, yazılım bileşeninin tasarımında kullanılan her veri öğesinin tanımını ve amaçlanan kullanımını değerlendirir. Kesintilerin kullanımı ve bunların veri üzerindeki etkisi özel dikkat gerektirir; bu, kritik verilerin diğer rutinler tarafından değiştirilmediğinden emin olmaktır.
Güvenliği İnşa Etmenin Yolları > Güvenlik Mimarisi/Tasarım Analizi > Prosedür analizi

Prosedür analizi, bir bileşenin dışa bağımlı olan veya başka bir dış bileşene erişen belirli tüm çağrıların kontrol edilmesi için tasarlanmış bir süreçtir.
Güvenliği İnşa Etmenin Yolları > Güvenlik Mimarisi/Tasarım Analizi > Kısıtlama analizi

Genel bilgi analizi, bileşenlerin hangi bilgi öğelerine eriştiğini ve dış kaynaklarla (veri akışları, protokoller vb.) olan etkileşimlerini değerlendirir.
Alexandra (Birleşik Krallık prensesi)

| Prenses Alexandra |
| --- | --- |
Princess Arthur of Connaught Duchess of Fife
Alexandra 1910'lerde
Doğum: Lady Alexandra Victoria Alberta Edwina Louise Duff 17 Mayıs 1891(1891-05-17) East Sheen Lodge, Richmond, London, İngiltere
Ölüm: 26 Şubat 1959 (67 yaşında) St John's Wood, London, İngiltere
Defin: 3 Mart 1959 St Ninian's Chapel, Braemar, İskoçya
Eş(ler)i: Connaught’dan Prenses Arthur (15 Ekim 1913-12 Eylül 1938)
Çocuk(lar)ı: Alastair Windsor, 2. Connaught ve Strathearn Dükü
Babası: Alexander Duff
Annesi: Louise (kraliyet prensesi)
Fife Düşesi Prenses Alexandra (d. 17 Mayıs 1891 - ö. 26 Şubat 1959), İngiliz bir prenses.