Apa itu Buffer Overflow?
Apa itu Buffer Overflow ?
Gambaran
Kondisi buffer overflow terjadi ketika program mencoba untuk menempatkan lebih banyak data dalam buffer daripada yang dapat ditampungnya atau ketika program mencoba untuk meletakkan data di area memori melewati buffer. Dalam hal ini, buffer adalah bagian berurutan dari memori yang dialokasikan untuk memuat apa pun dari string karakter hingga array bilangan bulat. Menulis di luar batas blok memori yang dialokasikan dapat merusak data, merusak program, atau menyebabkan eksekusi kode berbahaya.
Deskripsi
Buffer overflow mungkin merupakan bentuk kerentanan keamanan perangkat lunak yang paling terkenal. Sebagian besar pengembang perangkat lunak tahu apa itu kerentanan buffer overflow, tetapi serangan buffer overflow terhadap aplikasi lama dan yang baru dikembangkan masih cukup umum. Sebagian dari masalahnya adalah karena berbagai macam cara buffer overflows dapat terjadi, dan sebagian lagi karena teknik rawan kesalahan yang sering digunakan untuk mencegahnya.
Buffer overflows tidak mudah ditemukan dan bahkan ketika ditemukan, biasanya sangat sulit untuk dieksploitasi. Namun demikian, penyerang telah berhasil mengidentifikasi buffer overflows dalam rangkaian produk dan komponen yang mengejutkan.
Dalam eksploitasi buffer overflow klasik, penyerang mengirim data ke program, yang disimpan dalam buffer tumpukan berukuran kecil. Hasilnya adalah informasi pada tumpukan panggilan ditimpa, termasuk penunjuk kembali fungsi. Data menetapkan nilai penunjuk kembali sehingga ketika fungsi kembali, itu mentransfer kontrol ke kode berbahaya yang terdapat dalam data penyerang.
Meskipun jenis stack buffer overflow ini masih umum di beberapa platform dan di beberapa komunitas pengembangan, terdapat berbagai jenis buffer overflow lainnya, termasuk Heap buffer overflow dan Off-by-one Error. Kelas kelemahan yang sangat mirip lainnya dikenal sebagai serangan Format string . Ada sejumlah buku bagus yang memberikan informasi rinci tentang cara kerja serangan buffer overflow, termasuk Membangun Perangkat Lunak Aman [1], Menulis Kode Aman [2], dan Buku Pegangan The Shellcoder [3].
Pada level kode, kerentanan buffer overflow biasanya melibatkan pelanggaran asumsi programmer. Banyak fungsi manipulasi memori dalam C dan C ++ tidak melakukan pemeriksaan batas dan dapat dengan mudah menimpa batas buffer yang dialokasikan tempat mereka beroperasi. Bahkan fungsi yang dibatasi, seperti strncpy (), dapat menyebabkan kerentanan jika digunakan secara tidak benar. Kombinasi manipulasi memori dan asumsi yang salah tentang ukuran atau susunan suatu data adalah akar penyebab sebagian besar buffer overflow.
Kerentanan buffer overflow biasanya terjadi dalam kode yang:
- Mengandalkan data eksternal untuk mengontrol perilakunya
- Bergantung pada properti data yang diberlakukan di luar cakupan langsung kode
- Begitu kompleks sehingga programmer tidak dapat memprediksi perilakunya secara akurat
Buffer Overflow dan Aplikasi Web
Penyerang menggunakan buffer overflows untuk merusak tumpukan eksekusi aplikasi web. Dengan mengirimkan masukan yang dibuat dengan hati-hati ke aplikasi web, penyerang dapat menyebabkan aplikasi web mengeksekusi kode arbitrer - secara efektif mengambil alih mesin.
Cacat buffer overflow dapat muncul di produk server web atau server aplikasi yang melayani aspek statis dan dinamis situs, atau aplikasi web itu sendiri. Buffer overflow yang ditemukan di produk server yang banyak digunakan kemungkinan besar akan diketahui secara luas dan dapat menimbulkan risiko yang signifikan bagi pengguna produk ini. Saat aplikasi web menggunakan perpustakaan, seperti perpustakaan grafik untuk menghasilkan gambar, mereka membuka diri terhadap potensi serangan buffer overflow.
Buffer overflows juga dapat ditemukan dalam kode aplikasi web khusus, dan bahkan lebih mungkin terjadi mengingat kurangnya pengawasan yang biasanya dilakukan oleh aplikasi web. Cacat buffer overflow dalam aplikasi web khusus cenderung tidak terdeteksi karena biasanya akan ada jauh lebih sedikit peretas yang mencoba menemukan dan mengeksploitasi kelemahan semacam itu dalam aplikasi tertentu. Jika ditemukan dalam aplikasi khusus, kemampuan untuk mengeksploitasi cacat (selain merusak aplikasi) secara signifikan dikurangi oleh fakta bahwa kode sumber dan pesan kesalahan terperinci untuk aplikasi biasanya tidak tersedia bagi peretas.
Konsekuensi
- Kategori: Ketersediaan: Buffer overflows umumnya menyebabkan error. Serangan lain yang mengarah ke kurangnya ketersediaan dimungkinkan, termasuk menempatkan program ke loop tak terbatas.
- Kontrol akses (pemrosesan instruksi): Buffer overflows sering kali dapat digunakan untuk mengeksekusi kode arbitrer, yang biasanya berada di luar cakupan kebijakan keamanan implisit program.
- Lainnya: Jika konsekuensinya adalah eksekusi kode arbitrer, ini sering kali dapat digunakan untuk menumbangkan layanan keamanan lainnya.
Lingkungan yang Terpengaruh
Hampir semua server web, server aplikasi, dan lingkungan aplikasi web yang dikenal rentan terhadap buffer overflows, kecuali lingkungan yang ditulis dalam bahasa yang ditafsirkan seperti Java atau Python, yang kebal terhadap serangan ini (kecuali untuk overflow di Interpretor itu sendiri).
Peron
- Bahasa: C, C ++, Fortran, Assembly
- Platform operasi: Semua, meskipun tindakan pencegahan parsial dapat diterapkan, tergantung pada lingkungan.

Komentar
Posting Komentar