Hacking Team 武器库研究(二):CVE-2015-5119 Flash 0day
目前 Hacking Team 泄露的Flash 0Day已经修复,官方已提供补丁下载,与此同时Metasploit已经提供有漏洞利用代码。在HT泄露的源码目录里,已经包含有对漏洞的简要分析。
【源码分析】
1、在MyClass.TryExp1函数中触发漏洞,先分配一组ByteArray,长度为0xfa0,相当于0x1000大小的内存。
2、设置ByteArray值,在将MyClass类赋值给_ba[3]时,AVM会调用MyClass.valueOf函数试图将MyClass类型其转换成Byte类型。
3、在valueOf 函数中会重新设置更大长度的ByteArray,导致释放原有的ByteArray内存,再重新分配,但是valueOf函数返回后,依然保持着对已释放内存的引用,从而导致UAF漏洞的发生。紧接着分配一堆0x3f0大小的vector.
4、后面的代码基本跟第一篇分析文章中介绍一样。再补充下上面调用valueOf转换类型的AVM伪代码:
1 | void ByteArray.setObjInternal(int offset, obj) |
将ba[3]的内存存储地址保存到本地定义的目标指针,然后对象类型转换成整数类型并赋值给目标指针,当ByteArray数组长度改变时,它会释放原有ba内存,目标指针就成为悬挂指针。