Güvenlik ve Güvenli Kodlama İlkeleri Hakkında

Güvenlik, gerçek kişi, kurum ve ülkelerin maddi ve manevi varlıklarına yönelen/
yönelebilecek tehditlere karşı tedbir alma işlemi olarak tanımlanabilir. Sistemleri ayakta
tutan ve en önemli kaynak olan bilgi varlıklarının güvenliğinin sağlanması yetkilendirme,
belgeleme, denetim, bütünlük, uygunluk ve gizlilik ilkelerinin sağlanması ile gerçekleştirilebilir.

Belgeleme, sistemin içinde olan veya sistemden yararlanan her türlü varlığın “kim olduğu” sorusunun karşılığıdır. Yetkilendirme, sisteme erişim izinlerinin ve kaynaklarının kontrol edilmesidir. Denetim, sistemdeki her işleyişin inkâr edilmeyi önlemek amacıyla kayıt altına alınmasıdır. Gizlilik, verilerin ve sistem işleyişinin her türlü üçüncü şahıs ve uygulamaya karşı izlenmesini önleyici tedbirlerin alınmasıdır.

Gizliliği sağlamak için ağ trafiğini dinleme, monitörleme, şifreleme, yetki kontrolü gibi tedbirlerin alınması
önerilebilir. Bütünlük, verinin değiştirilmeden muhafazasının sağlanması, uygunluk ise yetkili kullanıcılar için mevcut durumun korunması ve yetkisiz kullanıcı erişimleri ile atakların sisteme ulaşıp ulaşamadığının kontrol edilmesi durumudur. Sahip olunan bilginin güvenliği, yetki kontrolü, güvenlik, bütünlük ve kullanılabilirlik ilkelerinin her birinin sağlanması ile gerçekleştirilebilir.

Durum yazılım kalitesi açısından değerlendirildiğinde verinin güvenliğinin sağlanması uygulamanın güvenli bir mimari temeline oturtulmasına bağlıdır. Mimari oluşturulurken hareket noktası olarak “kötü niyetli biri olsam…” yaklaşımı seçilebilir. Bu yaklaşım Andrew van der Stock tarafından uygulama güvenliği bakış açısı için geliştirilen “kötü düşünce” sisteminin ürünüdür. Bu sistemdeki amaç, geliştirilen uygulamaya üçüncü kişi olarak bakmayı başararak mevcut açıkların bulunmasıdır.

Mimarinin oluşturulması malesef yeterli bir adım değildir. Bundan sonraki adımda güvenli kodlama ilkeleri kullanılarak kodun geliştirilmesi tavsiye edilir. Kodlama esnasında aşağıda maddelendirilen noktalara dikkat edilmesi güvenli kodlama ilkelerinin gerçekleştirilmesi açısından önemlidir. Bu hususlar aşağıdaki maddelerle özetlenmiştir:

  • Genel risk oranını azaltmak için saldırı yüzeyi alanının azaltılmasına dikkat
    edilmelidir. Saldırı yüzeyinin azaltılması, uygulamaya erişim sağlayan ve uygulama
    ile dış çevre arasındaki bağlantıların mümkün olduğunca sınırlı noktalardan
    gerçekleştirilmesi anlamına gelmektedir.
  • Güvenli ön tanımlamalar ile kullanıcı işlemleri için kurallar tanımlanmalıdır.
  • Sisteme gelen ajanların iş süreçleri en az öncelik ilkesi gereği kontrol edilmeli
    özellikle sunuculara erişim isteklerine kontrolsüz öncelik verilmemelidir.
  • Kademeli savunma ile savunma yöntemleri belli bir adım sırası ile yerleştirilmeli ve
    böylece savunma alanı arttırılmalıdır.
  • Güvenli aksama ilkesi sistemde oluşabilecek aksamaların önceden değerlendirilerek
    bu durumlarda açık oluşmasının önüne geçilmesini hedefleyen bir ilke olup bu
    ilkenin uygulanması yetkisiz erişimlerin ve istenmeyen bilgi ifşasının önüne
    geçilebilmektedir.
  • Uygulamanın üzerinde koştuğu ya da hizmet verdiği dış ortamlar her zaman güvenli değildir. Sistem sağlayıcıları önlemleri almamış olabilirler. Bu ihtimal her zaman göz önünde bulundurulmalıdır.
  • Yetki seviyelerine göre görev ayrımları yapılarak iş akışının izlenmesi ve güvenliği sağlanabilir.
  • Belirsizlik yolu ilkesi “hiç bir güvenlik tam güvenli değildir” yaklaşımını ifade etmektedir. Dolayısıyla bu nokta her zaman akılda tutulmalıdır.
  • Güvenliğin sağlanması için birbirini takip eden birden fazla güvenlik tedbiri oluşturulmalı, sadece kodlama standartlarına güvenilmemelidir.
  • Basitlik ilkesi gereği kod, bakımının ve kontrolünün kolaylaştırılması için mümkün olan en basit şekilde yazılmalıdır.
  • Güvenliğin sağlanmasının en önemli adımlarından biri de test sürecinin gerçekleştirilmesidir. Kod yazıldığında ya da güncelleme yapıldığında olası durumları kontrol edecek test grupları oluşturularak kontroller sağlanmalıdır.

Kaynak: Yılmaz, S. ve Sağıroğlu, Ş. (2013, Eylül). Yazılım Güvenliği Üzerine Bir İnceleme. 6. Uluslar arası Bilgi Güvenliği ve Kriptoloji Konferansında sunuldu, Ankara.

5/5 - (2 votes)