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 特性。 来自:The Register |