Ubuntu 12.04 kullanıyorum 32-bit şimdi bazı deneyler için ASLR'yi devre dışı bırakmak için ihtiyacım var nasıl yapabilirim? ve bundan sonra ASLR'yi tekrar etkinleştirmek için ne yapmalıyım?
Ubuntu 12.04 kullanıyorum 32-bit şimdi bazı deneyler için ASLR'yi devre dışı bırakmak için ihtiyacım var nasıl yapabilirim? ve bundan sonra ASLR'yi tekrar etkinleştirmek için ne yapmalıyım?
Yanıtlar:
Bir makaleye göre Linux Sistemlerinde ASLR Ne Kadar Etkili? , ASLR'yi Linux'ta /proc/sys/kernel/randomize_va_space
arayüzü kullanarak yapılandırabilirsiniz .
Aşağıdaki değerler desteklenir:
- 0 - Hiçbir rasgeleme yok. Her şey statik.
- 1 - Muhafazakar randomizasyon. Paylaşılan kütüphaneler, yığın,
mmap()
VDSO ve yığın rastgele seçilir.- 2 - Tam randomizasyon. Önceki noktada listelenen öğelere ek olarak, yönetilen bellek
brk()
de rastgeledir.
Yani, devre dışı bırakmak için kaç
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
ve tekrar etkinleştirmek için
echo 2 | sudo tee /proc/sys/kernel/randomize_va_space
Bu bir yeniden başlatma işleminde hayatta kalamaz, bu yüzden bunu yapılandırmanız gerekecek sysctl
. Aşağıdakileri /etc/sysctl.d/01-disable-aslr.conf
içeren bir dosya ekle :
kernel.randomize_va_space = 0
Bunu kalıcı olarak devre dışı bırakmalısınız.
brk()
?
/proc/sys/kernel/randomize_va_space
Arayüz ASLR sistem genelinde kontrol eder.
Sistem genelinde bir değişiklik istemiyorsanız, ASLR'yi geçici olarak devre dışı bırakmak için ADDR_NO_RANDOMIZE
kişiliği kullanın. Bu kişilik bayrağını kontrol etmek bir komut hazırlayarak setarch
ve onun -R
seçeneği ( manpage ) ile yapılabilir .
Kullanarak tamamen yeni bir kabuk açmayı gerçekten uygun buluyorum:
setarch `uname -m` -R /bin/bash
Bu, tüm alt işlemler (bu kabuktan çalışan programlar dahil) dahil olmak üzere ASLR devre dışı bırakıldığında sizin için yeni bir Bash kabuğu açacaktır.
Sadece bir exit
kez bittiğinde kabuk.
Bu arada, ulimit -s unlimited
i386'da ASLR'yi "devre dışı bırakabilir".
EDIT (Nis 2016): ulimit -s unlimited
Düzeltildi ve CVE-2016-3672 olarak atandı .
uname -m
biri yerine, arch
aslında aynı şeyi yapan bir ikili de kullanabilirdi .
arch
bir
ASLR'yi devre dışı bırakmanın daha kalıcı yolları, bariz sebeplerden dolayı bir VM'de tutulmalıdır.
yığın çerçevesi yanıt adresleri vs. üzerine yazma olanağı test etmek, sen yığın kanarya olmadan derlemek gerekir -fno-stack-protector
Eğer birlikte derlemek için gereken yığın kod yürütmesine izin verecek iken, -z execstack
yapımında
$ gcc -fno-stack-protector -z execstack -o <my_program> my_code.c