作者:匿名用户
链接:https://www.zhihu.com/question/265012502/answer/288407097
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

首先要明确的是:
1)这个漏洞不是去年说的Intel ME的漏洞;
2)这个漏洞不是很多答主说的依靠时间推测内核加载地址的问题。

这是一个新爆出的漏洞,虽然看起来不是1月2号才暴露出来。因为Linux和Windows早在去年11月份左右就有动作开始修补了。

下面是科普时间:

首先我们需要知道,以前常见的虚拟内存结构怎样的。以32位Linux为例,我们知道2^32 Bytes = 4GB,从应用程序的眼中来看,我拥有4个G的内存。但是,这4个G的内存并不完全属于应用程序——高地址那边的1GB大小的映射是属于内核的。比如,假设内核有一段代码在虚拟地址0xCCCCCCCC这个位置上,应用程序也是无法直接调用的。换句话说,虽然这些地址普通程序不能访问,但内核程序、内核栈等确实映射在这了。

看起来一切正常。接下来,假设我们发现了一个内核漏洞,这个漏洞允许程序调用任意内核级的代码——也就是说,应用程序通过这个漏洞可以调用内核中0xCCCCCCCC地址的程序了,进而对系统造成危害。

那么如何减轻发现内核漏洞之后的危害呢?毕竟,有代码的地方就会有bug。大佬们决定采用一种随机的方法:你不是要调用0xCCCCCCCC这块的代码吗?那我每次启动的时候,把内核映射到一个随机的地址上就好了嘛,比如这段代码这次启动的时候它在0xCCCC0000,下次启动它就变成了0xCCCC8888,让人摸不着头脑。

这种机制就叫KASLR。它随机化内核在虚拟空间中的地址,只有内核自己知道我在哪,别人休想知道。所以说,KASLR不是“修补”漏洞,而是提高了利用漏洞的成本——最好的情况是,虽然有人发现了漏洞,但却难以利用。

但是,魔高一尺道高一丈。另一位大佬说,你这太弱了。我用一种方法,能探测出你究竟随机到哪去了。这就是很多答主说的Time Based Attack。因为放代码的地址和没放代码的地址,在某些操作下时间长短不一样。

因此,这种Attack不是真正的漏洞攻击,但他让KASLR机制失效了。如果有人发现了可利用的内核漏洞后,就可以用这种方式绕过KASLR。

大佬还说了,虽然KASLR不好使了,但我的新方法好使啊。这个新方法就是KAISER——内核除了让应用程序知道必要的信息外,不再在应用程序的眼中“可见”。但是代价也是有的,就是性能会有所下降。

好了,下面到了今天主角登场的时间了。这次的CPU漏洞,能够使得应用程序访问任意地址——包括映射到应用程序空间中的内核地址(即新闻标题中的“Kernel Memory Leaking”,内核内存泄露)。这就相当于我们刚才说的“内核漏洞”(虽然这是CPU的bug),但是这个漏洞可不好修。所以只能阻止这个漏洞的利用条件了——用KAISER机制,让你根本访问不到内核中的东西,把内核从应用程序的眼中“隐藏”。虽然降低了一些性能,但也总比被搞事情强。

Ps. 根据一些文章,目前这项机制在Linux中改名为了“KPTI”,即内核页表隔离。

非商业转载一部分内容

新能损失部分

目前phoronix已对此进行了测试,IO性能几乎下降了50%,编译性能下降了接近30%,postgresql和redis也有差不多20%的性能下跌,详细地址:Initial Benchmarks Of The Performance Impact Resulting From Linux's x86 Security Changes

作者:Allen Leung
链接:https://www.zhihu.com/question/265012502/answer/288199200
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

