Address Space Layout Randomization (ASLR) adalah teknik keamanan yang digunakan dalam sistem operasi, pertama kali diterapkan pada tahun 2001. Versi terkini dari semua sistem operasi utama (iOS, Android, Windows, macOS, dan Linux) menampilkan perlindungan ASLR. Namun dalam seminggu terakhir, metode baru melewati ASLR telah ditemukan. Jadi, haruskah kamu khawatir?
Bagi mereka yang tidak memiliki latar belakang pemrograman tingkat rendah, ASLR dapat membingungkan. Untuk memahaminya, Anda harus terlebih dahulu memahami memori virtual.
Memori Virtual adalah teknik manajemen memori dengan banyak manfaat, tetapi itu terutama dibuat untuk membuat pemrograman lebih mudah. Bayangkan Anda memiliki Google Chrome, Microsoft Word, dan beberapa program lain yang terbuka di komputer dengan RAM 4 GB. Secara keseluruhan, program di komputer ini menggunakan lebih dari 4 GB RAM. Namun, tidak semua program akan aktif setiap saat, atau perlu akses simultan ke RAM itu.
Sistem operasi mengalokasikan potongan memori ke program yang dipanggil halaman. Jika tidak ada cukup RAM untuk menyimpan semua halaman sekaligus, halaman yang paling tidak perlu disimpan di hard drive yang lebih lambat (tapi lebih luas). Ketika halaman yang disimpan diperlukan, mereka akan berpindah ruang dengan halaman yang kurang diperlukan saat ini dalam RAM. Proses ini disebut paging, dan meminjamkan namanya ke file pagefile.sys di Windows.
Memori virtual membuatnya lebih mudah untuk program untuk mengelola memori mereka sendiri, dan juga membuat mereka lebih aman. Program tidak perlu khawatir tentang di mana program lain menyimpan data, atau berapa banyak RAM yang tersisa. Mereka hanya dapat meminta sistem operasi untuk memori tambahan (atau mengembalikan memori yang tidak terpakai) seperlunya. Semua program melihat adalah satu bagian terus menerus dari alamat memori untuk penggunaan eksklusif, yang disebut alamat virtual. Program ini tidak diizinkan untuk melihat memori program lain.
Ketika sebuah program perlu mengakses memori, ia memberi sistem operasi alamat virtual. Sistem operasi menghubungi unit manajemen memori CPU (MMU). MMU menerjemahkan antara alamat virtual dan fisik, mengembalikan informasi tersebut ke sistem operasi. Tidak ada gunanya program langsung berinteraksi dengan RAM.
Address Space Layout Randomization (ASLR) terutama digunakan untuk melindungi terhadap serangan buffer overflow. Dalam buffer overflow, penyerang memberi makan sebanyak mungkin 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 terletak di memori. Mengetahui hal ini biasanya merupakan proses trial and error 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 dari berbagai bagian program dalam memori. Setiap kali program dijalankan, komponen (termasuk tumpukan, tumpukan, dan pustaka) dipindahkan ke alamat yang berbeda dalam memori virtual. Penyerang tidak dapat lagi belajar di mana target mereka melalui trial and error, karena alamatnya akan berbeda setiap kali. Umumnya, aplikasi harus dikompilasi dengan dukungan ASLR, tetapi ini menjadi default, dan bahkan diperlukan pada Android 5.0 dan yang lebih baru.
Selasa lalu, para peneliti dari SUNY Binghamton dan University of California, Riverside, mempresentasikan sebuah makalah yang disebut Jump Over ASLR: Menyerang Prediktor Cabang untuk Memotong ASLR. Makalah ini menjelaskan cara untuk menyerang Penyangga Target Cabang (BTB). BTB adalah bagian dari prosesor yang mempercepat jika pernyataan dengan memprediksi hasilnya. Dengan menggunakan metode penulis, dimungkinkan untuk menentukan lokasi dari instruksi cabang yang diketahui dalam program yang sedang berjalan. Serangan tersebut dilakukan pada mesin Linux dengan prosesor Intel Haswell (pertama dirilis pada tahun 2013), tetapi kemungkinan dapat diterapkan pada sistem operasi modern dan prosesor.
Yang mengatakan, Anda tidak perlu putus asa. Makalah ini menawarkan beberapa cara bahwa perangkat keras dan pengembang sistem operasi dapat mengurangi ancaman ini. Teknik ASLR butiran yang lebih baru akan membutuhkan lebih banyak upaya dari penyerang, dan meningkatkan jumlah entropi (keacakan) dapat membuat serangan Jump Over tidak layak. Kemungkinan besar, sistem operasi dan prosesor yang lebih baru akan kebal terhadap serangan ini.
Jadi apa yang tersisa kamu melakukan? Jump Over bypass baru, dan belum pernah terlihat di alam liar. Ketika penyerang mengeksploitasinya, cacat akan meningkatkan potensi kerusakan yang dapat disebabkan oleh penyerang di perangkat Anda. Tingkat akses ini belum pernah terjadi sebelumnya; Microsoft dan Apple hanya mengimplementasikan ASLR dalam sistem operasi mereka yang dirilis 2007 dan kemudian. Bahkan jika gaya serangan ini menjadi hal yang biasa, Anda tidak akan menjadi lebih buruk dari pada Anda kembali di masa Windows XP.
Perlu diingat bahwa penyerang masih harus mendapatkan kode mereka di perangkat Anda untuk melakukan bahaya apa pun. Cacat 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 tidak jelas, dan perbarui perangkat lunak Anda. Dengan mengikuti langkah-langkah ini dan menyingkirkan pelaku jahat dari komputer Anda, Anda akan aman seperti yang pernah Anda alami.
Kredit Gambar: Steve / Flickr