Как я могу временно отключить ASLR (рандомизация расположения адресного пространства)?
57
Я сейчас использую 32-битную Ubuntu 12.04 для некоторого эксперимента. Мне нужно отключить ASLR. Как я могу это сделать? и после этого, что я должен сделать, чтобы снова включить ASLR?
Что именно означает «Полная рандомизация»? Включает ли это сам исполняемый файл? А что есть brk()?
Шужэн
26
/proc/sys/kernel/randomize_va_spaceИнтерфейс управления ASLR всей системы.
Если вы не хотите общесистемных изменений, используйте ADDR_NO_RANDOMIZEличность, чтобы временно отключить ASLR. Управлять этим флагом личности можно с помощью setarchего -Rопции ( manpage ), добавляя команду.
Мне действительно удобно открывать совершенно новую оболочку, используя:
setarch `uname -m` -R /bin/bash
Откроется новая оболочка Bash с отключенной ASLR, включая все дочерние процессы (программы запускаются из этой оболочки).
Просто exitоболочка, как только вы закончите.
Кстати, на i386 ulimit -s unlimitedможно «отключить» ASLR.
РЕДАКТИРОВАТЬ (апрель 2016 г.): ulimit -s unlimitedисправлено и присвоено CVE-2016-3672 .
Незначительные детали в духе util-linux: вместо uname -mодного можно также использовать archдвоичный файл, который по сути делает то же самое.
барабанная дробь
1
@drumfire archнедоступен как апплет
busybox
+1 за возвращение через два года и добавление информации о CVE.
Multisync
3
Более очевидные способы отключения ASLR должны храниться в ВМ по очевидным причинам.
чтобы проверить возможность перезаписывать адреса возврата стекового фрейма и т. д., вам нужно будет компилировать без канареек стека -fno-stack-protector, в то время как вы сможете выполнять код в стеке, с которым вам нужно скомпилировать -z execstack,
Ответы:
Согласно статье Насколько эффективна ASLR в системах Linux? Вы можете настроить ASLR в Linux, используя
/proc/sys/kernel/randomize_va_space
интерфейс.Итак, чтобы отключить его, запустите
и чтобы включить его снова, запустите
Это не переживет перезагрузку, так что вам придется настроить это в
sysctl
. Добавьте файл,/etc/sysctl.d/01-disable-aslr.conf
содержащий:должен навсегда отключить это.
источник
brk()
?/proc/sys/kernel/randomize_va_space
Интерфейс управления ASLR всей системы.Если вы не хотите общесистемных изменений, используйте
ADDR_NO_RANDOMIZE
личность, чтобы временно отключить ASLR. Управлять этим флагом личности можно с помощьюsetarch
его-R
опции ( manpage ), добавляя команду.Мне действительно удобно открывать совершенно новую оболочку, используя:
Откроется новая оболочка Bash с отключенной ASLR, включая все дочерние процессы (программы запускаются из этой оболочки).
Просто
exit
оболочка, как только вы закончите.Кстати, на i386
ulimit -s unlimited
можно «отключить» ASLR.РЕДАКТИРОВАТЬ (апрель 2016 г.):
ulimit -s unlimited
исправлено и присвоено CVE-2016-3672 .источник
uname -m
одного можно также использоватьarch
двоичный файл, который по сути делает то же самое.arch
недоступен как апплетБолее очевидные способы отключения ASLR должны храниться в ВМ по очевидным причинам.
чтобы проверить возможность перезаписывать адреса возврата стекового фрейма и т. д., вам нужно будет компилировать без канареек стека
-fno-stack-protector
, в то время как вы сможете выполнять код в стеке, с которым вам нужно скомпилировать-z execstack
,источник
Вы можете просто использовать
sudo sysctl kernel.randomize_va_space=0
для временного отключения ASLR.источник