Bagaimana saya bisa menonaktifkan ASLR (pengacakan tata letak ruang alamat) untuk sementara waktu?
57
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?
Menurut sebuah artikel Seberapa Efektif ASLR pada Sistem Linux? , Anda dapat mengkonfigurasi ASLR di Linux menggunakan /proc/sys/kernel/randomize_va_spaceantarmuka.
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.confmengandung:
Apa sebenarnya "Pengacakan Penuh"? Apakah itu termasuk executable itu sendiri? Dan apa itu brk()?
Shuzheng
26
The /proc/sys/kernel/randomize_va_spaceantarmuka kontrol ASLR sistem.
Jika Anda tidak ingin perubahan di seluruh sistem, gunakan ADDR_NO_RANDOMIZEkepribadian untuk menonaktifkan ASLR sementara. Mengontrol bendera kepribadian ini dapat dilakukan dengan setarchdan -Ropsinya ( 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 exitshell setelah Anda selesai.
By the way, pada i386, ulimit -s unlimiteddapat "menonaktifkan" ASLR.
EDIT (Apr 2016): Itu ulimit -s unlimiteddiperbaiki dan ditugaskan CVE-2016-3672 .
Detail kecil dalam semangat util-linux: alih-alih uname -mkita juga bisa menggunakan arch, biner yang pada dasarnya melakukan hal yang sama.
drum,
1
@drumfire archtidak tersedia sebagai applet busybox
youfu
+1 untuk kembali dua tahun kemudian dan menambahkan informasi tentang CVE.
Multisync
3
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
Jawaban:
Menurut sebuah artikel Seberapa Efektif ASLR pada Sistem Linux? , Anda dapat mengkonfigurasi ASLR di Linux menggunakan
/proc/sys/kernel/randomize_va_space
antarmuka.Jadi, untuk menonaktifkannya, jalankan
dan untuk mengaktifkannya lagi, jalankan
Ini tidak akan selamat dari reboot, jadi Anda harus mengonfigurasi ini di
sysctl
. Tambahkan file yang/etc/sysctl.d/01-disable-aslr.conf
mengandung:harus menonaktifkan ini secara permanen.
sumber
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 dengansetarch
dan-R
opsinya ( manpage ), menambahkan sebuah perintah.Saya merasa sangat nyaman untuk membuka shell yang benar-benar baru menggunakan:
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 .sumber
uname -m
kita juga bisa menggunakanarch
, biner yang pada dasarnya melakukan hal yang sama.arch
tidak tersedia sebagai applet busyboxCara 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
, membuatsumber
Anda bisa menggunakan
sudo sysctl kernel.randomize_va_space=0
temparaly disable ASLR.sumber