Tampon taşması saldırıları nasıl önlenir
1. Adım
Taşma saldırılarını önlemek için güvenlik kodunu yazın. C'de, bilgisayar korsanlarının arabellekleri aşırı doldurmak için kullanabileceği bir dizi güvenlik açığı işlevi vardır. Sınırları kontrol etmeyen strcpy (), strcat (), sprintf () ve vsprintf () kullanımınızı en aza indirin. Mümkünse, kaç karakterin okunacağını belirtmeyen ve böylece kodunuzu savunmasız bırakan gets () öğesini kullanmaktan kaçının. Scanf () yöntemini kullanırsanız, taşmaları önlemek için% s biçimi için bir genişlik belirttiğinizden emin olun.
2. Adım
Arabellek taşmasını önlemek için trambolin kullanıp kullanamayacağınızı kontrol edin. Bellek yığınlarında ve kodda arabellek taşması meydana geldiğinden, bu eylemleri engellemek için yığınların küçük bir kod parçacığı ekleyerek herhangi bir kodu yürütmesini engellemek en basit çözüm olarak görünmektedir. Bu Linux'ta mümkündür, ancak çok zordur. Sadece birkaç derleyici, işlev çağrısı kodu ile fonksiyonun kendisi arasında bir engel olarak hareket eden, trampolinler olarak adlandırılan küçük kod parçalarını kullanır. Bu nedenle, kötü amaçlı kod bir arabelleğin yerini almaya çalışırsa, trambolin bilgisayar korsanlarının girişimlerini engelleyebilir ve etkisiz hale getirebilir.
3. adım
Sizi saldırılara karşı savunmasız bırakan kod kullandığınızda size uyarılar vermek için derleme araçlarını kullanın. Bu araçlardan bazıları, yabancıların yasa dışı adreslere erişmesini yasaklayan ve bu tür bir yürütme girişiminde bulunan kodu devre dışı bırakacak kodlar üretecektir. StackShield ve StackGuard gibi ürünler harika bir yardımcıdır. StackSheild bir fonksiyonun dönüş adresini analiz eder ve düzensizlik durumunda onu sonlandırır. StackGuard, gönderenin adresine bir Canary sözcüğü yerleştirir ve kelimenin değişip değiştirilmediğini kontrol ederek, bir işlevi olduğu zaman sonlandırır.
4. Adım
Dinamik, çalışma zamanı ortamında güvenliği denetlemek için libsafe gibi araçlar yükleyin. Libsafe Linux üzerinde çalışır ve bir yığın çerçevenin en yakın dönüş adresini kontrol eder, daha sonra adresin üzerine yazılmadığından emin olur. Libsafe, gets (), strcpy () ve scanf () gibi güvenli olmayan işlevleri de değiştirir.