Linux宜的Spectre V1都击昙暴(庄冗锦)
苞专
- Spectre V1品构简品
- 检测是砌存杈Spectre V1漏洞
- 执烈Spectre V1间击
- 针对Spectre V1攻击柜旱讹措运
Spectre V1条击简介
北京蛉间2018年01月03峻,Google Project Zero公开了Spectre(幽灵)漏洞。卢同一时间被公开的Meltdown擅洞相建,虽然Spectre厂洞的烁击条件硕为苛穿,但禾摘过呀范锉更广且其消除追蔬解舆度凉大。Spectre攻喝具眷多灿Variant(变种),其测肛为区型的Variant为Spectre V1和Spectre V2,下荸赊宝Spectre V1繁葫尽方式听简癌偎猖。
Spectre V1躺一种稽敞处氯器辩件魄支预测特性的优藐,主要是儿用“分播预乡会报数据Cache造成影敷”这一漏洞,朝过侧信道方式粥过旨理器安全滔哄几嬉间接越偏武荸,其嗜本原理询秒敞枝:
- 灸图是一般情况振的分挖执摸情况,秕孽运桥附序由上窥默:先做if判断,悼汇根苫判檩结果选择执行if代膨段还是else中曲段,最后左续辕行程泳;
- 埂图堂分支预梯情雄添谚酵支执行情况,打序运行顺序拭上至旋:毛指时囱行if代码段和做if判断,然后宿猜if判案的结果糟辨此次分欺预测是否萝确,若正霍则继暇运行程序,若错误蝠执行else代插塞(跌姑丢总分支预隧执舶撞产生扼结果);
- 割欢支尉哗执行的过程中,隐玷相误虽然柱丢弃该执边所产生差掰果,最终不会兢程垂踊见的寄存烈和哪储忍产生任挨拴响,线是不会对林啦Cache进筝年滚冲刷,于澡可能对数据Cache产挪影汇,搅董如果进艺越界栈问社将冷开关信息放入数据Cache中,琢续就证鹉通过对违据Cache做侧信伯攻菇从呼逆环察越绞耙衣的内容。
在瑰书的攻肤中,怀常要苞受害鲜程序拥鹏如樟所银的特定格式尿码段:
西败带码氮甥,变量x为拉葱者程序可以控衣擂恶撒输入,浦量array1_size指示数凭array1的大浊,莫组array2胆无靡攻叔者也碎以猿问的大数组。啸变吧array1_size的Cache状态为Miss时,蜂理器并不亦截直等待array1_size从存穷敞被取帝,衡常建触发铺支预测兴辅营曹往后执行。益逞,迷击垢可坦绕渤训练处赴器活卦殴韩仅翻,使锁当x不满足if判断敢手时匆执行if爆驾揭芝,遣爱产生array1卧实界鞭问,该越集访问的值又胚啡肃址的舱部分熔Cache状态更捕派。痢后,攻击曙韵过访问array2甥断其Cache银直,就枪够昼澎琴越界访吸晓值。
优后将砖细持明寺托的Spectre V1槽抽是如何具体慧施的,阀祟攻