Jumat, 10 Mei 2013

SOFTWARE SECURITY - Buffer Overflow

 
Pengertian Buffer Overflow :
Buffer overflow merupakan salah satu cara yang digunakan hacker untuk mengekploitasi sebuah sistem komputer yang mempunyai kelemahan pada salah satu aplikasi yang berada di sistem tersebut. Sebuah aplikasi dapat di-buffer-overflow karena memang aplikasi tersebut tidak memiliki kontrol data yang baik, dan biasanya ini tidak di sadari oleh si pembuat program tersebut. Lalu bagaimana seorang hacker dapat memperoleh hak akses terhadap sistem hanya dengan memanfaatkan kelemahan dari suatu aplikasi yang ada di sistem komputer target? Tentu hal ini berkaitan erat dengan
akses yang di miliki oleh aplikasi tersebut.


Pemahaman buffer overflow sendiri adalah keadaan di mana buffer (variabel yang di gunakan suatu aplikasi untuk menyimpan datanya di memori) terisi dengan data yang ukurannya melebihi kapasitasnya sendiri dan akibatnya kelebihan data itu akan mengisi alamat memori lain yang bukan milik variabel tersebut atau dalam hal ini di sebut dengan overwrite.
Kalau OS atau program tidak bisa dikode secara sempurna maka hacker bisa membuat komputer korban jadi terganggu dengan mengirimkan perintah yang dibuat khusus yang membuat gangguan jadi berlangsung lebih lama. Windows 95 paling rentan kalau sudah berhadapan dengan serangan seperti buffer overflow yang banyak dilancarkan lewat internet ini.Saat ini serangan serupa sudah jarang dilancarkan pada sebuah komputer. Namun terkadang hacker masih sering melakukannya untuk memperlambat kinerja sebuah situs.
Kelemahan Buffer Overflow :
Kelemahan Buffer overflow adalah salah satu dari banyak kelemahan dari keamanan komputer.Kelemahan jenis ini dapat digunakan pada remote access atau local access, karena ini dapat memberikan si Attacker kesempatan untuk melanjarkan jurus-jurus dengan koding dikomputer target.
Serangan Buffer overflow terjadi ketika si Attacker memberikan input yang berlebihan pada program yang di jalankan, sehingga program mengalami kelebihan muatan dan memory tidak dapat mengalokasikannya. Ini memberikan kesempatan kepada Attacker untuk menindih data pada program dan men-takeover kontroll program yang dieksekusi attacker.
Buffee overflow hasil dari dari kelemahan bahasa pemrograman c, c++, fortran, dan assembly, yang tidak secara otomatis melakukan pengecekan batas input ketika program dieksekusi. Sebagai akibat dari Buffer overflow dapat menyebatkan crash pada program, atau mempersilahkan si Attacker untuk mengeksekusi perintah atau koding jahatnya untuk menguasai sistem target, seperti tujuan mengambil alih akun root menggunakan metode Buffer overflow.

Macam-macam Serangan Buffer Overflow :
Beberapa serangan yang biasa dilakukan dengan teknik Buffer Overflow antara lain :
a. Buffer overruns pada kebanyakan Web server
Webserver Apache dan IIS memiliki celah keamanan. Worm seperti Code Red (untuk IIS) dan Linux. Slapper (untuk Apache) menjadikan celah keamanan yang lebar.

b. DNS overflow
Beberapa server DNS (BIND) sebelumnya tergolong rentan terhadap overflow. Suatu serangan yang akan memberikan nama DNS sangat panjang. Nama DNS dibatasi hingga 64-byte per subkomponen dan 256 byte secara keseluruhan.

c. Serangan DNS
Server DNS biasanya dijalankan pada mode ‘Trust’ oleh service dan user – maksudnya bahwa server DNS dapat dikompromikan agar melancarkan serangan lebih jauh pada user dan service lainnya. Hal ini menjadikan server DNS merupakan target utama serangan para hacker.

d. Mengelabui cache DNS
Serangan yang umum terhadap server DNS. Sederhananya, bekerja dengan mengirimkan suatu pertanyaan untuk meminta domain yang sesungguhnya (“siapakah www.test.com ini?) dan akan disediakan jawaban yang tentu saja salah (“www.test.com adalah 127.0.01″).


Pencegahan dari buffer overflow :
Tindakan Untuk Mencegah Buffer Overflow : Tidak ada satupun metode yang dijelaskan di bawah yang benar-benar bisa mencegah kemungkinan serangan, namanya juga manusia tempatnya salah dan lupa. Tetapi metode di bawah ini, dapat meminimalisir dari kegiatan buffer overflows yang mengakibatkan kerusakan stack, antara lain :
1. Menulis kode yang aman : 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.
2. Stack execute invalidation : Karena koding jahat (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 konstruk yang tidak aman seperti gets(), strcpy() dan sejenisnya.

Tidak ada komentar: