CVE漏洞中文网

0DayBank一个专门收集整理全球互联网漏洞的公开发布网站
  1. 首页
  2. 漏洞列表
  3. 正文

3639

2018年11月13日 834点热度 0人点赞 0条评论
  • FB招聘站
  • 分类阅读
  • 专栏
  • 公开课
  • FIT 2019
  • 企业服务
  • 用户服务
  • 搜索
  • 投稿
  • 登录
  • 注册

CVE-2018-3639最新边信道攻击详细分析

创世之枪2018-08-10+8共82181人围观 ,发现 2 个不明物体漏洞

前言

出于对CPU相关漏洞的兴趣,我深入研究了下CVE-2018-3639(Spectre4,幽灵4),有不正确的地方欢迎指正。

根据微软的一篇博客,已经发现的可用于揣测执行边信道攻击的分支(Speculation primitives)共有4种,分别是条件分支预测失误(conditional branchmisprediction)、间接分支预测失误(indirect branch misprediction) 、异常传递或延期(exception deliveryor deferral)以及今天的主角揣测存储绕过(Speculative StoreBypass)。

详细分析

直接上代码的最重要部分,此代码经过个人添加了注释并修改过一些BUG,可以在文章最后下载源码对照查看每个变量的含义:

代码的最重要部分

最重要的代码在115行和122行,在C语言层面看不出任何问题,请查看汇编代码:

汇编代码

汇编代码中红色部分为115行代码,绿色部分为122行代码,紫色部分即为出现问题的关键代码。

这两行代码出现问题的原因是执行当前代码的核心认为两条指令仅存在输出相关,因此可以使用寄存器重命名的方式并行执行,在《计算机体系结构:量化研究方法(第五版)》中可以找到相关解释:

书籍中的相关解释

并行执行不一定会出问题,还需要让执行单元先执行testfun+138指令再执行test+135指令,这样才能保证testfun+138会错误的影响cache。示例代码能够达成这个条件的原因是test+135指令与testfun+128指令相关,因此需要等待前面代码执行完毕,而test+138则没有这个顾虑。

继续深入到核心内部的执行单元,查看其到底是如何完成并行执行的,下图是Intel的Sandy Bridge微架构执行单元:

Intel的Sandy Bridge微架构执行单元

查询AMD的17代处理器微架构文档,查询到如下信息:

image.png

AMD的17代处理器微架构文档

所以可以判断上述两条宏观指令分别被翻译为单条存储相关微指令和单条加载相关微指令,结合上述寄存器重命名技术,因此可以判断在此微架构中使用port2和port4来并行执行两条指令,真相大白。

虽然在test+135存储指令执行完毕后,test+138指令由于错误会回退,但是已经受到影响的cache不会回退,所以可以结合rdtscp指令对cache lin 进行时间测试观察是否cache hit即可判断出到数据是多少。

不知读者还记得幽灵1不,它主要是由于错误的分支预测导致的 cache line 缓存了错误的数据。而幽灵4,主要是由于错误的揣测执行(暗自揣测圣意认为两条指令无关)造成的Meltdown,来源想不起来了。虽然AMD也有异常抑制技术,但是不受到该漏洞影响的原因是核心的执行单元有限,个人觉得应该是AMD的Store和load执行单元为同一个所以免疫,有待后续查证,附带上几个Intel和AMD的架构以供参考:

Intel Haswell微架构:

Intel Haswell微架构

Intel Sandy Bridge微架构:

Intel Sandy Bridge微架构

AMD 17th 架构:

AMD 17th 架构

DEMO程序编译命令:

gcc -o Spec4 Speculative4.c -Wall-DHIT_THRESHOLD=50 -DNO_INTERRUPTS -ggdb

参考文献

漏洞PoC地址:https://www.exploit-db.com/exploits/44695/

微软针对CVE-2018-3639的解释:https://blogs.technet.microsoft.com/srd/2018/05/21/analysis-and-mitigation-of-speculative-store-bypass-cve-2018-3639/

Intel Sandy Bridge微架构详解:https://en.wikichip.org/wiki/intel/microarchitectures/sandy_bridge_(client)#MSROM_.26_Stack_Engine

Intel Sandy Bridge微架构详解(中文):http://www.mouseos.com/arch/intel_microarchitecture.html

AMD 17代处理器优化说明:https://developer.amd.com/wordpress/media/2013/12/55723_3_00.ZIP

《计算机体系结构:量化研究方法(第五版)》

Intel官方手册:64-ia-32-architectures-optimization-manual.pdf

AMD开发手册:https://developer.amd.com/resources/developer-guides-manuals/

已知的CPU漏洞汇总:https://wiki.osdev.org/CPU_Bugs

*本文作者:创世之枪,转载请注明来自FreeBuf.COM

创世之枪1 篇文章等级: 1级
|
|
  • 上一篇:缝缝补补的WebLogic:绕过的艺术
  • 下一篇:快讯 | Drupal网站管理员们请注意:Symfony漏洞会让你的网站沦陷!
发表评论

已有 2 条评论

  • Alsioy 2018-08-10回复1楼

    前排,估计要火。

    亮了(0)
  • aaa 2018-08-10回复2楼

    这尼玛还有安全可言吗 I9也是卵的 牙膏厂越来越不如AMD了

    亮了(0)

 

必须您当前尚未登录。登陆?注册

必须(保密)

表情插图

取消

创世之枪

这家伙太懒,还未填写个人描述!

1文章数0评论数

最近文章

CVE-2018-3639最新边信道攻击详细分析

2018.08.10

浏览更多

相关阅读

  • Meltdown/Spectre最新进展:补丁影不影响性能?英特尔做了一场实验
  • 微软联手英特尔,在Windows更新中推送Sepctre微代码升级
  • 英特尔ME漏洞仍存在,Black Hat安全研究人员不淡定了
  • 在美国政府之前,英特尔提前告知中国巨头企业关于CPU漏洞的信息
  • BUF早餐铺 | 汇丰银行部分用户数据泄露;GPU 存在边信道攻击漏洞;英特尔起草新数据隐私法

特别推荐

关注我们 分享每日精选文章

活动预告

  • 11月

    FreeBuf精品公开课·双11学习狂欢节 | 给努力的你打打气

    已结束
  • 10月

    【16课时-连载中】挖掘CVE不是梦(系列课程2)

    已结束
  • 10月

    【首节课仅需1元】挖掘CVE不是梦

    已结束
  • 9月

    【已结束】自炼神兵之自动化批量刷SRC

    已结束

FREEBUF

  • 免责声明
  • 协议条款
  • 关于我们
  • 加入我们

广告及服务

  • 寻求报道
  • 广告合作
  • 联系我们
  • 友情链接

关注我们

  • 官方微信
  • 新浪微博
  • 腾讯微博
  • Twitter

赞助商

Copyright © 2018 WWW.FREEBUF.COM All Rights Reserved 沪ICP备13033796号

css.php

正在加载中...

0daybank

标签: 暂无
最后更新:2018年11月13日

小助手

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2024 www.pdr.cn CVE漏洞中文网. ALL RIGHTS RESERVED.

鲁ICP备2022031030号

联系邮箱:wpbgssyubnmsxxxkkk@proton.me