内存管理-专项-KALSR
KASLR(内核地址空间布局随机化Kernel Address Space Layout Randomization)
KARL内核地址随机化链接Kernel Address Randomized Link
KARL 由 Theo de Raadt 开发。KARL 会在安装、升级和重启时生成一个新的内核二进制文件。当用户启动、升级和重启机器时,最新生成的内核会替换已有的内核二进制,而操作系统会生成一个新的内核,其将用于下次启动、升级和重启,周而复始。
不要将 KARL 和 ASLR(地址空间布局随机化Address Space Layout Randomization)相混淆,ASLR 是一种用于随机化应用代码执行的内存地址的技术,以防止知道应用或内核运行的特定区域而被针对性利用。
de Raadt 说,“它仍然装载在 KVA(内核虚拟地址空间Kernel Virtual Address Space)中的同样位置,这不是内核的 ASLR!”
相反,KARL 以随机的内部结构生成内核二进制,这样漏洞利用程序就不能泄露或攻击内核内部函数、指针或对象。技术性的解释参见下面内容。
一个独特的内核是这样链接的,启动汇编代码仍放在原处,接着是随机大小的空隙,然后是随机重组的其它 .o 文件。这样的结果就是函数和变量之间的距离是全新的。一个指针的信息泄露将不会暴露其它指针或对象。这或许会减少可变体系架构的组件,因为指令流的多态性被嵌套偏移的改变所破坏。
“因此,每次的新内核都是独特的。”de Raadt 说。
@2018-07-11 18:16
Comments