Apa itu ASLR, dan Bagaimana Cara Menjaga Komputer Anda Aman?
Address Space Layout Randomization (ASLR) adalah teknik keamanan yang digunakan dalam sistem operasi, pertama kali diterapkan pada tahun 2001. Versi saat ini dari semua sistem operasi utama (iOS, Android, Windows, macOS, dan Linux) memiliki fitur perlindungan ASLR. Tetapi dalam seminggu terakhir, metode baru untuk mem-bypass ASLR telah ditemukan. Jadi, sebaiknya Anda khawatir?
Bagi mereka yang tidak memiliki latar belakang pemrograman tingkat rendah, ASLR dapat membingungkan. Untuk memahaminya, Anda harus terlebih dahulu memahami memori virtual.
Apa itu Memori Virtual?
Memori Virtual adalah teknik manajemen memori dengan banyak manfaat, tetapi terutama diciptakan untuk membuat pemrograman lebih mudah. Bayangkan Anda memiliki Google Chrome, Microsoft Word, dan beberapa program lain terbuka di komputer dengan 4 GB RAM. Secara keseluruhan, program di komputer ini menggunakan lebih dari 4 GB RAM. Namun, tidak semua program akan aktif setiap saat, atau membutuhkan akses simultan ke RAM itu.
Sistem operasi mengalokasikan potongan memori untuk program yang disebut halaman. Jika tidak ada RAM yang cukup untuk menyimpan semua halaman sekaligus, halaman yang paling tidak dibutuhkan akan disimpan pada hard drive yang lebih lambat (tetapi lebih luas). Ketika halaman yang disimpan diperlukan, mereka akan berpindah ruang dengan halaman yang kurang perlu saat ini dalam RAM. Proses ini disebut paging, dan meminjamkan namanya ke file pagefile.sys pada Windows.
Memori virtual memudahkan program untuk mengelola memori mereka sendiri, dan juga membuatnya lebih aman. Program tidak perlu khawatir tentang di mana program lain menyimpan data, atau berapa banyak RAM yang tersisa. Mereka hanya dapat meminta memori tambahan untuk sistem operasi (atau mengembalikan memori yang tidak digunakan) jika diperlukan. Semua yang dilihat oleh program adalah satu potong alamat memori yang terus menerus untuk penggunaan eksklusifnya, yang disebut alamat virtual. Program tidak diperbolehkan melihat memori program lain.
Ketika sebuah program perlu mengakses memori, itu memberikan sistem operasi alamat virtual. Sistem operasi menghubungi unit manajemen memori (MMU) CPU. MMU menerjemahkan antara alamat virtual dan fisik, mengembalikan informasi itu ke sistem operasi. Tidak ada titik apakah program langsung berinteraksi dengan RAM.
Apa itu ASLR??
Address Space Layout Randomization (ASLR) terutama digunakan untuk melindungi terhadap serangan buffer overflow. Dalam buffer overflow, penyerang memberi makan fungsi sebanyak data sampah yang dapat ditangani, diikuti oleh muatan berbahaya. Payload akan menimpa data yang ingin diakses oleh program. Instruksi untuk melompat ke titik lain dalam kode adalah muatan umum. Metode JailbreakMe yang terkenal dari jailbreaking iOS 4, misalnya, menggunakan serangan buffer overflow, mendorong Apple untuk menambahkan ASLR ke iOS 4.3.
Buffer overflows membutuhkan penyerang untuk mengetahui di mana setiap bagian dari program berada di memori. Mengetahui hal ini biasanya merupakan proses coba-coba yang sulit. Setelah menentukan itu, mereka harus membuat muatan dan menemukan tempat yang cocok untuk menyuntikkannya. Jika penyerang tidak tahu di mana kode target mereka berada, bisa sulit atau tidak mungkin untuk mengeksploitasinya.
ASLR bekerja bersama manajemen memori virtual untuk mengacak lokasi berbagai bagian program dalam memori. Setiap kali program dijalankan, komponen (termasuk stack, heap, dan libraries) dipindahkan ke alamat berbeda dalam memori virtual. Penyerang tidak dapat lagi belajar di mana target mereka melalui trial and error, karena alamat akan berbeda setiap waktu. Secara umum, aplikasi perlu dikompilasi dengan dukungan ASLR, tetapi ini menjadi default, dan bahkan diperlukan pada Android 5.0 dan yang lebih baru.
Begitu Juga ASLR Masih Melindungi Anda?
Selasa lalu, peneliti dari SUNY Binghamton dan University of California, Riverside, mempresentasikan makalah yang disebut Jump Over ASLR: Attacking Branch Predictors to Bypass ASLR. Makalah ini merinci cara untuk menyerang Branch Target Buffer (BTB). BTB adalah bagian dari prosesor yang mempercepat jika pernyataan dengan memprediksi hasilnya. Menggunakan metode penulis, dimungkinkan untuk menentukan lokasi instruksi cabang yang dikenal dalam program yang sedang berjalan. Serangan yang dimaksud dilakukan pada mesin Linux dengan prosesor Intel Haswell (pertama kali dirilis pada tahun 2013), tetapi kemungkinan dapat diterapkan pada sistem operasi dan prosesor modern apa pun.
Yang mengatakan, Anda tidak harus putus asa. Makalah ini menawarkan beberapa cara agar pengembang perangkat keras dan sistem operasi dapat mengurangi ancaman ini. Teknik ASLR butiran halus yang lebih baru akan membutuhkan lebih banyak upaya dari penyerang, dan meningkatkan jumlah entropi (keacakan) dapat membuat serangan Jump Over menjadi tidak mungkin. Kemungkinan besar, sistem operasi dan prosesor yang lebih baru akan kebal terhadap serangan ini.
Jadi untuk apa kamu melakukan? Bypass Jump Over baru, dan belum terlihat di alam liar. Ketika penyerang mengeksploitasinya, cacat tersebut akan meningkatkan potensi kerusakan yang dapat ditimbulkan penyerang pada perangkat Anda. Tingkat akses ini belum pernah terjadi sebelumnya; Microsoft dan Apple hanya menerapkan ASLR dalam sistem operasi mereka yang dirilis 2007 dan yang lebih baru. Bahkan jika gaya serangan ini menjadi hal biasa, Anda tidak akan menjadi lebih buruk daripada saat Anda kembali pada zaman Windows XP.
Perlu diingat bahwa penyerang masih harus mendapatkan kode mereka di perangkat Anda untuk melakukan kerusakan. Kekurangan ini tidak memberi mereka cara tambahan untuk menginfeksi Anda. Seperti biasa, Anda harus mengikuti praktik terbaik keamanan. Gunakan antivirus, jauhi situs web dan program yang samar, dan perbarui perangkat lunak Anda. Dengan mengikuti langkah-langkah ini dan menjauhkan pelaku jahat dari komputer Anda, Anda akan aman seperti sebelumnya.
Kredit Gambar: Steve / Flickr