背景篇
我们读知道CPU的执行模式有特权和非特权之分,在特权模式下,可以访问到尽可能多的硬件资源;在非特权模式之下,很多资源都被限制访问。
应用在非特权模式,内核在特权模式,应用要做什么特别的事情,必须通过系统调用陷入到内核。
内核为了保护自己,通常把自己的虚拟地址空间,映射为仅仅特权模式可以访问,这样用户态的非特权模式是无法访问内核的数据的。meltdown的恐怖之处在于让非特权模式可以访问到特权模式的数据了。
理论篇
下面4分钟视频解释meltdown漏洞如何使得用户空间可以看到内核空间的内容:
class="video_iframe" data-vidtype="2" allowfullscreen="" frameborder="0" data-ratio="1.7647058823529411" data-w="480" data-src="http://v.qq.com/iframe/player.html?vid=o13332fd8ju&width=670&height=376.875&auto=0" style="display: none; width: 670px !important; height: 376.875px !important;" width="670" height="376.875" data-vh="376.875" data-vw="670"/>
实战篇
下面是一段2分钟的案例,演示如何用应用程序获取到内核数据:
class="video_iframe" data-vidtype="2" allowfullscreen="" frameborder="0" data-ratio="1.7647058823529411" data-w="480" data-src="http://v.qq.com/iframe/player.html?vid=x1333bz97nc&width=670&height=376.875&auto=0" style="display: none; width: 670px !important; height: 376.875px !important;" width="670" height="376.875" data-vh="376.875" data-vw="670"/>
案例涉及到的代码位于:
参考资料
Linuxer已经推送的其他meltdown资料汇总: