Setiap hari, peretas di seluruh dunia menemukan dan mengeksploitasi kerentanan baru di situs web, aplikasi, dan bahkan arsitektur sistem. Satu hal yang umum di semua perangkat elektronik, lama atau baru, adalah bahwa mereka dijalankan oleh program yang disimpan dalam memori. Peretas telah mengeksploitasi ini dan menemukan kerentanan yang dikenal sebagai buffer overflows.
Meski bukan hal baru, serangan buffer overflow dan kerentanan telah mendatangkan malapetaka di dunia maya. Di sini, kami akan menjelaskan kepada Anda apa itu serangan buffer overflow dan bagaimana Anda dapat mencegahnya.
Memahami Buffer dan Memori Sistem
Untuk memahami apa itu serangan buffer overflow dan cara kerjanya, Anda perlu mengetahui apa itu buffer dan bagaimana memori komputer bekerja.
Tumpukan dan tumpukan memori adalah dua fitur utama dari memori komputer. Mereka adalah struktur data yang digunakan untuk alokasi memori. Meskipun mereka mirip, tumpukan dan tumpukan memori berbeda dalam berbagai cara.
Stack yang menggunakan konsep Last-in, First-out (LIFO), digunakan dalam RAM (random access memory) untuk menyimpan eksekusi program sementara, sementara heap memberikan memori menggunakan alokasi dinamis ke global variabel. Tetapi satu kesamaan yang mereka miliki adalah buffer.
Apa itu Buffer?
Buffer adalah wilayah memori yang digunakan untuk menyimpan data, kemungkinan besar di RAM komputer, saat sedang dipindahkan dari satu lokasi ke lokasi lain. Data ini biasanya program yang perlu dijalankan. Buffer disimpan dalam stack atau heap. Mereka mengoptimalkan eksekusi data.
Apa itu Buffer Overflow?
Buffer overflow terjadi ketika buffer menerima lebih banyak data daripada kapasitas penyimpanannya. Karena tidak dapat memproses jumlah data itu, itu meluap.
Sekarang, dalam memori komputer, tepat setelah buffer atau ruang buffer adalah alamat pengirim. Alamat pengirim ini sebenarnya disebut Extended Instruction Pointer (EIP). Fungsinya untuk mengarahkan komputer ke program tertentu saat diisi. Ketika buffer memiliki lebih banyak data daripada yang dapat ditampung dan meluap, buffer tersebut meluap ke alamat pengirim.
Untuk memahami ini, mari kita asumsikan Anda memiliki ruang penyangga yang hanya dapat menampung lima huruf. Jadi jika Anda mengisi kata-kata seperti "gula" atau "damai", aliran penyangga dapat menampungnya. Tetapi ketika Anda memiliki kata seperti "otentikasi", itu pasti akan tumpah. Hal ini menyebabkan bug atau crash pada sistem. Tetapi peretas dapat mengeksploitasi kerentanan ini untuk memulai serangan buffer overflow.
Apa itu Buffer Overflow Attack dan Bagaimana Cara Kerjanya?
Serangan buffer overflow terjadi ketika peretas mengambil alih alamat pengirim atau EIP. Ketika penyerang mengetahui ukuran memori sistem, mereka dapat dengan sengaja menulis data ke dalam sistem itu hanya untuk meluapkannya. Kemudian mereka memastikan EIP atau alamat pengirim ditulis untuk menunjuk ke program yang dapat memberi mereka akses ke sistem atau mengungkapkan informasi sensitif yang tersimpan di sistem.
Penyerang bahkan dapat menulis beberapa data yang berisi kode berbahaya dan menyebabkan buffer meluap. EIP kemudian ditulis untuk mengarahkan sistem kembali ke kode berbahaya, dan dibuat untuk dijalankan. Kemudian, peretas mendapatkan kendali atas sistem.
Ada lima langkah utama dalam serangan buffer overflow:
- berduri
- kabur
- Menemukan offset
- Timpa EIP atau alamat pengirim
- Memanfaatkan kerentanan
Memukul adalah langkah pertama. Di sini, peretas menemukan bagian dari memori program yang rentan terhadap buffer overflows. Kemudian muncul fuzzing, yang mirip dengan spiking, tetapi di sini, peretas mengirimkan karakter ke program untuk melihat apakah itu dapat dipatahkan. Setelah berhasil, penyerang melanjutkan untuk menemukan offset, di mana buffer meluap. Hal ini dilakukan untuk mengetahui ukuran buffer dan alamat pengirim. Kemudian, peretas memasukkan kode shell berbahaya dan mengontrol sistem.
Apa Jenis Serangan Buffer Overflow?
Ada dua jenis utama serangan buffer overflow: serangan berbasis tumpukan dan berbasis tumpukan.
1. Serangan Buffer Overflow Berbasis Stack
Serangan buffer overflow berbasis stack adalah jenis serangan buffer overflow yang paling populer. Mereka terjadi ketika memori tumpukan sistem dikuasai dan dieksploitasi. Ini juga dikenal sebagai penghancuran tumpukan.
2. Serangan Buffer Overflow Berbasis Heap
Jenis stack overflow ini tidak terlalu umum, karena sulit untuk diimplementasikan dan dieksploitasi. Itu terjadi ketika memori yang dialokasikan untuk suatu program meluap. Pada Januari 2021, Google menemukan buffer overflow berbasis heap kerentanan dalam komponen V8 Chrome.
Bagaimana Anda Dapat Mencegah Serangan Buffer Overflow?
Serangan buffer overflow dapat dikurangi menggunakan perlindungan runtime OS, bahasa pemrograman yang aman, pengacakan tata letak ruang alamat, dan memastikan langkah-langkah keamanan yang tepat secara keseluruhan.
1. Menggunakan Perlindungan Waktu Proses OS
Perlindungan runtime juga dikenal sebagai pemeriksaan batas larik runtime. Ini memastikan bahwa setiap program yang dijalankan berada dalam ruang buffer atau memori yang tersedia. Dan itu memeriksa setiap data yang ditulis ke dalam memori sistem. Ini mempersulit peretas untuk menimpa data ke dalam sistem dan mengeksploitasi kerentanan.
2. Menggunakan Bahasa Pemrograman Aman
Bahasa pemrograman seperti C dan C++ tidak menerapkan pemeriksaan batas larik runtime karena dibutuhkan kode tambahan untuk memeriksa setiap program yang ditulis ke dalam sistem dan memperlambatnya. Oleh karena itu, mereka lebih rentan terhadap serangan buffer overflow. Menggunakan bahasa yang lebih aman seperti C#, Java, dan Python lebih baik karena mereka menjalankan risiko serangan buffer overflow yang lebih rendah.
3. Gunakan Pengacakan Tata Letak Ruang Alamat (ASLR)
Tindakan keamanan ini secara acak menetapkan alamat program dan fungsi dalam memori sistem ke wilayah data yang berbeda. Ini mempersulit penyerang untuk menavigasi melalui fungsi sensitif dalam memori.
4. Pastikan Kebijakan Keamanan Yang Ketat
Ini melibatkan menjaga sistem diperbarui secara teratur, memvalidasi setiap data yang ditulis ke dalam sistem, dan menetapkan hak istimewa paling sedikit kepada pengguna. Dengan kebijakan keamanan yang tepat, Anda tidak perlu khawatir tentang serangan buffer overflow.
Menjaga Keamanan Anda Ketat Sangat Penting untuk Memerangi Serangan Buffer Overflow
Menurut pepatah populer dalam keamanan, "selama sistem digunakan oleh manusia, kerentanan ada," yang benar dan tak terelakkan. Namun, seseorang selalu dapat mengurangi kemungkinan serangan dengan memastikan bahwa langkah-langkah keamanan yang tepat ada dan dipatuhi dengan ketat.
Ingatlah bahwa peretas terus-menerus menemukan cara baru untuk mengeksploitasi kerentanan seperti ini. Oleh karena itu, Anda harus tetap berada di depan mereka dengan memperhatikan kemajuan terbaru di bidang keamanan siber.