Stack buffer overflow adalah apa yang terjadi ketika sebuah program membuat entri ke dalam memori komputer yang lebih panjang dari ruang yang dialokasikan. Dalam beberapa keadaan ini dapat merusak data lain dalam memori, menyebabkan masalah dalam menjalankan komputer. Dalam kasus lain, buffer overflow stack dapat dieksploitasi oleh aplikasi jahat untuk mengendalikan bagian lain dari komputer.
Nama dari stack buffer overflow berasal pertama dari stack, yang secara efektif merupakan daftar aktif di mana data diatur: istilah ini berasal dari analogi menumpuk item fisik. Salah satu versinya, tumpukan panggilan, adalah daftar yang digunakan program komputer untuk melacak berbagai bagian program, subrutin, yang beroperasi pada saat tertentu. Karena tumpukan panggilan beroperasi secara sementara dan perlu diakses dengan cepat, tumpukan ini terletak di memori komputer daripada di penyimpanan permanen seperti hard drive.
Karena sistem operasi modern memungkinkan beberapa program berjalan sekaligus, ada kebutuhan untuk mengatur cara alokasi memori, termasuk untuk memanggil tumpukan. Ini dilakukan secara efisien dengan menetapkan buffer, ruang dalam memori yang dirancang agar cukup besar untuk mengatasi ruang maksimum yang dibutuhkan oleh buffer tertentu. Dalam kebanyakan kasus, beberapa ruang akan tidak digunakan, sehingga bertindak sebagai penyangga antara data dari aplikasi yang berbeda, meninggalkan ruang untuk mengatasi jika seseorang tiba-tiba membutuhkan ruang ekstra. Salah satu cara untuk memvisualisasikannya adalah dengan memikirkan perpustakaan yang mengalokasikan sejumlah ruang untuk setiap mata pelajaran, memastikan untuk meninggalkan beberapa ruang ekstra untuk mengatasi jika, misalnya, semua buku tentang satu mata pelajaran ada di perpustakaan di waktu yang sama, daripada salah satu dari mereka diperiksa.
Stack buffer overflow terjadi ketika sebuah program menulis data stack panggilan ke buffer dengan cara yang melebihi ruang yang dialokasikan. Ini bisa terjadi karena kesalahan, biasanya melalui bug dalam suatu program. Misalnya, jika aplikasi dirancang untuk memungkinkan pengguna mengetikkan nomor telepon, tetapi tidak memiliki batasan jumlah karakter yang dapat dimasukkan, peretas mungkin dapat menggunakan bidang tanpa batas untuk secara sengaja menyebabkan buffer overflow tumpukan . Bergantung pada cara kerja sistem operasi, ini dapat memungkinkan peretas untuk secara tidak langsung mengakses aplikasi lain atau sistem operasi itu sendiri.
Ada beberapa pendekatan untuk mengurangi efek dari stack buffer overflow. Salah satunya dikenal sebagai pengacakan tata letak ruang alamat. Ini mengatur area data terpenting di komputer secara acak. Idenya adalah bahwa bahkan jika seorang hacker menyebabkan atau mengeksploitasi stack buffer overflow, ia tidak akan dapat mengeksploitasi pelanggaran dengan cara yang dapat diandalkan.