-
-
[翻译]Mozilla 2018 Pwn2Own利用细节
-
发表于: 2018-4-23 16:18 3089
-
在2018 Pwn2Own 比赛中,Richard 只利用了一个bug便攻破了Mozilla Firefox浏览器,向Mozilla官方提交漏洞后,官方响应迅速,不到24小时官方便将版本做出了升级,修补了漏洞,本文将详细探讨此漏洞的一些细节。
该漏洞也被ZDI-18-263收录(CVE-2018-5146),造成此次漏洞的原因是:实现Vorbis音频解码的库文件libvorbis存在越界写入漏洞。在库函数实现音频合成的过程中,漏洞仅能被使用type 1残留编码的音频文件触发,越界写入就发生在残留计算中,接下来详细看看漏洞函数vorbis_book_decodev_add():
造成该漏洞的根本原因是第407行内部for循环中数组边界检查不足(上图)。我们可以静心构造一个Vorbis音频文件,让book->dim足够大,这会使i比n大的多,然后在第408行的for循环中就能实现越界访问数组a。
在Richard构造的文件中,他把book->dim的值设置为96,n的值设置为1,这可以写入a数组并覆盖进程内存。
Richard利用堆喷射技术,交错使用javascript数组和数组缓存。他利用构造的vorbis文件触发越界写入漏洞以达到重写数组长度的目的,然后自由地从受损数组中读取和写入数组缓存。接着,Richard构造了一个假的javascript对象并劫持了虚拟表,利用ROP技术实现代码执行,然后发起后续的攻击。
从受害者的角度来说,他们仅仅是浏览了网站,最后却遭到了攻击;另一方面从Richard的角度来说,他在此次Pow20Own比赛中获得了5万美元的奖金!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
他的文章
看原图
赞赏
雪币:
留言: