Ubuntu是否使用DEP和ALSR等安全功能?


11

我经常阅读Windows上提供的功能,例如DEP(数据执行保护)和ASLR(地址空间布局随机化)。在Windows上,您可以控制打开32位程序的DEP。

  • 这些功能在Ubuntu中可用吗
  • 我们需要做些什么来启用这些功能吗?

Answers:


20

两者都可以。它们默认是打开的;您无需执行任何操作即可启用它。答案更长……

在Ubuntu中默认使用DEP。如果CPU支持,则通过NX位完成;如果CPU不支持,则通过内存分段进行仿真。有关更多详细信息,请参见不可执行的内存功能项

在Ubuntu中,默认情况下,可在任何可重定位的内存段(堆栈,库,堆,mmap)上使用ASLR。默认情况下,程序不可重定位的唯一部分是主代码区(“文本”段)。程序需要专门编译为PIE(与位置无关的可执行文件)才能实现。已经以这种方式构建了许多敏感程序。有关更多详细信息,请参见列表

Ubuntu中默认还提供许多其他安全功能。有关完整列表,请参见Ubuntu安全功能文档


1

默认情况下,Linux内核确实使用类似的技术,但是它们与Windows版本不同。如果您的处理器能够设置NX位(大多数现代CPU),那么内核将使用它。内核中的ASLR中也有一个较弱的实现,可以安装更强的实现,但默认情况下不会在Ubuntu上安装。


3
我目前无法找到参考(Wikipedia文章 en.wikipedia.org/wiki/ASLR没有进行熵比较的部分),但是我的理解是Windows ASLR比Linux弱。而且,如果您要使用比Linux默认版本更重的ASLR,则可以构建自己的内核PaX补丁集,以较低的兼容性成本提供更高的熵。
Kees Cook

一篇很好的文章,打破了cert.org/blogs/certcc/post.cfm?EntryID=191的差异,当然,这还不包括一些更详细的讨论:D reddit.com/r/netsec/comments/ 1xjwde /…
Univ426

0

一般来说,简单来说,您需要一个PAE版本的内核。有关此主题的详细信息,请参阅此摘要


3
仅硬件NX需要PAE。64bit已经是PAE,因此在32bit上,如果您没有运行PAE内核,或者您的硬件缺少NX位,Ubuntu将使用内存分段来模拟NX功能。
Kees Cook

@Kees Cook:感谢您提供信息。OP询问了有关32位的问题。在我的系统上(ubuntu 10.10 32bit)dmesgNX (Execute Disable) protection cannot be enabled: non-PAE kernel。另一方面,当我从bazaar.launchpad.net/~ubuntu-bugcontrol/qa-regression-testing/…运行测试时,似乎强制执行了nx,但对-pieand -rie测试却没有执行。所以这让我有些困惑。
安排

2
不幸的是,10.10及更高版本的dmesg报告存在一个错误,该错误没有说明何时在具有NX但没有PAE内核的硬件上启用NX仿真:kernel.ubuntu.com/git?p=ubuntu/…
Kees Cook

1
(现在已报告它是一个错误:bugs.launchpad.net/ubuntu/+source/linux/+bug/745181
Kees Cook
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.