CVE-2014-3153可以说是相当经典的漏洞,影响范围相当广泛。这实际上是一个Linux内核的Use-After-Free漏洞,利用得当可以转化为任意内核地址写入。Geohot的TowelRoot也利用了这个漏洞,在当时(以及现在)能够Root(或Crash)绝大多数Android设备。由于工作的需要,收集了该漏洞的一些资料,并且对漏洞原理和利用方法进行了一些学习和分析。
参考资料
以下是收集的资料:
- http://blog.nativeflow.com/the-futex-vulnerability
- http://blog.nativeflow.com/escalating-futex
- http://blog.nativeflow.com/pwning-the-kernel-root
- http://blog.topsec.com.cn/ad_lab/cve2014-3153/
- https://github.com/timwr/CVE-2014-3153
- https://github.com/android-rooting-tools/libfutex_exploit
- https://github.com/nativeflow/pwntex
- http://tinyhack.com/2014/07/07/exploiting-the-futex-bug-and-uncovering-towelroot
- https://github.com/torvalds/linux/commit/e9c243a5a6de0be8e584c604d353412584b592f8
个人觉得NativeFlow的三篇文章详细的解释了各种细节以及利用方法,包括使用模拟器进行内核调试、问题代码补丁地址、Crash PoC以及图示。天融信的文章结合了NativeFlow的三篇文章,并加入了自己的见解和分析,也挺不错,就是排版稍差。pwntex是NativeFlow给出的Relock和Requeue的PoC,而CVE-2014-3153和libfutex_exploit则是两个可以在Android上获取Root权限的PoC。