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_spacearayü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.confiç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_spaceArayü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 setarchve onun -Rseç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 exitkez bittiğinde kabuk.
Bu arada, ulimit -s unlimitedi386'da ASLR'yi "devre dışı bırakabilir".
EDIT (Nis 2016): ulimit -s unlimitedDüzeltildi ve CVE-2016-3672 olarak atandı .
uname -mbiri yerine, archaslında aynı şeyi yapan bir ikili de kullanabilirdi .
archbir
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-protectorEğer birlikte derlemek için gereken yığın kod yürütmesine izin verecek iken, -z execstackyapımında
$ gcc -fno-stack-protector -z execstack -o <my_program> my_code.c