Tampon taşması ve korumalar (ASLR, stack canary, DEP)
Kısaca: Tampon taşması, bir programın bir bellek alanına sığandan fazla veri yazıp komşu verilerin üzerine yazması durumunda ortaya çıkar. Modern sistemler, istismarı birkaç koruma katmanıyla zorlaştırır.
Biraz daha ayrıntılı: C ve C++ gibi otomatik sınır denetimi olmayan dillerde tipiktir. Üzerine yazılabilecek şeyler değişkenler veya yığındaki (stack) dönüş adresidir.
Ayrıntılı
- Neden:
strcpyveyagetsgibi işlevler uzunluğu denetlemez. Daha güvenli olanlarstrncpy/snprintf, uzunluk denetimleri veya sınır denetimli diller (Rust, Java, Python). - Stack canary: Dönüş adresinin önündeki gizli bir değer, işlevden çıkmadan önce denetlenir. Farklıysa program sonlanır.
- DEP/NX: Veri alanları çalıştırılabilir değildir; enjekte edilen kod çalışmaz.
- ASLR: Yığın, heap ve kütüphane adresleri her başlangıçta değişir; sabit atlama hedefleri olmaz.
- Diğerleri: Kontrol akışı bütünlüğü (CFI), derleyici uyarıları, sanitizer’lar (bkz. Valgrind ve sanitizer’lar), fuzzing.
- Uzun vadede: Bellek güvenli diller tüm bu sorun sınıfını önler.
Ayrıca bak: Exploit