Cara mencegah serangan buffer overflow

Serangan luapan baterai menyebabkan sistem menumpahkan data, menyebabkan kekacauan.

Langkah 1

Tulis kode keamanan untuk menghindari serangan meluap. Di C, ada sejumlah fungsi kerentanan yang dapat dieksploitasi hacker untuk memenuhi buffer. Minimalkan penggunaan strcpy (), strcat (), sprintf () dan vsprintf (), yang tidak memeriksa batas. Jika memungkinkan, hindari penggunaan get (), yang tidak menentukan berapa banyak karakter yang harus dibaca dan dengan demikian membuat kode Anda rentan. Jika Anda menggunakan scanf (), pastikan untuk menentukan lebar untuk format% s untuk menghindari limpahan.

Langkah 2

Periksa untuk melihat apakah Anda dapat menggunakan trampolin untuk menghindari buffer overflow. Karena buffer overflow terjadi di tumpukan memori dan bukan dalam kode, solusi paling sederhana tampaknya adalah untuk mencegah tumpukan Anda mengeksekusi kode apa pun dengan menyisipkan potongan kode kecil untuk melarang tindakan ini. Ini mungkin di Linux, tetapi sangat sulit. Hanya beberapa kompiler menggunakan potongan-potongan kecil kode yang disebut trampolin, yang bertindak sebagai penghalang antara kode fungsi panggilan dan fungsi itu sendiri. Oleh karena itu, jika kode jahat mencoba mengganti buffer, trampolin dapat mencegat dan menetralkan upaya para peretas.

Langkah 3

Terapkan alat kompilasi untuk memberi Anda peringatan ketika Anda menggunakan kode yang membuat Anda rentan terhadap serangan. Beberapa alat ini akan menghasilkan kode yang melarang orang luar mengakses alamat ilegal dan menonaktifkan kode yang mencoba eksekusi tersebut. Produk seperti StackShield dan StackGuard sangat membantu. StackSheild akan menganalisis alamat kembali dari suatu fungsi dan menghentikannya dalam kasus ketidakteraturan. StackGuard menempatkan kata Kenari di alamat pengirim dan memeriksa apakah kata telah diubah, mengakhiri fungsi ketika memilikinya.

Langkah 4

Instal alat seperti libsafe untuk memeriksa keamanan di lingkungan run-time yang dinamis. Libsafe berjalan di Linux dan memeriksa alamat pengirim terdekat dari kerangka tumpukan, kemudian memastikan bahwa alamat tidak ditimpa. Libsafe juga akan menggantikan fungsi yang tidak aman, seperti mendapat (), strcpy () dan scanf ().