CPU漏洞介绍、检测、修复
▪沈阳网络安全协会
▪漏洞描述
▪针对英特尔处理器涉及到两种攻击方法,分别为 Meltdown 和 Spectre, Spectre 涉及 CVE 编号CVE-2017-5753 和CVE-2017-5715,而Meltdown 涉及 CVE 编号 CVE-2017-5754。
▪Meltdown 破坏了位于用户和操作系统之间的基本隔离,此攻击允许程序访问内存,因此其他程序以及操作系统的敏感信息会被窃取。这个漏洞“熔化”了由硬件来实现的安全边界。允许低权限用户级别的应用程序“越界”访问系统级的内存,从而造成数据泄露。
▪Spectre 则是破坏了不同应用程序之间的隔离。问题的根源在于推测执行(speculative execution),这是一种优化技术,处理器会推测在未来有用的数据并执行计算。这种技术的目的在于提前准备好计算结果,当这些数据被需要时可立即使用。在此过程中,英特尔没有很好地将低权限的应用程序与访问内核内存分开,这意味着攻击者可以使用恶意应用程序来获取应该被隔离的私有数据。
▪影响范围
▪本次安全事件影响到的范围很广,包括:
▪处理器芯片:英特尔为主、ARM等,对其他处理器同样可能存在相关风险。
▪操作系统:Windows、Linux、Unix、macOS、Android等。
▪云服务提供商:亚马逊、微软、谷歌、腾讯云、阿里云等
▪各种私有云基础设施。
▪桌面用户可能攻击。
▪介绍乱序执行
▪乱序执行是一种优化技术,它最大限度的利用 CPU 内核的所有执行单元。CPU不是严格按照顺序执行处理指令的,只要需要的资源可用,就会立即执行它们。当前操作的执行单元被占用时,其他执行单元可以向前排。因此,只要结果遵循架构定义,指令就可以并行运行。
▪在实践中,支持乱序执行的CPU 会在弄清楚是否允许之前推测性地执行处理器的乱序逻辑处理指令。它指的是分支之后的指令序列,并且使用乱序执行这个术语来指代在处理器已经提交所有先前指令的结果之前执行操作的任何方式。
▪在英特尔架构上,流水线由前端、执行引擎(后端)和内存子系统组成。x86指令由前端从内存中读取并解码为连续发送到执行引擎的微指令(μOP)。乱序执行在执行引擎中执行,如图 1 所示。
▪介绍乱序执行
▪图片 1:
▪简单介绍Intel Skylake
▪微体系结构的一个内核。
▪指令被解码成微指令,
▪并由执行单元乱序执行。
▪介绍乱序执行
▪重组缓存器负责寄存器分配,寄存器重命名和确认执行。此外,像数据移动消除或清零操作识别等优化可以由重组缓存器直接完成。
▪微指令攻击被转发到统一预留站,将连接到执行单元的出口端口上的操作排队。每个执行单元可以执行不同的任务,如 ALU 操作、AES操作、地址生成单元(AGU)或内存加载和存储。AGU 以及加载和存储执行单元直接连接到内存子系统以处理其请求。
▪由于 CPU 通常不运行线性指令流,因此它们具有分支预测单元,用于获得接下来将执行哪条指令的有根据的猜测。分支预测器在实际评估条件之前尝试确定分支的哪个方向。如果预测是正确的,那么在这条路上的指令并没有任何依赖关系可以被提前执行,并立即使用它们的结果。如果预测不正确,重组缓存器允许回滚,即通过清除重组缓存器并重新初始化统一预留站来回滚。
▪介绍乱序执行
▪预测分支的各种方法:对于静态分支预测,分支的结果完全基于指令本身。动态分支预测在运行时收集统计数据来预测结果。一级分支预测使用 1 位或 2 位计数器记录分支的最后结果。现代处理器通常使用两级自适应预测器,记忆最后 n个结果的历史记录以定期预测循环模式。
▪漏洞利用演示
▪图片2 :
▪Intel Core i7-6700K
▪Ubuntu 16.10
▪利用Meltdown 进行内存转储。
▪在该示例中,我们可以识别对运行
▪在机器上的 Web服务器的请求的
▪HTTP 报头。“XX”代表在侧信道
▪未产生任何结果的字节,
▪即无Flush+Reload 攻击。
▪攻击的额外重复可能仍然能够读取这些字节。
▪漏洞利用演示
▪图片3 :
▪Intel Corei7-6700K
▪Ubuntu16.10
▪显示 HTTP 报头的内存转储。
▪检测漏洞方法一
▪Windows用户,使用微软公司提供的检测PowerShell脚本,能够判断Windows系统是否受漏洞影响。
▪一、需要安装相应的PowerShell模块,对应命令:
▪PS> Install-Module SpeculationControl
▪二、需要调用相应脚本,对应命令:
▪PS> Get-SpeculationControlSettings
▪其中,开启的保护会显示为True,
▪未开启的保护则会显示为False,
▪如下图所示:
▪检测漏洞方法一
▪检测漏洞方法二
▪360安全卫士于1月5日紧急推出“CPU漏洞免疫工具”,从漏洞修复及安全防护两方面入手,阻断漏洞入侵通道。
▪该工具可一键检测电脑是否存在漏洞,全方位排查补丁兼容性,并为受到漏洞影响的系统及浏览器推送安全更新,有效免疫CPU漏洞。
▪针对没有补丁的系统,开启360安全卫士能够全面防御攻击,把漏洞风险降到最低。
▪CPU漏洞免疫工具下载地址
▪检测漏洞方法二
▪检测漏洞方法二
▪打补丁是防御CPU漏洞攻击的最重要一步,360安全卫士“CPU漏洞免疫工具”可一键检测系统受漏洞影响情况,全方位排查补丁兼容性,并为用户疾速下载安装补丁。
▪由于CPU漏洞的最大威胁是针对浏览器的恶意网页攻击,免疫工具会对浏览器进行检测,提示用户升级到已有补丁的最新版本,从而阻断恶意网页攻击CPU漏洞的入侵通道,为此漏洞唯一的远程攻击入口建立牢固的安全防线。
▪漏洞的修复
▪Windows (7/8/10) 和 Microsoft Edge/IE
▪微软已经发布了针对Windows 10 的安全更新(KB4056892),用于解决 Meltdown 问题,并将于 1 月 9 日发布针对 Windows 7 和Windows 8 的修复程序。
▪Linux
▪Linux 也发布了内核补丁,版本包括 4.14.11、4.9.74、4.4.109、3.16.52、3.18.91 和 3.2.97,用户可以从 Kernel.org 上下载。
▪漏洞的修复
▪Apple macOS、iOS、tvOS 和 Safari Browser
▪Apple 在公告中指出,所有 Mac 系统和iOS 设备都受到了影响,但目前还没有已知的攻击事件发生。
▪为了预防Meltdown 攻击,Apple 已经在 iOS 11.2、macOS 10.13.2 和 tvOS 11.2 上释出了缓解措施,针对 Spectre 攻击的修复方案将在后续发布。
▪Android OS
▪Google 表示,1 月 5 日发布的安全更新已经释出了最新版的 Android 操作系统。
▪漏洞的修复
▪Firefox Web Browser
▪Mozilla 已经发布了 Firefox 57.0.4 版本,其中包含针对 Meltdown 和 Spectre 攻击的缓解措施,建议用户尽快更新。
▪Google Chrome Web Browser
▪Google 计划在 1 月 23 日发布 Chrome 64 版本用于防御针对 Meltdown 和 Spectre 的攻击,在此期间,用户可启用 “Site Isolation” 功能。
▪漏洞的修复
▪VMware
▪云计算厂商 VMware也发布了受影响的产品清单以及针对Meltdown 攻击的修复措施。