Bagikan melalui


Menghindari Buffer Overruns

Buffer overrun adalah salah satu sumber risiko keamanan yang paling umum. Buffer overrun pada dasarnya disebabkan oleh memperlakukan input eksternal yang tidak dicentang sebagai data yang dapat dipercaya. Tindakan menyalin data ini, menggunakan operasi seperti CopyMemory, strcat, strcpy, atau wcscpy, dapat membuat hasil yang tidak diantisipasi, yang memungkinkan kerusakan sistem. Dalam kasus terbaik, aplikasi Anda akan membatalkan dengan cadangan inti, kesalahan segmentasi, atau pelanggaran akses. Dalam kasus terburuk, penyerang dapat mengeksploitasi buffer overrun dengan memperkenalkan dan mengeksekusi kode berbahaya lainnya dalam proses Anda. Menyalin data yang tidak dicentang, memasukkan data ke dalam buffer berbasis tumpukan adalah penyebab paling umum dari kesalahan yang dapat dieksploitasi.

Overrun buffer dapat terjadi dengan berbagai cara. Daftar berikut ini menyediakan pengenalan singkat tentang beberapa jenis situasi buffer yang menyerbu dan menawarkan beberapa ide dan sumber daya untuk membantu Anda menghindari pembuatan risiko baru dan mengurangi yang sudah ada:

Buffer statis mengesampingkan

Overrun buffer statis terjadi ketika buffer, yang telah dideklarasikan pada tumpukan, ditulis ke dengan lebih banyak data daripada yang dialokasikan untuk ditahan. Versi yang kurang jelas dari kesalahan ini terjadi ketika data input pengguna yang belum diverifikasi disalin langsung ke variabel statis, menyebabkan potensi kerusakan tumpukan.

Timbunan berlebih

Timbunan overrun, seperti buffer statis overrun, dapat menyebabkan kerusakan memori dan tumpukan. Karena timbunan overrun terjadi dalam memori tumpukan daripada pada tumpukan, beberapa orang menganggap mereka kurang mampu menyebabkan masalah serius; namun demikian, timbunan overrun membutuhkan perawatan pemrograman nyata dan hanya mampu memungkinkan risiko sistem sebagai buffer statis overrun.

Kesalahan pengindeksan array

Kesalahan pengindeksan array juga merupakan sumber overrun memori. Pemeriksaan batas dan manajemen indeks yang cermat akan membantu mencegah jenis memori ini diserbu.

Mencegah overrun buffer terutama tentang menulis kode yang baik. Selalu validasi semua input Anda dan gagal dengan baik bila perlu. Untuk informasi selengkapnya tentang menulis kode aman, lihat sumber daya berikut ini:

  • Maguire, Steve [1993], Menulis Solid Code, ISBN 1-55615-551-4, Microsoft Press, Redmond, Washington.
  • Howard, Michael dan LeBlanc, David [2003], Menulis Secure Code, 2d ed., ISBN 0-7356-1722-8, Microsoft Press, Redmond, Washington.

Catatan

Sumber daya ini mungkin tidak tersedia dalam beberapa bahasa dan negara.

 

Penanganan string aman adalah masalah lama yang terus ditangani baik dengan mengikuti praktik pemrograman yang baik dan sering kali dengan menggunakan dan memperbaiki sistem yang ada dengan fungsi penanganan string yang aman. Contoh set fungsi seperti itu untuk shell Windows dimulai dengan StringCbCat.