Czy Ubuntu korzysta z funkcji bezpieczeństwa, takich jak DEP i ALSR?

11

Często czytam, że funkcje takie jak DEP (zapobieganie wykonywaniu danych) i ASLR (Randomization Layout Space Address) są dostępne w systemie Windows. W systemie Windows masz kontrolę nad włączaniem funkcji DEP dla programów 32-bitowych.

  • Czy te funkcje są dostępne w systemie Ubuntu?
  • czy jest coś, co musimy zrobić, aby włączyć te funkcje?
hhlp
źródło

Odpowiedzi:

20

Tak dla obu. Są domyślnie włączone; nie musisz nic robić, aby to włączyć. Dłuższa odpowiedź wynika z ...

DEP jest domyślnie używany w Ubuntu. Odbywa się to przez bit NX, jeśli procesor go obsługuje, lub emulowany przez segmentację pamięci, jeśli procesor go nie obsługuje. Aby uzyskać więcej informacji, zobacz element funkcji niewykonywalnej pamięci .

ASLR jest domyślnie używany w Ubuntu we wszystkich segmentach pamięci, które można przenieść (stos, biblioteki, sterty, mmap). Jedyną częścią programu, której domyślnie nie można przenieść, jest główny obszar kodu (segment „tekstowy”). Programy muszą być specjalnie skompilowane jako PIE (plik wykonywalny niezależny od pozycji), aby to umożliwić. Wiele wrażliwych programów jest już zbudowanych w ten sposób. Aby uzyskać więcej informacji, zobacz listę

Wiele dodatkowych funkcji bezpieczeństwa jest również domyślnie dostępnych w Ubuntu. Patrz Bezpieczeństwo Ubuntu Cechy dokumentację dla pełnej listy.

Kees Cook
źródło
1

Jądro Linux domyślnie korzysta z podobnych technologii, jednak różnią się one od wersji Windows. Jeśli twój procesor ma możliwość ustawienia bitu NX (większość nowoczesnych procesorów), wtedy jądro go wykorzysta. Istnieje również słaba implementacja w ASLR w jądrze, a mocniejsze można zainstalować, ale nie są domyślnie instalowane na Ubuntu.

Ryan Gooler
źródło
3
W tej chwili nie mogę znaleźć referencji (artykuł Wikipedii en.wikipedia.org/wiki/ASLR nie zawiera fragmentów porównania entropii), ale rozumiem, że Windows ASLR jest słabszy niż Linux. A jeśli chcesz cięższej ASLR niż domyślna wersja Linuksa, możesz zbudować własne jądro łatki PaX, która oferuje wyższą entropię przy niewielkim koszcie kompatybilności.
Kees Cook
Dobry artykuł opisujący różnice cert.org/blogs/certcc/post.cfm?EntryID=191 oczywiście, który nie byłby kompletny z dyskusją na
Univ426
0

Mówiąc ogólnie, potrzebujesz do tego wersji jądra PAE. Aby uzyskać szczegółowe informacje na ten temat, zobacz to streszczenie .

zorganizować
źródło
3
PAE jest potrzebny tylko dla sprzętowego NX. Wersja 64-bitowa jest już w trybie PAE, więc w wersji 32-bitowej, jeśli nie używasz jądra PAE lub twój sprzęt nie ma bitu NX, Ubuntu emuluje funkcję NX za pomocą segmentacji pamięci.
Kees Cook
@Kees Cook: Dzięki za informacje. OP zapytał o 32bit. W moim systemie (Ubuntu 10.10 32bit) dmesgmówi NX (Execute Disable) protection cannot be enabled: non-PAE kernel. Z drugiej strony, kiedy uruchomiłem testy z bazaar.launchpad.net/~ubuntu-bugcontrol/qa-regression-testing/… , nx ​​wydawało się być wymuszone, ale nie dla testów -piei -rie. To dla mnie trochę mylące.
umówić się na
2
niestety w 10.10 i późniejszych raportach dmesg występuje błąd, który nie mówi, kiedy emulacja NX jest włączona na sprzęcie z NX, ale bez jądra PAE: kernel.ubuntu.com/git?p=ubuntu/…
Kees Cook
1
(Zostało to zgłoszone jako błąd: bugs.launchpad.net/ubuntu/+source/linux/+bug/745181 )
Kees Cook