51学通信论坛2017新版

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2183|回复: 0
打印 上一主题 下一主题

OpenBSD 将在每次重启后都使用和之前不同的内核

[复制链接]

 成长值: 15613

  • TA的每日心情
    开心
    2022-7-17 17:50
  • 2444

    主题

    2544

    帖子

    7万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    74104
    跳转到指定楼层
    楼主
    发表于 2017-11-15 15:04:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


    在 OpenBSD 的测试快照中加入了一个新的功能,每次当 OpenBSD 用户重启或升级计算机时都会创建一个独特的内核。 -- Catalin Cimpanu
    本文导航

      -KARL 与 ASLR 不同 …… 15%
      -该功能是最近两个月开发的 …… 46%
      -KARL 是一个独有的功能 …… 64%
    编译自: https://www.bleepingcomputer.com/news/security/openbsd-will-get-unique-kernels-on-each-reboot-do-you-hear-that-linux-windows/
    作者: Catalin Cimpanu
    译者: wxy

    在 OpenBSD 的测试快照中加入了一个新的功能,每次当 OpenBSD 用户重启或升级计算机时都会创建一个独特的内核。
    该功能被称之为 KARL(内核地址随机化链接Kernel Address Randomized Link),即以随机的顺序重新链接其内部的内核文件,从而每次生成一个独特的内核二进制文件。
    当前的稳定版中,OpenBSD 内核使用预先定义好的顺序来链接和加载内核二进制文件中的内部文件,这导致所有用户的内核都是一样的。
    KARL 与 ASLR 不同

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

    该功能的开发始于五月份,首次讨论[1]出现于六月中旬的 OpenBSD 技术邮件列表中。KARL 最近出现于[2] OpenBSD 6.1 的快照版本中。
    “当今的情况是许多人从 OpenBSD 安装内核二进制,然后这个相同的内核二进制将运行六个月以上。当然,如果你重复地引导这个相同的内核二进制,其内存布局也是一样的。这就是现在我们所提交的代码解决的问题。”de Raadt 说,“然而, -current 快照包含了一些我正在和 Robert Peichaer 开发的将来的变化。那个变化将可以使你每次重启都启动到一个新链接的内核上。”
    KARL 是一个独有的功能

    一个销售针对隐私的硬件产品的初创企业 Technoethical 的创始人 Tiberiu C. Turbureanu 对 Bleeping Computer 说,这是一个 OpenBSD 独有的功能。
    “在 Linux 中没有实现它,”Turbureanu 说,“看起来很棒的想法”,估计有可能该功能会移植到 Linux 内核中。
    不过,Linux 刚刚增加了对 KASLR(内核地址空间布局随机化Kernel Address Space Layout Randomization)的支持,该功能是将 KSLR 移植到了内核本身,它会将内核加载到随机的内存地址。
    该功能在上周发布的 Linux 4.12 中默认启用[3]。这两者的不同是 KARL 是装载不同的内核到同一个位置,而 KASLR 则是装载相同的二进制到随机的位置。目标相同,做法不同。
    在 Windows 中没有支持 KARL,但是微软使用 KASLR 已经很多年了。反病毒创客公司 Emsisoft 的 CTO Fabian Wosar 正在全力将 KARL 增加到 Windows 内核中。
    “OpenBSD 的这个思路需要进一步发扬到(当前的 Windows 内核防护中),这样大家都可以有一个独特内核二进制了,”Wosar 在和 Bleeping Computer 的私人谈话中说到。
    “即便是你知道了(随机的)内核起始点,你也不能用它来找到要定位的特定函数,函数相对于内核起始点的位置是随系统不同而不同的,”Wosar 补充说。
    其它的操作系统平台,如 Windows 和 Linux ,如果拥有 KARL 将极大的改善其用户的安全性。

      [1]: 首次讨论 - https://marc.info/?l=openbsd-tech&m=149732026405941&w=2
      [2]: 最近出现于 - http://marc.info/?l=openbsd-tech&m=149887978201230
      [3]: 默认启用 - https://www.phoronix.com/scan.php?page=news_item&px=KASLR-Default-Linux-4.12


    声明:本文转载自网络。版权归原作者所有,如有侵权请联系删除。
    扫描并关注51学通信微信公众号,获取更多精彩通信课程分享。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|51学通信技术论坛

    GMT+8, 2025-1-31 18:42 , Processed in 0.061673 second(s), 32 queries .

    Powered by Discuz! X3

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表