Apa itu Buffer Overflow?

Buffer overflow terjadi ketika sebuah program mencoba menulis ke buffer dan melangkah keluar dari batasannya, mengakibatkan program menulis informasi ke memori yang berpotensi dimiliki oleh program lain. Ini melanggar integritas memori dalam sistem operasi, yang mengakibatkan kesalahan serius dan potensi crash untuk program yang dijalankan. Bahaya utama buffer overflow berasal dari dua elemen utama. Pertama, informasi yang ditulis di luar buffer seolah-olah “hilang”, karena peta memori komputer — daftar lokasi memorinya — tidak dapat menjelaskannya. Kedua, buffer overflow dapat secara tidak sengaja menimpa informasi yang disimpan dalam memori untuk program lain, secara efektif mengganggu eksekusi program lain juga.

Sebuah “buffer” adalah wilayah memori yang digunakan sebagai lokasi penyimpanan sementara saat komputer mentransfer informasi dari satu titik ke titik lain. Penggunaan buffer yang paling umum biasanya dalam pemutaran video atau audio, di mana komputer memberi isyarat tambahan X detik rekaman atau audio dalam memori, memastikan pemutaran tidak akan terganggu jika ada yang tidak beres untuk sementara pada sistem. Buffer hanya ada di dalam lokasi tertentu yang telah ditentukan sebelumnya di dalam memori komputer, seperti halnya sebuah negara yang hanya ada di dalam garis batas yang digambar di peta. Melangkah di luar “garis” virtual ini menghasilkan masalah tidak hanya untuk program yang sedang berjalan, tetapi juga untuk program lain di sistem.

Pada dasarnya, program telah melangkah di luar yurisdiksi yang ditugaskan dan telah menyerbu ruang program kerja lain. Setelah ini terjadi, informasi yang ditulis di luar buffer secara efektif jatuh dari peta komputer; dengan kata lain, sistem tidak lagi memiliki cara untuk mengambilnya. Karena komputer hanya “tahu” untuk mencari informasi buffer di dalam ruang buffer khusus yang dialokasikan di memori, komputer tidak memiliki cara untuk mencari tahu ke mana informasi yang meluap itu pergi.

Selain itu, buffer overflow berpotensi mengganggu program lain yang berjalan di komputer. Bayangkan bahwa ruang penyimpanan memori di kedua sisi buffer telah ditetapkan untuk program lain yang sedang berjalan. Setelah informasi dalam buffer melewati area yang dirancang, itu akan menimpa dan merusak informasi apa pun yang sudah disimpan di bagian memori tersebut. Oleh karena itu, buffer overflow adalah masalah yang dapat merusak efektivitas program yang berdekatan serta merusak operasinya sendiri.