|  |
| --- |
|  Makale serilerinden |
| **Bilgi güvenliği** |
| Güvenlik kategorileri
* İnternet güvenliği
* Siber savaş
* Bilgisayar güvenliği
* Mobil güvenlik
* Ağ güvenliği
 |
| Tehditler
* Gelişmiş Sürekli Tehdit
* Arka kapı
* Bilişim suçları
* Güvenlik açığı
* Eavesdropping
* Exploit
* Truva atı
* Virüs ve solucan
* Fidye virüsü
* Mantık bombası
* Denial-of-service attack
* Malware
* Payload
* Yemleme
* Veri kazıma
* Casus yazılım
* Rootkit
* Keylogger
 |
| Korunma
* Bilgisayar Erişim Denetimi
* Uygulama güvenliği
	+ Antivirüs yazılımı
	+ Güvenli kodlama
	+ Güvenlik odaklı işletim sistemi
* Kimlik doğrulama
	+ Çok faktörlü kimlik doğrulaması
* Veri merkezli güvenlik
* Yetkilendirme
* Şifreleme
* Güvenlik duvarı
* Saldırı tespit sistemleri
* Mobil güvenli ağ geçidi
 |
| * g
* t
* d
 |

**Güvenli kodlama**, bilgisayarın yazılımsal olarak güvenlik zafiyetlerinden korumayı amaçlayan bir yöntemdir. Yazılım hata ve kusurları ile mantıksal hatalar yazılımı sömürme amaçlı kullanılan güvenlik zafiyetlerin başında gelir. 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
-----------------------

Arabellek Aşımı, iş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.

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 malloc yardımıyla hafızada alan ayrılıp, geri 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
-------------------------------

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.

Kaynakça
--------

1. 1 2  John Viega, Gary McGraw (2001). *Building Secure Software: How to Avoid Security Problems the Right Way*. MAddison-Wesley Professional. s. 528. ISBN 978-0201721522.