2012-06-28 3 views
16

Я хотел бы отключить рандомизацию расположения пространства адресов (ASLR) в моей системе (Ubuntu Gnu/Linux 2.6.32-41-server), но если я используюОтключить и снова включить рандомизацию размещения адресного пространства только для себя

sysctl -w kernel.randomize_va_space=0 

изменение повлияет на всех пользователей в системе, я полагаю. (Это правда?) Как я могу ограничить влияние отключения ASLR на себя как на пользователя или только на сеанс оболочки, в котором я вызываю команду для отключения?

BTW, я вижу, что текущие настройки моей системы (по умолчанию) является

sysctl -w kernel.randomize_va_space=0 

Почему 2 и не 1 или 3? Где можно найти документацию о численных значениях параметров/proc/sys, их диапазонах и их значениях? Благодаря!

+2

http://gcc.gnu.org/wiki/Randomization говорит, что 'setarch $ (uname -m) -RL bash' должен работать –

+0

http://unix.stackexchange.com/questions/15881/disable-address -пространство-макет-рандомизация-aslr-for-my-процессы || http://askubuntu.com/questions/318315/how-can-i-temporarily-disable-aslr-address-space-layout-randomization –

ответ

11

Документация для randomize_va_spacesysctl установка находится в Documentation/sysctl/kernel.txt в исходном дереве ядра. В основном,

0 - Выключите случайное распределение адресного пространства процесса.

1 - Измените ранжирование адресов базы данных mmap, стека и VDSO.

2 - Дополнительно включить рандомизацию кучи.

+0

Спасибо! Это касается моего второго («BTW») вопроса выше, но я до сих пор не вижу способа ограничить влияние sysctl на один сеанс или сеанс оболочки. Думаю, это невозможно. : -/ –

+1

Да, настройка глобальная. Быстрый grep показывает, что есть некоторый (возможно, рудиментарный) код в коде «личность» (обработка нескольких ABI), которые могут делать обратное. Установка ADDR_NO_RANDOMIZE в поле личности объекта task_struct отключит поведение, даже если оно включено во всем мире.Но это, вероятно, больше вуду, чем вы хотите иметь дело. –

20

Лучший способ отключить локально ASLR в системе на базе Linux - использовать флаги процессов. Команда манипулировать личности флагов setarch с

-R, --addr-no-randomize

Отключает рандомизации виртуального адресного пространства (включается ADDR_NO_RANDOMIZE).

Вот как поступить:

$> setarch $(uname -m) -R /bin/bash 

Эта команда запускает оболочку, в которой был отключившие ASLR. Все потомки этого процесса наследуют флаги личности отца и, следовательно, имеют отключенный ASLR. Единственный способ разбить наследование флагов - вызвать программу setuid (это будет нарушение безопасности для поддержки такой функции).

Обратите внимание, что uname -m здесь, чтобы не жестко кодировать архитектуру вашей платформы и сделать эту команду переносимой.

 Смежные вопросы

  • Нет связанных вопросов^_^