cve-2015-3864是cve-2015-1538同系列中的另外一个漏洞,利用的是解析tx3g中整型上溢,google公布的exploit-38226中通过利用jemalloc的特性对内存进行巧妙的布局,溢出后基本能100%覆盖到MPEG4DataSource的虚表指针。 2016年3月18号NorthBit公布了一篇文章Metaphor A (real) reallife Stagefright exploit,在google的基础上通过信息泄漏绕过aslr。
其中内存布局原理(摘自Metaphor):
pssh:消耗内存碎片,留下大块内存。解析期间不会释放掉,大小可控。 titl/gnre:内存占位,解析到第二个先申请新的然后会释放之前的。 同时pssh堆喷中,分配大于0x40000长度会调用mmap函数,mmap()地址8位随机,需要预测堆喷地址。
总结下来:
通过pssh atoms堆喷使新的的heap runs可预测。
申请titl和gnre占位。
解析stbl box后创建MPEG4DataSource对象,复用titl。
解析tx3g box复用gnre。
溢出覆盖虚表指针。
调试过程(Nexus5 andorid 5.01):
1.MPEG4DataSource对象复用titl
2.tx3g复用gnre
3.memcpy溢出覆盖vTable
4.调用mDataSource->readAt控制流程
5.gadget1
6.gadget2
7.gadget3
8.mprotect
9.执行mprotect后通过gadget2和gadget3调整堆栈然后跳入shellcode
最后shellreversetcp
没有评论:
发表评论