EMZETT.
Giriş yap

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: strcpy veya gets gibi işlevler uzunluğu denetlemez. Daha güvenli olanlar strncpy/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