腾讯安全玄武实验室打破了这个错觉. 在7月21日 '2018看雪峰会' 上, 实验室高级研究员宋凯首度分享了如何在浏览器中利用'Spectre'漏洞, 并如何通过JS 触发'Spectre'漏洞并且生成可以稳定刷新缓存的汇编指令. 除此之外, 宋凯还分享了在浏览器中, 通过'Spectre' 漏洞可能造成的实际危害, 及相关的缓解措施.
2018安全开发者峰会由行业老牌安全技术社区——看雪学院主办, 会议面向开发者, 安全人员及高端技术从业人员, 是国内开发者与安全人才的年度盛事. 腾讯安全作为本次峰会的钻石级赞助单位, 携四大业务矩阵亮相现场, 展现了以腾讯安全联合实验室七大国际顶尖白帽黑客为能力核心构建的人才+技术的业务模式, 受到在场行业人士的广泛关注.
小工具的大收获
毫无疑问, 'Spectre' 是一个严重的CPU漏洞, 打破了不同应用程序之间的隔离, 影响了大部分的主流架构. 它允许攻击者欺骗无错程序, 且攻击者可以通过缓存来利用这个漏洞, 泄漏用户级进程中的敏感数据. 大部分公开的攻击, 都是本地攻击. 如果可以通过浏览器进行漏洞利用, 那么对用户的大规模攻击将成为可能. 由于浏览器用户量庞大, 若攻击成功, 结果将不堪设想.
'理论上, 这个漏洞对个人用户最主要的危害相当于一个跨平台跨浏览器的超级UXSS. 但实际能否实现? 能多大程度上实现? 大家心里都没数. ' CPU漏洞公开的第五天, 腾讯安全玄武实验室负责人于旸(TK教主)在微博上公开了实验室这段时间 '沉寂' 的成果——研发了一个可以检测用户浏览器是否易遭受攻击的在线检测工具.
企业用户可借助该工具实时检测浏览器安全状态. 若检测结果表明浏览器易于遭受攻击, 则说明风险真实存在. 宋凯在现场还分享了这个工具上线后的 '意外' , '当时这个漏洞工具发布之后也算是全球首发的在线检测工具, 为数以千计的用户检查出了自己设备中的问题. 比较出乎意料的是, 因为我们最开始的测试环境有限, 只在一些Windows机器上测试了Chrome浏览器相关的漏洞, 发布了之后发现竟然不同的设备都会被影响, 比如SurfacePro, MacOS, iPhoneX, Pixel 2等. '
解决两个核心问题
在线检测工具只是开始. '未知攻, 焉知防' , 摸清利用 'Spectre' 漏洞发起攻击的方式才是腾讯安全玄武实验室这群白帽黑客的研究重点.
宋凯在演讲中表示, 这个漏洞的根本原因是因为推测执行中的代码可以影响CPU的缓存, 而这个缓存的影响又可以用一些技术手段探测出来. 分支逻辑在这种实践上是不可靠的, 因为缓存被影响了, 它可以让攻击者推测出预测执行中所访问数据的内容, 并且这个数据是可以测量的, 就可以进一步的泄露了.
于是如何稳定的刷新缓存, 以及如何保证在利用过程中特定的数据不出现在缓存中, 是在浏览器其实现漏洞攻击首先需要解决的问题.
腾讯安全玄武实验室的做法是, 先访问大量不同的地址来强制刷新缓存, 实现缓存刷新的功能, 再通过将变量放在不同的内存中来遍历的方式, 保证每一次遍历的变量都不在缓存中. 同时, 通过Worker+SharedArrayBuffer可以做到相对预测内存访问时间的精度计时器, 通过动态遍历缓存大小的方式用来适配不同的设备也是整套攻击方案中必不可少的部分.
值得一提的是, 腾讯安全玄武实验室在研究实现过程时, 对CPU '分支预测' 功能的利用颇具有利用人工智能局限性的意味——通过五次训练让执行效果反馈为true, 最终可以让CPU比较稳定的出现进入到分支内的推测逻辑.
'通过javascript想实现整套攻击需要解决很多问题' , 宋凯最后总结道, 包括如何稳定刷行缓存, 确保特定的数据不出现在缓存中, 高精度时间计时器, 动态探测缓存大小. 想要造成实际的危害, 主要需要解决的问题是内存布局.
本次研究仅仅是腾讯安全玄武实验室部分的能力体现. 在本次峰会上分享的宋凯曾代表腾讯安全玄武实验室赢得Pwn2Own 2017 Edge 浏览器项目;曾连续三年入选微软MSRC 全球Top 100 贡献者榜单, 最高排名第12位;更曾赢得2016年微软Mitigation Bypass Bounty 项目, 以及2015年和2016年的Edge Bounty 项目.
实验室成员对于信息安全技术的深耕, 也直接通过腾讯安全输出为技术能力, 保卫广大用户的网络安全. 在年初CPU漏洞爆发之后, 除腾讯安全玄武实验室研发的在线检测工具之外, 腾讯安全反病毒实验室和腾讯电脑管家也迅速上线相应的漏洞修复工具和检测工具, 帮助用户快速方便的完成漏洞探测, 及时发现隐患, 将风险降到最低.