You are on page 1of 3

Serangan Buffer Overflow

Oleh: Mochammad Firdaus Agung

Buffer overflow merupakan serangan yang dilakukan dengan memanfaatkan kelemahan pada
program yang dibuat yaitu memiliki celah untuk dimodifikasi. Serangan buffer overflow
sendiri terjadi karena penyerang melakukan input yang berlebihan pada program yang
dijalankan sehingga program mengalami kelebihan muatan dan memory tidak dapat
mengalokasikannya.

Ketika memory tidak mampu menampung input yang berlebihan maka akan memberikan
kesempatan kepada penyerang untuk menindih data pada program dan mengambil alih
kontrol program yang berhasil diserang.

Buffer overflow mampu terjadi karena adanya celah kelemahan pada pemrograman terutama
pada bahasa pemrograman C dan C++. Buffer adalah alokasi yang disediakan di memory
seperti array atau pointer di C. di bahasa C dan C++, tidak ada pembatasan otomatis pada
buffernya, yang mana user dapat menulis input melewati buffer.

Penindihan data pada buffer overflow menggunakan konsep dari struktur data yaitu adalah
stack (tumpukkan). Stack adalah beberapa blok dari memory yang berisi data. Sebuah stack
pointer (SP) menunjuk paling atas dalam stack. Ketika pemanggilan fungsi terbentuk,
parameter fungsi masuk ke dalam stack dari kanan ke kiri. Kemudian alamat pengembalian
nilai (alamat yang akan dieksekusi setelah pengembalian nilai fungsi yang ditunjuk oleh
frame pointer (FP), masuk ke dalam stack. Frame pointer digunakan sebagai referensi
variabel lokal dan parameter fungsi, karena itu semua adalah kesatuan dari FP. otomatisasi
lokal variabel masuk ke dalam stack setelah FP. Dalam Implementasinya,
stack terpenuhi dari alamat memory yang besar ke yang kecil.

Pada serangan buffer overflow ini, penyerang terus melakukan input data sehingga data terus
bertumpuk di memory hingga melebihi kapasitasnya dan mengakibatkan crash. Attacker
menggunakan teknik buffer overflow untuk mendapatkan akses root. Attacker mencoba
mengeksekusi buffer overflowwing area, menimpa nilai dari return address yang mengisi
nilai ke buffer dan mengeksekusi kode yang dapat merugikan korban. Biasanya dimasukkan
ke dalam program menggunakan environment variables atau program input parameters.

Trik Menghindari Buffer Overflow

Sebenarnya tidak ada cara yang benar-benar berhasil untuk mencegah serangan buffer
overflow, hal yang bias dilakukan hanya upaya meminimalisir serangan buffer overflow yang
dapat mengakibatkan kerusakkan stack.

1. Teliti dalam menulis kode

Buffer overflow adalah hasil dari input yang berlebihan ke dalam buffer. C library
seperti strcpy(), strcat(), sprintf() dan vsprintf() beroperasi pada null terminated
strings dan tidak mengecek batasan input. gets() juga fungsi lainnya yang
memasukkan input ke dalam buffer dari stdin. Pada scanf() juga bisa mengakibatkan
buffer overflows. Sehingga programmer harus menghindari menuliskan perintah
demikian dan melakukan batasan dalam pengaturan input data.

2. Stack execute invalidation : Karena perintah yang dapat merugikan (contoh,


instruksi assembly untuk mengambil alih root shell) merupakan input argument ke
dalam program, ini tersimpan ke dalam stack dan bukan dalam code segment. Oleh
karena itu, solusi mudahnya adalah tidak mempebolehkan stack mengeksekusi
instruksi apapun. Kode apapun yang dieksekusi dengan kode lainnya di dalam stack
dapat mengakibatkan segmentation violation.

3. Compiler tools : Beberapa tahun terakhir, compiler mempunyai kemampuan lebih.


Beberapa compiler dilengkapi peringatan dalam penggunakan construct yang tidak
aman seperti gets(), strcpy().

Compiler tool yang terbaru biasanya memiliki fitur untuk bounds checking, sehingga
mampu melakukan generate kode yang built-in tanpa mengubah struktur kode yang
dapat menghindarkan penggunaan ilegal addressess. Kode apapun yang dicoba untuk
mengakses illegal address tidak diperbolehkan untuk dieksekusi.

Biasanya pada komputer terbaru memiliki fitur seperti NX (No Execute) atau XD (Execute
Disabled) yang berkonjungsi dengan software compiler.

System operasi berbasis Unix memiliki fitur executable space protection dalam include dari
optional package:

-PaX

-Exec Shield

-OpenWall

Varian terbaru dari Microsoft Windows juga memiliki support terhadap executable space
protection. Beberapa adds on yang tersedia adalah:

-BufferShield

-StackDefender

Sumber referensi:

http://www.worldfriend.web.id/-konsep-buffer-overflow-vurnabilities-dan-pencegahannya

http://en.wikipedia.org/wiki/Buffer_overflow
Mochammad Firdaus Agung / mfirdausagung@gmail.com

Jakarta, 1 Maret 2011

Selasa 10:29

You might also like