发布于 2017-10-23 01:54:29 | 88 次阅读 | 评论: 0 | 来源: 网友投递
OpenBSD 类UNIX操作系统
OpenBSD是一个多平台的,基于4.4BSD的类UNIX操作系统,是BSD衍生出的三种免费操作系统(另外两种是NetBSD和FreeBSD)之一,被称为世界上最安全的操作系统。专案领导人 Theo de Raadt在1995年发起了OpenBSD 专案,希望创造一个注重安全的操作系统。
问:“你在哪内存哪里存放内核?” 答:“对不起,我不知道”
NetBSD 的团队发布了他们的第一个代码片段来实现 64 位 AMD 处理器的内核 ASLR - 地址空间布局随机化。
KASLR 版本随机将 NetBSD 内核加载到内存中,为内核提供与 ASLR 提供给应用程序相同的安全保护。
随机代码的内存位置使得诸如缓冲区溢出之类的错误类更难利用,因为攻击者不能轻易预测(并访问)错误所暴露的内存位置。
开发人员 Maxime Villard 解释说,目前的实现在引导程序和内核之间放置了一个专门的内核“prekern”。
“内核被编译为具有 GENERIC_KASLR 配置文件的原始库,而 prekern 被编译为静态二进制文件。当机器启动时,引导程序将跳入 prekern。prekern 将内核以随机虚拟地址(VA)重新定位,然后跳转到其中。最后,内核执行一些清理,并正常执行。”
Villard 补充说,实现还不够完整。例如,内核放在 prekern 的地方,它都位于连续的内存块中。
这也确立未来的发展方向,主要是:
独立的内核部分
修改几个内核入口点,不会将内核地址泄露给用户界面
随机内核堆(现在仍然是静态的)
OpenBSD 项目在6月份首次提供了类似的方法,称为内核随机化地址链接(kernel address randomised link 或 KARL),用于加固内核,防止内核级的缓冲溢出。类似地址空间布局随机化 (ASLR) 应用于随机应用程序的内存地址,KARL 随机化了内核加载,使得攻击者无法预测出一个内核缓冲溢出的内存分配地址。OpenBSD 创始人 Theo de Raadt 称,以前的内核二进制总是在相同的物理内存和相同的虚拟地址空间。
这将在 OpenBSD 6.2 版本成为 mainstream 特性。