javascript,chrome与幽灵攻击---JavaScript,chrome with Spectre Attacks

javascript,chrome与幽灵攻击

----JavaScript,chrome with Spectre Attacks

本文主要介绍曾经沸沸扬扬的CPU幽灵及熔断漏洞,以幽灵漏洞为主。之后介绍它们和JavaScript和浏览器之间的关系,还有浏览器对这种漏洞的防御。

CPU与幽灵攻击

分支预测

  现代的CPU大部分都带有分支预测乱序执行的技术,作为现代CPU的一个重要特征,它们用以克服过于繁忙的执行单元在等待上的延迟。以分支预测为例,在计算机中,CPU和内存合作完成程序的执行,但是CPU速度远远快于内存读取的速度,所以会出现这样的情况,比如CPU的一个内存读取单元需要等待内存数据的到达,但现代处理器将不会拖延整个程序的执行,而会向前看,在等待过程中提前推测并执行后面的内容。

  此外,在操作系统中存在内存隔离的机制,该机制是为了确保一个程序无法访问属于其他程序的内存区块。
  本文要将的分支预测和幽灵漏洞即打破了内存隔离的限制,访问到了受害者存在隐私信息的内存隔离限制。

  举个简单的例子, 你写了一系列if语句,进入哪个分支取决于分支条件的检查,而然而在分支条件检查结果还未返回的时候,cpu会进行分支推测,并提前执行分支内代码。当分支检查的结果返回后,cpu会保留或者丢弃刚才的执行结果,但是该过程会影响到高速缓存的内容,而高速缓存的内容不会因为预测错误被清除或回退。cpu这种执行方式,导致可以访问本身不被允许的受害者的内存或者寄存器里面的值,这便是本文所要讲的漏洞内容。

JavaScript与幽灵攻击

幽灵和熔断漏洞是近些年发现的CPU漏洞,并且该漏洞已经影响到我们接触的开发式web平台。
  下面以JavaScript条件语句为例,具体介绍下幽灵漏洞。

  由于CPU存在分支预测的技术,通过这个技术去预测可能会进入的分支并,并且短暂的改变代码的语义顺序,去提前执行分支内的语句。而不正确的分支预测被攻击者用来从程序的地址空间中读取私密信息。
以这段代码为例:

if (x < array1_size)
y = array2[array1[x] * 4096];

  简单的说下攻击者的攻击过程。
  在初始阶段,攻击者可以多次用有效的输入值调用这段代码,使代码进入分支内并执行。因此,CPU的分支预测就会期望if的条件未来也是true。接下来,攻击者会控制x,让x是超出array1边界的值。此时的CPU在等待分支判定结果之前,会猜测分支检测会是true。因此在等待的过程中,会预先用带有恶意目的的x值执行分支内语句

y = array
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值