Güvenli kodlama

Vikipedi, özgür ansiklopedi
Gezinti kısmına atla Arama kısmına atla

Güvenli kodlama bilgisayarın yazılımsal olarak güvenlik zafiyetlerinden korumayı amaçlayan bir yöntemdir.Yazılım bozuklukları,hatabug,mantıksal hatalar yazılımı sömürme amaçlı kullanılan güvenlik zafiyetlerin başında gelir .[1] Raporlanan zafiyetlerden elde edilen bilgiler ışığında güvenlik uzmanları çoğu zafiyetin ufak programlama hatalarından kaynaklandığını keşfetmiştir.Güvenli olmayan bu kodlar incelenerek eğitimci yazılım geliştiren kişiler ve kurumlar bu açıklıkları azaltmayı hedeflemektedir.

Ara Bellek Aşımı önlemi[değiştir | kaynağı değiştir]

Ara bellek Aşımı,İşlemci belirlenen ara bellek uzunluğunu aştığında ortaya çıkan genel yazılım güvenlik açığıdır. Örneğin veri ögelerini saklamak için 8 bölüt varsa,9 veri ögesi saklanmak istenildiğinde problem ortaya çıkar.Bilgisayar belleği taşan veri sorunuyla karşılaştığında verinin bir sonraki yerine üstüne yazma işlemi gerçekleştirir,bu da güvenlik zafiyetine(yığın aşılması) veya programın bitirilmesine(bölümlendirme hatası) sebebiyet verebilir.[1]

Ara bellek aşımına eğilimi olan bir C programı aşağıda verilmiştir.

int vulnerable_function(char * large_user_input) {
char dst[SMALL];
strcpy(dst, large_user_input);
}

Eğer kullanıcı hedef bellekten daha büyük bir girdi verirse,ara bellek taşması meydana gelebilir. Bu tehlikeli programı düzeltmek için, strncpy metodu olası ara bellek taşması problemini önleyebilir.

int secure_function(char * user_input) {
char dst[BUF_SIZE];
   //copy a maximum of BUF_SIZE bytes
strncpy(dst, user_input,BUF_SIZE);
}

Diğer güvenli seçenek ise hafızayı dinamik olarak yığın yapısıyla ayırmaktır. Bazı programlama dillerinde mallocmalloc yardımıyla hafızada alan ayrılıp,ger bırakılabilir demalloc.

char * secure_copy(char * src) {
int len = strlen(src);
char * dst = (char *) malloc(len + 1);
if(dst != NULL){
strncpy(dst, src, len);
//append null terminator 
   dst[len] = '\0';
}
return dst;
}

Yukarıdaki kod parçasında, program src into dst, içeriklerini kopyalar,bunu yaparken de malloc'tan gelen dönüş tipini kontrol eder,bu şekilde hedef belleğin yeterli hafızası olup olmadığını kontrol etmiş olur.

Biçim-Dizgi Saldırısı Önlemleri[değiştir | kaynağı değiştir]

Biçim Dizgi Saldırısı kötü amaçlı kullanıcının fonksiyon içine argüman olarak spesifik girdiler vererek biçimlendirmeye çalışmasıdır,örneğin printf() bir biçim-dizgi saldırısıdır.Düşman kişi okuma ve yazma yaparak saldırıyı gerçekleştirebilir.

C fonksiyonu çıktıyı stdout a yazar.Eğer parametreler biçimsel olarak uygun değilse,çeşitli güvenlik hatalarıyla karşılaşılabilir.Aşağıda biçim dizgi hatasına sebebiyet verebilecek örnek bir program verilmiştir.

int vulnerable_print(char * malicious_input) {
printf(malicious_input);
}

Programın uygunsuz hafıza okumasından dolayı sona erdirebilecek hatalı olarak verilebilecek argüman “%s%s%s%s%s%s%s”, parametre olarak verilmiştir.

  1. ^ Kaynak hatası: Geçersiz <ref> etiketi; bss2001 isimli refler için metin temin edilmemiş (Bkz: Kaynak gösterme)