Saya sedang melakukan kursus di perguruan tinggi, di mana salah satu lab adalah untuk melakukan eksploitasi buffer overflow pada kode yang mereka berikan kepada kami. Ini berkisar dari eksploitasi sederhana seperti mengubah alamat kembali untuk fungsi pada tumpukan untuk kembali ke fungsi yang berbeda, sampai kode yang mengubah register program / keadaan memori tetapi kemudian kembali ke fungsi yang Anda panggil, yang berarti bahwa fungsi yang Anda panggil benar-benar lupa akan exploit.
Saya melakukan riset tentang ini, dan jenis eksploitasi ini digunakan cukup banyak di mana-mana bahkan sekarang, dalam hal-hal seperti menjalankan homebrew di Wii , dan jailbreak yang tidak ditambatkan untuk iOS 4.3.1
Pertanyaan saya adalah mengapa masalah ini begitu sulit untuk diperbaiki? Sudah jelas ini adalah salah satu exploit besar yang digunakan untuk meretas ratusan hal, tetapi sepertinya akan sangat mudah untuk memperbaikinya dengan hanya memotong input apa saja melewati panjang yang diizinkan, dan hanya membersihkan semua input yang Anda ambil.
EDIT: Perspektif lain yang saya ingin jawaban untuk dipertimbangkan - mengapa pencipta C tidak memperbaiki masalah ini dengan mengimplementasikan kembali perpustakaan?