Pertanyaan Bagaimana saya dapat menonaktifkan ASLR (Pengacakan tata letak ruang alamat) untuk sementara?


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?


50
2017-07-10 00:15


asal


Hanya untuk diri sendiri: stackoverflow.com/questions/11238457/… || unix.stackexchange.com/questions/15881/… - Ciro Santilli 新疆改造中心 六四事件 法轮功


Jawaban:


Menurut sebuah artikel Seberapa Efektif ASLR pada Sistem Linux?, Anda dapat mengonfigurasi ASLR di Linux menggunakan /proc/sys/kernel/randomize_va_space antarmuka.

Nilai-nilai berikut didukung:

  • 0 - Tanpa pengacakan. Semuanya statis.
  • 1 - Konservatif   pengacakan. Pustaka bersama, tumpukan, mmap(), VDSO dan heap adalah   secara acak.
  • 2 - Pengacakan penuh. Selain elemen yang tercantum di   titik sebelumnya, memori berhasil brk() juga diacak.

Jadi, untuk menonaktifkannya, jalankan

echo 0 | sudo tee /proc/sys/kernel/randomize_va_space

dan mengaktifkannya lagi, jalankan

echo 2 | sudo tee /proc/sys/kernel/randomize_va_space

Ini tidak akan bertahan saat reboot, jadi Anda harus mengonfigurasikan ini sysctl. Tambahkan file /etc/sysctl.d/01-disable-aslr.conf mengandung:

kernel.randomize_va_space = 0

harus menonaktifkan ini secara permanen.


63
2017-07-10 11:17





Itu /proc/sys/kernel/randomize_va_space antarmuka mengontrol ASLR di seluruh sistem.

Jika Anda tidak menginginkan perubahan seluruh sistem, gunakan ADDR_NO_RANDOMIZE  kepribadian untuk sementara menonaktifkan ASLR. Mengontrol bendera kepribadian ini dapat dilakukan dengan setarch dan itu -R pilihan (manpage), membuka perintah.

Saya merasa sangat nyaman untuk membuka cangkang yang benar-benar baru menggunakan:

setarch `uname -m` -R /bin/bash

Ini akan membuka shell Bash baru untuk Anda dengan ASLR yang dinonaktifkan, termasuk semua proses anak (program yang dijalankan dari shell ini).

Hanya exit shell setelah Anda selesai.


Ngomong-ngomong, di i386, ulimit -s unlimited dapat "menonaktifkan" ASLR.


EDIT (Apr 2016): The ulimit -s unlimited telah diperbaiki dan ditetapkan CVE-2016-3672.


21
2017-08-07 05:53



Detail kecil dalam semangat util-linux: alih-alih uname -m yang juga bisa digunakan arch, biner yang pada dasarnya melakukan hal yang sama. - drumfire
@drumfire arch tidak tersedia sebagai applet busybox - zhangyoufu
+1 untuk kembali dua tahun kemudian dan menambahkan informasi terkait CVE. - Multisync


Cara yang lebih permanen untuk menonaktifkan ASLR harus disimpan dalam VM untuk alasan yang jelas.

untuk menguji kemampuan untuk menimpa tumpukan frame alamat pengirim dan sebagainya, Anda harus mengkompilasi tanpa stack canary -fno-stack-protector, sementara untuk memungkinkan Anda mengeksekusi kode pada stack yang perlu Anda kompilasi -z execstack, membuat

$ gcc -fno-stack-protector -z execstack -o <my_program> my_code.c

2
2017-07-10 01:33





Anda bisa menggunakan sudo sysctl kernel.randomize_va_space=0 ke temparaly menonaktifkan ASLR.


1
2018-03-19 19:19