Чи використовує Ubuntu функції безпеки, такі як DEP та ALSR?


11

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

  • Чи доступні ці функції в Ubuntu
  • чи потрібно щось зробити, щоб увімкнути ці функції?

Відповіді:


20

Так для обох. Вони увімкнено за замовчуванням; вам не потрібно нічого робити, щоб це ввімкнути. Більше відповідь випливає ...

DEP використовується за замовчуванням в Ubuntu. Це робиться через NX біт, якщо ЦП підтримує його, або емулюється за допомогою сегментації пам'яті, якщо ЦП не підтримує його. Докладніше див . Елемент функції , що не виконується, в пам'яті .

ASLR використовується за замовчуванням в Ubuntu на будь-яких сегментах пам'яті, які можуть бути переміщені (стек, бібліотеки, купа, mmap). Єдина частина програми, яка за замовчуванням не переміщується, - це основна область коду (сегмент "текст"). Програми повинні бути спеціально складені як PIE (виконується незалежно від позиції), щоб це увімкнути. Багато чутливих програм уже побудовані таким чином. Детальніше див. У списку

Багато додаткових функцій безпеки також доступні за замовчуванням в Ubuntu. Дивіться Ubuntu Функції безпеки документації для повного списку.


1

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


3
Я не можу знайти посилання на даний момент (у статті Wikipedia en.wikipedia.org/wiki/ASLR немає біт порівняння ентропії), але я розумію, що Windows ASLR слабкіше за Linux. І якщо ви хочете, щоб ASLR був більш важким, ніж Linux за замовчуванням, ви можете створити власне ядро ​​патчету PaX, яке пропонує більш високу ентропію за невеликих витрат на сумісність.
Kees Cook

Хороша стаття, що розбиває відмінності cert.org/blogs/certcc/post.cfm?EntryID=191, звичайно, це не буде завершеним дебатом
Univ426

0

Взагалі і просто кажучи, для цього вам потрібна версія PAE ядра. Детальну інформацію по цій темі див. У цьому резюме .


3
PAE потрібен лише для апаратних NX. 64-бітний вже PAE, тому на 32-бітовому, якщо ви не працюєте з ядром PAE або у вашому апараті не вистачає біта NX, Ubuntu емулює функцію NX за допомогою сегментації пам'яті.
Кіс Кук

@Kees Cook: Дякую за інформацію. ОП запитав про 32-бітний. У моїй системі (ubuntu 10.10 32bit) dmesgговорить NX (Execute Disable) protection cannot be enabled: non-PAE kernel. З іншого боку, коли я запускав тести з bazaar.launchpad.net/~ubuntu-bugcontrol/qa-regression-testing/… , nx, здавалося, був примушений, але не для -pieі -rieтестів. Тож це для мене трохи заплутано.
влаштовуйте

2
на жаль, у звіті dmesg 10.10 та пізніших версій є помилка, де він не говорить, коли емуляція NX включена на апаратному забезпеченні з NX, але без ядра PAE: kernel.ubuntu.com/git?p=ubuntu/…
Kees Cook

1
(Про це повідомлялося як про помилку: bugs.launchpad.net/ubuntu/+source/linux/+bug/745181 )
Kees Cook
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.