Apa itu Bug Buffer Overflow
Mari kita pahami dulu apa itu Buffer...
Barangkali ada. Pengertian buffer adalah bagian berurutan dari memori yang diperuntukkan untuk berisi apa pun dari string karakter ke susunan bilangan bulat. Buffer adalah wilayah penyimpanan memori yang menyimpan data sementara saat sedang dipindahkan dari satu lokasi ke lokasi lain.
Pelindung ini biasanya hidup dalam memori RAM. Komputer sering menggunakan buffer untuk membantu meningkatkan kinerja; sebagian besar hard drive modern memanfaatkan buffering untuk mengakses data secara efisien, dan banyak layanan online juga menggunakan buffer. Misalnya, buffer sering digunakan dalam streaming video online untuk mencegah gangguan. Ketika sebuah video di-stream, pemutar video mengunduh dan menyimpan mungkin 20% dari video sekaligus dalam buffer dan kemudian streaming dari buffer itu. Dengan cara ini, penurunan kecil dalam kecepatan koneksi atau gangguan layanan cepat tidak akan memengaruhi kinerja streaming video.
Buffer dirancang untuk berisi sejumlah data tertentu. Kecuali jika program yang menggunakan buffer memiliki instruksi bawaan untuk membuang data ketika terlalu banyak dikirim ke buffer, program akan menimpa data dalam memori yang berdekatan dengan buffer.
-
-
Apa itu Serangan Overflow Buffer?
Sebuah buffer overflow, atau buffer overrun, terjadi ketika lebih banyak data dimasukkan ke dalam buffer panjang tetap daripada buffer dapat menangani. Informasi tambahan, yang harus pergi ke suatu tempat, dapat meluap ke ruang memori yang berdekatan, merusak atau menimpa data yang disimpan di ruang itu. Luapan ini biasanya mengakibatkan kerusakan sistem, tetapi juga menciptakan kesempatan bagi penyerang untuk menjalankan kode sewenang-wenang atau memanipulasi kesalahan coding untuk memicu tindakan jahat.
Sebagai contoh, buffer untuk login kredensial dapat dirancang untuk mengharapkan masukan nama pengguna dan kata sandi 8 bait, jadi jika transaksi melibatkan input 10 bait (yaitu, 2 bait lebih dari yang diharapkan), program dapat menulis kelebihan data melewati bu batas ffer.
Seorang penyerang dapat dengan sengaja memberi makan masukan yang dibuat dengan hati-hati ke dalam sebuah program yang akan menyebabkan program untuk mencoba dan menyimpan masukan itu dalam buffer yang tidak cukup besar, menimpa bagian memori yang terhubung ke ruang buffer. Jika tata letak memori program terdefinisikan dengan baik, penyerang dapat dengan sengaja menimpa area yang diketahui berisi kode yang dapat dieksekusi. Penyerang kemudian dapat mengganti kode ini dengan kode yang dapat dieksekusi sendiri, yang secara drastis dapat mengubah cara program ini dimaksudkan untuk bekerja.
Ini contoh nya. Jika bagian yang ditimpa dalam memori berisi pointer (objek yang menunjuk ke tempat lain dalam memori) kode penyerang dapat mengganti kode itu dengan pointer lain yang menunjuk ke muatan eksploitasi. Ini dapat mentransfer kontrol seluruh program ke kode penyerang.
-
-
Apa akar alasan serangan buffer overflow?
Bahasa coding tertentu lebih rentan terhadap buffer overflow daripada yang lain. Bahasa pemrograman tingkat rendah seperti C, C ++, Fortran, Assembly, dll tidak memiliki perlindungan built-in terhadap mengakses atau menimpa data dalam memori mereka.
Sebagian besar sistem operasi seperti Windows, Mac OSX, dan Linux SEMUA mengandung kode yang ditulis dalam satu atau keduanya (C dan C++) dari bahasa-bahasa ini. Jadi kenyataan yang tidak menyenangkan adalah bahwa serangan buffer overflow, sebagai kelas ancaman keamanan, tidak mungkin akan hilang dalam waktu dekat. Ini hanya pertanyaan tentang seberapa baik profesional keamanan dapat secara proaktif mengatasi masalah atau menghadapinya ketika muncul dalam bentuk baru.
Namun, bahasa yang lebih modern seperti JavaScript, Java, PERL, PHP, Python, dan C# memiliki fitur built-in yang membantu mengurangi peluang buffer overflow, tetapi tidak dapat mencegahnya sama sekali.
-
-
Berbagai macam serangan buffer overflow bisa dilakukan
1) Serangan tumpukan.
Penampan di sini adalah tumpukan, sepotong memori yang cukup kecil yang digunakan program untuk mengelola pengembalian panggilan (di antara hal-hal lain). Dengan menimpa area kunci tumpukan dengan terlalu banyak data, penyerang berhasil mengelabui program untuk kembali ke (yaitu, mengeksekusi) kodenya sendiri, yang terletak di tempat lain di RAM, sebagai lawan dari kode yang benar. Overflow tumpukan adalah yang paling umum, terkenal dari semua serangan buffer overflow.
2) Serangan tumpukan.
Heap adalah bagian memori yang jauh lebih besar yang digunakan untuk menyimpan data yang lebih kompleks seperti gambar, atau teks, yang berhubungan dengan program. Premis di sini mirip dengan sebelumnya, tetapi lebih sulit bagi penyerang untuk diterapkan karena tumpukan tidak secara langsung digunakan untuk menentukan di mana kode yang dapat dieksekusi memori berada.
3) Serangan aritmatika.
Serangan buffer overflow ini muncul dari cara C menangani vs. Nomor yang tidak bertanda tangan. Secara khusus, adalah mungkin untuk mengonversikan angka negatif (ditandatangani dengan -) yang membutuhkan ruang memori kecil ke angka tidak bertanda tangan yang jauh lebih besar yang membutuhkan lebih banyak memori. Kecelakaan kemudian terjadi dan dapat dimanfaatkan untuk menghasilkan serangan.
4) Serangan format.
String teks, bukan seperti nomor bertanda tangan, kadang-kadang dikonversikan secara otomatis dari format yang lebih kecil ke yang lebih besar (seperti oleh sistem operasi yang membutuhkan nilai Unikode). Ini berarti penyerang dapat merancang serangan buffer overflow yang melebihi panjang buffer jika pemrogram belum berhati-hati untuk mempertimbangkan format yang lebih besar.
-
-
Penyandang Overflow dan Web
Namun, bahkan programmer yang menggunakan bahasa tingkat tinggi harus tahu dan peduli tentang serangan buffer overflow. Program mereka sering dijalankan dalam sistem operasi yang ditulis dalam C atau menggunakan lingkungan runtime yang ditulis dalam C, dan kode C ini mungkin rentan terhadap serangan tersebut. Untuk melihat bagaimana kerentanan buffer overflow dapat mempengaruhi pemrogram menggunakan bahasa pemrograman tingkat tinggi, Anda dapat menganalisa CVE-2015-3329 – kerentanan keamanan kehidupan nyata, yang ditemukan di perpustakaan standar PHP pada tahun 2015. Untungnya, kerentanan ini ditemukan pada tahun 2015 dan diperbaiki.
Pada tahun 2014 juga sebuah ancaman yang dikenal sebagai ‘heartbleed’ membuka ratusan juta pengguna untuk menyerang karena kerentanan buffer overflow dalam perangkat lunak SSL.
-
-
Bagaimana cara menghindari Overflow Buffer?
Kerawanan buffer overflow disebabkan oleh kesalahan pemrogram yang mudah dipahami tetapi jauh lebih sulit untuk dihindari dan dilindungi.
Untungnya, sistem operasi modern memiliki perlindungan runtime yang membantu mengurangi serangan buffer overflow. Berikut adalah perlindungan umum yang membantu mengurangi risiko eksploitasi:
1) Alamat Pengacakan Ruang -
Secara acak mengatur ulang lokasi ruang alamat dari area data utama dari sebuah proses. Serangan buffer overflow umumnya bergantung pada mengetahui lokasi yang tepat dari kode yang dapat dieksekusi penting, pengacakan ruang alamat membuat itu hampir tidak mungkin.
2) Pencegahan Eksekusi Data (DEP)-
Menandai area memori tertentu baik yang dapat dieksekusi atau tidak dapat dieksekusi, mencegah eksploitasi dari menjalankan kode yang ditemukan di area yang tidak dapat dieksekusi.
3) Pengecualian pelindung tertumpuk tertimpa pelindung (SEHOP)
Pengembang perangkat lunak juga dapat mengambil tindakan pencegahan terhadap kerentanan buffer overflow dengan menulis dalam bahasa yang memiliki perlindungan bawaan atau menggunakan prosedur keamanan khusus dalam kode mereka.
Terlepas dari tindakan pencegahan, kerentanan buffer overflow baru terus ditemukan oleh pengembang, kadang-kadang setelah eksploitasi yang sukses. Ketika kerentanan baru ditemukan, insinyur perlu menambal perangkat lunak yang terpengaruh dan memastikan bahwa pengguna perangkat lunak mendapatkan akses ke patch.
0 Komentar