Linux平台上Meltdown&Spectre漏洞的补丁
1、漏洞原理介绍
Google的project zero项目组博客有对这三个漏洞原理进行详细介绍:
https://googleprojectzero.blogspot.my/2018/01/reading-privileged-memory-with-side.html
简单来说,就是由于处理器为了提高执行效率,采用多条指令流水线,并且指令预取。假如一条指令执行产生了异常,其后序若干指令由于乱序执行,已经会对cache产生效果。例如下图左侧代码,假设我们不知道data的值,但是在访问probe_array数组的第data个页面内存,之前产生了异常。这样尽管访问数组的操作并没有生效,但由于推测执行,访问probe_array[data*4096]的操作,已经将[data*4096]的内存读进cache中。这样,我们循环访问256个页面(假设有256个cache line),能观察到一次访问速度特别快的内存访问(比如第82次),就能推断出data=82。这也就是Cache flush+reload侧通道攻击的原理。
2、补丁信息
目前redhat已经发布了这三个漏洞的操作系统补丁,这个github页面维护了Meltdown漏洞需要的补丁:
https://github.com/hannob/meltdownspectre-patches
可以找到CentOS(redhat)上需要安装的一些补丁:
例如CESA-2018:0007的这个链接提到了这个补丁:https://access.redhat.com/errata/RHSA-2018:0007
会升级内核kernel-3.10.0-693.11.6.el7.x86_64.rpm。如果华为内网的RHEL源还没有更新,上述内核patch可以从这里下载到:
http://mirror.centos.org/centos/7/updates/x86_64/Packages/
Redhat关于微码与Intel漏洞的patch会对系统性能产生一定影响:
https://access.redhat.com/articles/3311301
因此也允许使用者动态关闭pti, ibpb, ibrs等新增内核特性,例如修改/sys文件下的一些内核选项动态控制安全补丁的开启、关闭:
[root@rhel meltdown]# echo 1 > /sys/kernel/debug/x86/pti_enabled
[root@rhel meltdown]# echo 1 > /sys/kernel/debug/x86/ibpb_enabled
[root@rhel meltdown]# echo 1 > /sys/kernel/debug/x86/ibrs_enabled
3、漏洞检测
升级完补丁,使用这个脚本检测系统是否受两个漏洞影响:
https://github.com/speed47/spectre-meltdown-checker
例如打开pti后,系统可抵御Meltdown漏洞:
[root@m60-rhel meltdown]# echo 1 > /sys/kernel/debug/x86/pti_enabled
[root@m60-rhel meltdown]# ./spectre-meltdown-checker.sh
CVE-2017-5754 [rogue data cache load] aka 'Meltdown' aka 'Variant 3'
* Kernel supports Page Table Isolation (PTI): YES
* PTI enabled and active: YES
> STATUS: NOT VULNERABLE (PTI mitigates the vulnerability)
- 点赞
- 收藏
- 关注作者
评论(0)