Категорії
FreeBSD Linux Misc, staff, other OpenBSD Solaris

Address Space Layout Randomization (ASLR)

ASLR (англ. address space layout randomization — «рандомизация размещения адресного пространства») — технология, применяемая в операционных системах, при использовании которой случайным образом изменяется расположение в адресном пространстве процесса важных структур данных, а именно образов исполняемого файла, подгружаемых библиотек, кучи и стека.

Что бы узнать используется ли ASLR, можно несколько раз запустить ldd (для Solaris такой трюк не прокатит и нужно использовать либо sxadm, либо elfedit, но об этом ниже) для одного и того же бинарника несколько рад подряд и посмотреть, меняется ли адрес для libc.so: если меняется, значит включёно:


# ldd /usr/sbin/ppp | grep libc.so
libc.so.7 => /lib/libc.so.7 (0x80639d000)
# ldd /usr/sbin/ppp | grep libc.so
libc.so.7 => /lib/libc.so.7 (0x806f79000)
# ldd /usr/sbin/ppp | grep libc.so
libc.so.7 => /lib/libc.so.7 (0x806925000)

FreeBSD

По-умолчанию отключено. Включается/выключается налету, через sysctl:


kern.elf{32,64}.aslr.enable - Enable address map randomization (Default: 0)
kern.elf{32,64}.aslr.pie_enable - Enable ASLR for Position-Independent Executables (PIE) binaries (Default: 0)
kern.elf{32,64}.aslr.honor_sbrk - Assume sbrk is used (Default: 1)
vm.cluster_anon - Cluster anonymous mappings (Default: 1)

Так же, есть возможность менять это поведение налету для конкретного приложения через elfctl:

% elfctl -e +noaslr /usr/local/sbin/unbound

Linux

По умолчанию включёно. Включается/выключается налету, через sysctl kernel.randomize_va_space


0 = Disabled
1 = Conservative Randomization
2 = Full Randomization

OpenBSD

По умолчанию включёно (начиная с февраля 2002). Выключить нельзя

Solaris

По умолчанию включёно. Выключается через sxadm

# sxadm info|grep aslr
aslr enable (tagged-files) enable (tagged-files)
# sxadm disable aslr

Так же, есть возможность менять это поведение налету для конкретного приложения через elfedit:

% elfedit -e 'dyn:sunw_aslr enable' a.out
% elfdump -d a.out | grep ASLR
[29] SUNW_ASLR 0x2 ENABLE
% elfedit -e 'dyn:sunw_aslr disable' a.out
% elfdump -d a.out | grep ASLR
[29] SUNW_ASLR 0x1 DISABLE

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff