详解Pwn2Own中价值5万美金的Firefox浏览器漏洞
Posted 嘶吼专业版
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详解Pwn2Own中价值5万美金的Firefox浏览器漏洞相关的知识,希望对你有一定的参考价值。
在最近的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还提醒了用户,针对浏览器的大型攻击很可能是通过旧的第三方库来寻找到机会的。
以上是关于详解Pwn2Own中价值5万美金的Firefox浏览器漏洞的主要内容,如果未能解决你的问题,请参考以下文章
BUF大事件丨fastjson曝“高危”远程代码执行漏洞;Apple ID登录漏洞价值10万美金
零时科技 || 分布式资本创始人4200万美金资产被盗分析及追踪工作
超百万美金激励,Apps UP 2022 华为全球应用创新赛道强势来袭