Использует ли Ubuntu функции безопасности, такие как DEP и ALSR?

11

Я часто читал, что такие функции, как DEP (предотвращение выполнения данных) и ASLR (рандомизация расположения адресного пространства), предоставляются в Windows. В Windows вы получаете некоторый контроль над включением DEP для 32-битных программ.

  • Доступны ли эти функции в Ubuntu?
  • что-нибудь нужно сделать, чтобы включить эти функции?
hhlp
источник

Ответы:

20

Да для обоих. Они включены по умолчанию; вам не нужно ничего делать, чтобы включить его. Более длинный ответ следует ...

DEP по умолчанию используется в Ubuntu. Это делается через бит NX, если процессор поддерживает его, или эмулируется с помощью сегментации памяти, если процессор не поддерживает его. Для получения дополнительной информации см. Элемент функции неисполняемой памяти .

ASLR по умолчанию используется в Ubuntu для любых сегментов памяти, которые можно переместить (стек, библиотеки, куча, mmap). Единственная часть программы, которая не может быть перемещена по умолчанию, - это область основного кода («текстовый» сегмент). Программы должны быть специально скомпилированы как PIE (позиционно-независимый исполняемый файл), чтобы включить это. Многие чувствительные программы уже построены таким образом. Для более подробной информации смотрите список

Многие дополнительные функции безопасности также доступны по умолчанию в Ubuntu. Смотрите полный список в документации по функциям безопасности Ubuntu .

Кис Кук
источник
1

Ядро Linux по умолчанию использует аналогичные технологии, однако они отличаются от версий Windows. Если ваш процессор имеет возможность устанавливать бит NX (большинство современных процессоров), то ядро ​​будет использовать его. В ядре также есть слабая реализация ASLR, и более сильные могут быть установлены, но не установлены по умолчанию в Ubuntu.

Райан Гулер
источник
3
В данный момент я не могу найти ссылки (статья в Википедии en.wikipedia.org/wiki/ASLR не содержит битов сравнения энтропии), но я понимаю, что Windows ASLR слабее, чем Linux. И если вам нужен более тяжелый ASLR, чем по умолчанию в Linux, вы можете собрать собственное ядро ​​с набором патчей PaX, которое предлагает более высокую энтропию при небольшой стоимости совместимости.
Kees Cook
Хорошая статья, в которой разбираются различия cert.org/blogs/certcc/post.cfm?EntryID=191, конечно, она не будет завершена некоторыми обсуждениями более мелких деталей: D reddit.com/r/netsec/comments/ 1xjwde /…
Univ426
0

В общем и целом, для этого вам понадобится PAE-версия ядра. Для получения подробной информации по этой теме см. Это резюме .

организовать
источник
3
PAE нужен только для аппаратного NX. 64-битная уже является PAE, поэтому на 32-битной, если вы не используете ядро ​​PAE или на вашем оборудовании отсутствует бит NX, Ubuntu эмулирует функцию NX с использованием сегментации памяти.
Кис Кук
@ Кук Кук: Спасибо за информацию. ОП спросил про 32бит. На моей системе (Ubuntu 10.10 32bit) dmesgговорит NX (Execute Disable) protection cannot be enabled: non-PAE kernel. С другой стороны, когда я провел тесты с bazaar.launchpad.net/~ubuntu-bugcontrol/qa-regression-testing/... , пй , казалось , должны быть исполнено, но не для -pieи -rieиспытаний. Так что это немного смущает меня.
организовать
2
к сожалению, в 10.10 и более поздних отчетах dmesg есть ошибка, в которой не говорится, когда эмуляция NX включена на оборудовании с NX, но без ядра PAE: kernel.ubuntu.com/git?p=ubuntu/…
Kees Cook
1
(Это было сообщено как ошибка сейчас: bugs.launchpad.net/ubuntu/+source/linux/+bug/745181 )
Kees Cook