详解pwn2own中价值5万美金的firefox浏览器漏洞
在最近的pwn2own 2018比赛中,richard zh 仅仅使用一个漏洞就成功攻破了mozilla firefox。在比赛中他将错误交给mozilla后,在不到24小时内他们迅速进行了更新。 在本文中我将仔细分析一下richard zh 在比赛中使用的漏洞。 漏洞分析 这个越界写入漏洞位于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用交错的java arrays和arrayb ffers来验证堆。他加载制作的vorbis文件触发超出边界写入漏洞以覆盖阵列的长度。在损坏的array中,richard可以从损坏的array中自由读取和写入arrayb ffer。从那里他构建了一个假的java对象并劫持了vtable,使用rop获得代码执行,并启动了利用链的第二阶段。 从受害者的角度来看,他们都是浏览了一个网站,最终受到了攻击。从richard的角度来看,他在pwn2own上的成功示范,使他获得了5万美元的收入。此漏洞的补丁很简单,这也是响应速度如此之快的原因之一。 xiph团队在内部循环中增加了额外的检查来防止出界限制访问条件,还取消了手动循环展开优化,并在不同的残差解码函数中修正了类似的错误。 结论 mozilla修复软件的时间确实令人惊讶,尤其是漏洞本身不在其代码库中。您可以在他们的博客中详细了解他们如何实现如此惊人的壮举的。另外就是这个b g还提醒了用户,针对浏览器的大型攻击很可能是通过旧的第三方库来寻找到机会的。 本文转载自嘶吼。 阿里聚安全由阿里巴巴安全部出品,面向企业和开发者提供互联网业务安全解决方案,全面覆盖移动安全、数据风控、内容安全、实人认证等维度,并在业界率先提出"以业务为中心的安全",赋能生态,与行业共享阿里巴巴集团多年沉淀的专业安全能力。