文|Tencent Blade Team
coolboy
背景
外部有报道称出现了CPU漏洞spectre的在野利用,各项证据均指向为Immunity Canvas商业渗透框架里面的spectre CPU漏洞攻击模块被上传到了VirusTotal,由此揭开了spectre武器化工具的神秘面纱。
2018年披露的spectre和meltdown CPU漏洞影响范围广泛,但由于修复困难、修复方案影响性能、没有出现武器化工具而一直被轻视。
恰巧Blade Team在CPU漏洞方面有一些研究和积累,有幸获得一份Immunity Canvas,于是开始对spectre武器化工具抽丝剥茧,一探究竟,希望能够引起大家对CPU漏洞的重视。
Spectre && meltdown
为了讲清楚来龙去脉,在正式开始Canvas spectre分析之前,有必要对一些CPU漏洞背景做一个简单的介绍。
1. 侧信道攻击
侧信道攻击是指通过cache等第三方介质,并不直接访问目标而实现从目标窃取数据的攻击。
由图可见,访问cache需要10-100ns,访问内存需要100ns,它们时间是有差异的,通过测量访问时间,我们可以得知数据是从内存中来或者是从cache中来。
2. spectre
为了提高性能,现代CPU都具有分支预测,乱序执行功能。指令的执行并不严格按照先后顺序,由于分支预测和乱序执行,靠后的指令可能提前执行,此时执行并没有将结果实际生效,而是等待前面指令生效以后,再依据前面指令的结果决定后面的指令是否生效。例如:
当指令流水线来到line1时,由于分支预测flag为真, line3优先执行了,实际结果是否生效依赖于line1的if (flag) 指令的结果,如果为真,则生效,如果为假,则丢弃line2, line3的结果,并不会实际反映在寄存器里面。
我们关注line3这条语句对应的指令对系统产生的影响:
1、访问arr[secre