Saya menggunakan Ubuntu 12,04 32-bit sekarang untuk beberapa percobaan saya perlu menonaktifkan ASLR bagaimana saya bisa melakukan ini? dan setelah itu apa yang harus saya lakukan untuk mengaktifkan ASLR lagi?
Saya menggunakan Ubuntu 12,04 32-bit sekarang untuk beberapa percobaan saya perlu menonaktifkan ASLR bagaimana saya bisa melakukan ini? dan setelah itu apa yang harus saya lakukan untuk mengaktifkan ASLR lagi?
Jawaban:
Menurut sebuah artikel Seberapa Efektif ASLR pada Sistem Linux? , Anda dapat mengkonfigurasi ASLR di Linux menggunakan /proc/sys/kernel/randomize_va_space
antarmuka.
Nilai-nilai berikut ini didukung:
- 0 - Tidak ada pengacakan. Semuanya statis.
- 1 - Pengacakan konservatif. Pustaka, tumpukan
mmap()
,, VDSO, dan tumpukan bersama dibagi secara acak.- 2 - Pengacakan penuh. Selain elemen yang tercantum dalam poin sebelumnya, memori yang dikelola
brk()
juga diacak.
Jadi, untuk menonaktifkannya, jalankan
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
dan untuk mengaktifkannya lagi, jalankan
echo 2 | sudo tee /proc/sys/kernel/randomize_va_space
Ini tidak akan selamat dari reboot, jadi Anda harus mengonfigurasi ini di sysctl
. Tambahkan file yang /etc/sysctl.d/01-disable-aslr.conf
mengandung:
kernel.randomize_va_space = 0
harus menonaktifkan ini secara permanen.
brk()
?
The /proc/sys/kernel/randomize_va_space
antarmuka kontrol ASLR sistem.
Jika Anda tidak ingin perubahan di seluruh sistem, gunakan ADDR_NO_RANDOMIZE
kepribadian untuk menonaktifkan ASLR sementara. Mengontrol bendera kepribadian ini dapat dilakukan dengan setarch
dan -R
opsinya ( manpage ), menambahkan sebuah perintah.
Saya merasa sangat nyaman untuk membuka shell yang benar-benar baru menggunakan:
setarch `uname -m` -R /bin/bash
Ini akan membuka Bash shell baru untuk Anda dengan ASLR dinonaktifkan, termasuk semua proses anak (program dijalankan dari shell ini).
Hanya exit
shell setelah Anda selesai.
By the way, pada i386, ulimit -s unlimited
dapat "menonaktifkan" ASLR.
EDIT (Apr 2016): Itu ulimit -s unlimited
diperbaiki dan ditugaskan CVE-2016-3672 .
uname -m
kita juga bisa menggunakan arch
, biner yang pada dasarnya melakukan hal yang sama.
arch
tidak tersedia sebagai applet busybox
Cara yang lebih permanen untuk menonaktifkan ASLR harus disimpan dalam VM karena alasan yang jelas.
untuk menguji kemampuan untuk menimpa alamat pengembalian bingkai stack dan sebagainya, Anda harus mengkompilasi tanpa tumpukan kenari -fno-stack-protector
, sementara untuk memungkinkan Anda mengeksekusi kode pada tumpukan yang Anda perlu kompilasi -z execstack
, membuat
$ gcc -fno-stack-protector -z execstack -o <my_program> my_code.c