Güvenli Yazılım Geliştirme ve Yazılım Güvenliği Ders-2

Bilişim güvenliği ihlallerinin yazılım güvenliği problemşerşnden kaynaklanma oranı %80, ve çok yüksek bir oran.

Yazılım geliştirme ortamlarında son yıllarda ciddi gelişmeler yaşanmakta, programlama dilleri güvenli programlama ortamı sunma üzerine yeni servisler ve ortamlar sunmaktadır.

Bugün 1000’i aşkın programlama dili olduğu tahmin edilmektedir. Bu dillerin hepsini bilme olanağı yoktur.

Programlama dilleri de bilgisayarın gelişim sürecinde çeşitli aşamalardan geçmişlerdir.

Bu aşamalar genel olarak 4 grupta toplanmaktadır.

1- Birinci kuşak diller : 0-1, düğmeleri aç kapa, makine dili

2- İkinci kuşak diller : veri ve komutlar çok kısa adlarla

3- Üçüncü kuşak diller : komutlar emir cümleleri şeklinde

4- Dördüncü kuşak diller : doğal dile yakın komutlar

Doğal dile yakın programlama dillerinde yazılım geliştirme süreci hem daha kısa oluyor hem de öğrenimi daha kolay oluyor ancak makine diline yakın dillerde hız daha üst seviyelerdedir.

Programlamada en önemli etkenlerden biride derleyicilerdir. Bize gerekli kolaylıkları sağlıyor olamaları çok önemlidir.

Programlamada önemli olan az kod çok iştir. özellikle programın hatalardan arındırılmış programlama ilkelerine uyumlu olması önemlidir.

Her yazılım için genel yaşam süreci:

Yazılımların yaygın olarak ullanılmaya başlandığı ilk yıllarda kaliteli ve olgun yazılım üretmek, 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.

Budurumun en büyük tetikleyicisi son yıllarda güvenlik açıklıklarının artmasıdır. Artan bu güvenlik tehditleri hiç hesaba katılmayan sürpriz maliyetleri de beraberinde getirmektedir.

Yazılım geliştirmede erken bir süreçte farkına varılan yazılım açıklıklarının düzeltilmesinin daha ileri süreçlerde farkına varılan açıklıklara göre daha az maliyetli olacağı yazılım endüstrisince yaygın olarak kabul edilen bir ilkedir.

“Trusted Computing Group” tarafından konmuş olan güvenilir bilişim kavramı; gizlilik, bütünlük, erişilebilirlik ve kurtarılabilirlik olmak üzere dört temel kavram üzerinde durmaktadır.

Güvenli yazılım geliştirme süreçlerinde ayrıca;

  • değişiklik ve konfigrasyon yönetimi,
  • geliştirme,
  • test ve üretim ortamı ayrışımı,
  • geliştirme ortamı gerçek verilerin kullanılmaması,
  • üretim ortamına almadan önce kod incelemesi,
  • güvenli programlama teknikleri kullanımı,
  • uygulama güvenlik duvarı kullanımı ya da kaynak kod inceleme hizmeti alınması

gibi çalışmaların yapılması da güvenliğe katkı sağlayacaktır.

Güvbenli yazılım geliştirme sürecinde ele alınması gereken temel olarak dokuz ana güvenlik konusu vardır. Bunlar;

  • Girdi Geçerleme (Input Validation)
  • Kimlik Doğrulama (Authentication)
  • Yetkilendirme (Authorization)
  • Konfigrrasyon Yönetimi (Configration Management)
  • Hassas Bilgi (Sensitive Information)
  • Kriptografi (Cryptography)
  • Parametre Maniplasyonu (Parameter Manipulations)
  • Hata Yönetimi (Exception Management)
  • Kayıt Tutma ve Denetimi (Logging and Auditing)

Siber polislerin en zorlandığı husus; takip ediyorlar ancak bir yerde sadece bir şeylerin aktığını hissediyorlar yani içeriğe ulaşamıyorlar.

Standartlaştırma, bir süreç üzerinde deneyim kazanıp süreci geliştirerek bir standarda dönüştürme işlemidir.

Güvenli yazılım geliştirme sürecinde bazı standartlar ve modellerden yararlanılmaktadır. Bunlar;

  • Yetenek Olgunluk Modeli (CMM)
  • Tümleşik Yetenek Olgunluk Modeli (CMMI)
  • Deferal Havacılık Yönetim Tümleşik Yetenek Olgunluk Modeli.
  • Güvenli CMM/Güvenli Yazılım Metadolojisi (TCMM/TSM)
  • Sistem Güvenlik Mühendisliği Yetenek Olgunluk (SSE-CMM)
  • Microsoft Güvenlik Geliştirme Yaşam Döngüsü (SDL)
  • Yazılım Güvencesi Olgunluk Modeli (SAMM) & OWASP
  • ISO 27001 Bilgi Güvenliği Yönetim Sistemi
  • PUKÖ Modeli
  • BSIMM Modeli

Kamu kurumlarındaki ihalelere başvururuken projenin hangi standartlara – standarta göre çıkarılacağını belirtiriz gerekiyor.

Standartları onaylatıp sertifikasını almak için laboratuar testlerinden geçirmemiz gerekiyor.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir