ASLR'yi (Adres alanı düzeni tespiti) nasıl geçici olarak devre dışı bırakabilirim?


Yanıtlar:


75

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.


1
Tam olarak "Tam randomizasyon" nedir? Bu yürütülebilir dosyanın kendisini içeriyor mu? Ve nedir brk()?
Shuzheng

26

/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ı .


Util-linux ruhunda küçük detay: uname -mbiri yerine, archaslında aynı şeyi yapan bir ikili de kullanabilirdi .
drumfire

1
@drumfire archbir
meşgul kutusu

İki yıl sonra geri gelmek ve CVE ile ilgili bilgileri eklemek için +1.
Multisync

3

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

2

sudo sysctl kernel.randomize_va_space=0ASLR'yi geçici olarak devre dışı bırakmak için kullanabilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.