【转帖】intel 2018年1 月2号爆出漏洞分析 知乎匿名用户的更多相关文章

  1. 【程序员札记#学习&&塑形# 】2018年5月04号

      回顾   工作:pendding 学习:看算法导论第一章,leetcode还在做(本身翻译错误,被误导了). 体会: 1) 浩俊之前推荐让我看的<算法导论>,昨天再回过头看,里面很多确 ...

  2. WIN10 困扰多时的屏幕亮度 终于可以调节了-完美 -更新2018年2月28日

    总结:很多问题是自己认知不够造成的,  -- 问题解决在  修复经历二,可直接跳过去看  修复经历二. 首先看你屏幕亮度是集成还是独立显卡决定的(一般是集成),所以下面 修复经历一折腾独立显卡驱动没什 ...

  3. 【转帖】2018年Windows漏洞年度盘点

    2018年Windows漏洞年度盘点丨老漏洞经久不衰,新0day层出不穷 腾讯电脑管家2019-02-12共17875人围观 ,发现 1 个不明物体网络安全资讯 https://www.freebuf ...

  4. [CB]Intel 2018架构日详解:新CPU&新GPU齐公布 牙膏时代有望明年结束

    Intel 2018架构日详解:新CPU&新GPU齐公布 牙膏时代有望明年结束 北京时间12月12日晚,Intel在圣克拉拉举办了架构日活动.在五个小时的演讲中,Intel揭开了2021年CP ...

  5. [2018-11-27]2018年12月1日宁波dotnet社区线下活动

    离上次活动,转眼又过了一个月,幸得各路大神支持,于本周六(12月1日),宁波dotnet社区的线下分享活动又来啦! 活动嘉宾及主题 董斌辉 2015-2019年微软全球最有价值专家(.NET方向) 2 ...

  6. 2018 年 3 月 iOS 面试总结(上市公司,BAT)

    序言: 今年2月中下旬因为个人原因,换了一份工作,3月初期间面试了有3,4家,基本都是D轮或者刚刚上市的公司,也有上榜的BAT,也从他们的面试笔试中看到了自己的一些不足,于是就想写出来和大家分享一下, ...

  7. 2018 年 3 月 iOS架构师 面试总结

    序言: 今年2月中下旬因为个人原因,换了一份工作,3月初期间面试了有3,4家,基本都是D轮或者刚刚上市的公司,也有上榜的BAT,也从他们的面试笔试中看到了自己的一些不足,于是就想写出来和大家分享一下, ...

  8. 2018年4月更新70多个公司dnc招聘职位

    2018年4月更新70多个公司dnc招聘职位 请在本页回复,补充dnc招聘信息.公司案例 dnc简介 dnc = .NET Core.dotnet Core简写 dnc是微软新一代主力编程平台,开源. ...

  9. 2018年12月8日广州.NET微软技术俱乐部活动总结

    吕毅写了一篇活动总结,写得很好!原文地址是:https://blog.walterlv.com/post/december-event-microsoft-technology-salon.html ...

随机推荐

  1. 你不得不知道的 .NET CORE —— .NET Framework, .NET Core 和 .NET Standard 的区别

    .NET Framework 和 .NET Core 是平台应用框架,而 .NET Standard 是 .NET 底层库.因此只要用 .NET Standard 工程来写的代码可以直接在上层的平台应 ...

  2. go标准库的学习-io

    参考https://studygolang.com/pkgdoc 导入方式: import "io" o包提供了对I/O原语的基本接口.本包的基本任务是包装这些原语已有的实现(如o ...

  3. 数据库连性池性能测试(hikariCP,druid,tomcat-jdbc,dbcp,c3p0)

    文章转自  https://www.tuicool.com/articles/qayayiM 摘要: 本文主要是对这hikariCP,druid,tomcat-jdbc,dbcp,c3p0几种连接池的 ...

  4. Python package和module

    package,即包,可以把功能相近的module(模块)组织在一起,以便更好地管理.Java中也有包的概念,作用类似,是为了更好地管理类和接口.package,说白了就是个目录,不过这个目录下一定要 ...

  5. python简介及安装配置

    概述 python是解释型语言,相对编译型语言,执行效率较低.python是通过c语言编写,官方解释器也是c语言编写cpython,也有其他的如用java编写的jpython.目前有2.0和3.0版本 ...

  6. ftp 传输数据:命令链路连接方法是一样的,而数据链路的建立方法就完全不同

    0.FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式. PORT(主动)连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请 求,服务器接受连接,建立一条命令链 ...

  7. SkylineGlobe Android 开发 面积计算示例代码

    SkylineGlobe Android 开发 面积计算示例代码: 如果之前熟悉SkylineGlobe桌面端的二次开发,看这些代码应该不难理解. package com.skyline.terrae ...

  8. 源码篇:Python 实战案例----银行系统

    import time import random import pickle import os class Card(object): def __init__(self, cardId, car ...

  9. odoo学习之弹框显示

    按条件隐藏: <xpath expr="//group[1]" position="attributes"> <attribute name= ...

  10. [转]Web 通信 之 长连接、长轮询(long polling)

    本篇文章转载自Web 通信之长连接.长轮询(longpolling),版权归作者所有. 转者按:随着技术的发展,在HTML5中,可以通过WebSocket技术来完成长连接的开发,虽然如此,本文依然存在 ...