专栏名称: 嘶吼专业版
为您带来每日最新最专业的互联网安全专业信息。
目录
相关文章推荐
黎城老乡俱乐部  ·  危!阿里131亿抛售大润发,下一个“清理”目 ... ·  昨天  
黎城老乡俱乐部  ·  危!阿里131亿抛售大润发,下一个“清理”目 ... ·  昨天  
吉林市场监管  ·  【安全警示】乘梯有“道”:扶梯安全指南请查收 ·  2 天前  
吉林市场监管  ·  【安全警示】乘梯有“道”:扶梯安全指南请查收 ·  2 天前  
波纹的低风险杠杆  ·  随手打 海螺材料科技 汇舸环保 ·  2 天前  
波纹的低风险杠杆  ·  随手打 海螺材料科技 汇舸环保 ·  2 天前  
重庆校园频道  ·  没网购却收到快递?警方提醒:千万别收! ·  2 天前  
51好读  ›  专栏  ›  嘶吼专业版

详解Pwn2Own中价值5万美金的Firefox浏览器漏洞

嘶吼专业版  · 公众号  · 互联网安全  · 2018-04-08 18:09

正文

在最近的Pwn2Own 2018比赛中,Richard Zhu仅仅使用一个漏洞就成功攻破了Mozilla Firefox。在比赛中他将错误交给Mozilla后,在不到24小时内他们迅速进行了更新。在本文中我将仔细分析一下Richard Zhu在比赛中使用的漏洞。

漏洞分析

这个越界写入漏洞位于libvorbis,这是参考Vorbis音频编解码器解码实现的。此漏洞被命名为ZDI-18-263(CVE-2018-5146),位于库音频合成过程的深处。该漏洞只能由具有1型残留编码的音频文件触发,并且在残差计算过程中出现超出范围的写入。让我们看看易受攻击的函数vorbis_book_decodev_add():

该漏洞的核心是由于407行内部for循环中的数组边界检查不足造成的(上图)。使用精心制作的Vorbis音频文件指定足够大的book-> dim,可以使i大于n,并在408行内部for循环的界限以外访问a []数组。在Richard制作的Vorbis文件中,他已将book - > dim设置为96,n(未显示)设置为1.这允许他通过a [] C数组并覆盖进程内存的其他部分。

为了利用这个漏洞,Richard用交错的Javascript Arrays和ArrayBuffers来验证堆。他加载制作的Vorbis文件触发超出边界写入漏洞以覆盖阵列的长度。在损坏的Array中,Richard可以从损坏的Array中自由读取和写入ArrayBuffer。从那里他构建了一个假的Javascript对象并劫持了vtable,使用ROP获得代码执行,并启动了利用链的第二阶段。

从受害者的角度来看,他们都是浏览了一个网站,最终受到了攻击。从Richard的角度来看,他在Pwn2Own上的成功示范,使他获得了5万美元的收入。此漏洞的补丁很简单,这也是响应速度如此之快的原因之一。 Xiph团队在内部循环中增加了额外的检查来防止出界限制访问条件,还取消了手动循环展开优化,并在不同的残差解码函数中修正了类似的错误。

结论

Mozilla修复软件的时间确实令人惊讶,尤其是漏洞本身不在其代码库中。您可以在他们的博客中详细了解他们如何实现如此惊人的壮举的。另外就是这个bug还提醒了用户,针对浏览器的大型攻击很可能是通过旧的第三方库来寻找到机会的。