android CVE
本文收集网上android cve的一些分析供后续学习:
Android uncovers master-key:android1.6—4.0
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
由于ZIP格式允许存在两个或以上完全相同的路径,而安卓系统没有考虑这种场景。在该情况下,android包管理器校验签名取的是最后一个文件的hash,而运行APK加载的dex文件却是zip的第一个dex文件。 参考资料:看雪zmworm http://www.kanxue.com/bbs/showthread.php?t=175129
launchAnyWhere: Activity组件权限绕过漏洞解析:—android4.4
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
// 此漏洞利用AccountManagerService去启动任意未导出的Activity,突破进程间组件访问隔离的限制 // 背景:appA拥有账号类型,可被添加到android中 // 1、在setting中添加appA账号,会在setting进程中打开appA传递进来的intent(正常是appA的注册activi) // 2、恶意appA会传递任意的activity,由于是在setting(system权限)中执行,所以activity会被创建 // 修补: // 1、androiod4.4中/frameworks/base/services/core/java/com/android/server/accounts/AccountManagerService.java // Session.onResult函数中判断intent中的active的SIGNATURE是否和appA相同 // 若不同则不允许创建intent包含的activity // 2、在activity中检测下,自己是被谁创建的,若不是所属的app创建则退出; // 如何检测:在app里创建activity前设置flag,activity的oncreate函数中查询flag即可判别 // 涉及到的资料和poc已收集到为知笔记;BTW,android账号类型的创建看参考资料 // 参考资料: launchAnyWhere: Activity组件权限绕过漏洞解析: http://retme.net/index.php/2014/08/20/launchAnyWhere.html Android LaunchAnyWhere (Google Bug 7699048)漏洞详解及防御措施: http://blog.csdn.net/l173864930/article/details/38755621 一步一步教你在 Android 里创建自己的账号系统 深入理解android卷2:第8章AccountManagerService
FakeID签名漏洞:Android2.1—4.4.1
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
// 此漏洞的成因是校验证书没对证书内容进行校验,而只是比对证书的字符串 // 参考研究: // Android FakeID(Google Bug 13678484) 漏洞详解 http://blog.csdn.net/l173864930/article/details/38409521 // FakeID签名漏洞分析及利用(Google Bug 13678484) http://retme.net/index.php/2014/08/04/fakeid-bug.html // 分析文档和资料已记录在为知笔记 /hacker/漏洞分析/android/FakeID目录下
BroadcastAnyWhere:Android 2.0—4.4.x
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
// 此漏洞的也是在添加账户时被会被利用: // 添加账户会新建PendIntent,导致恶意软件可以用这个intent去构造来开启任意的广播 // 修复方案是新建PendIntent时先初始化intent,这样根据填充intent规则后续就不可以再修改intent了 // 参考资料: // Android BroadcastAnyWhere(Google Bug 17356824)漏洞详细分析 http://blog.csdn.net/l173864930/article/details/41246255 // broadAnywhere:Broadcast组件权限绕过漏洞(Bug: 17356824)http://retme.net/index.php/2014/11/14/broadAnywhere-bug-17356824.html // 安卓Bug 17356824 BroadcastAnywhere漏洞分析 http://xteam.baidu.com/?p=77 // 改漏洞资料也收集到为知了
CVE-2014-3153:—android4.4.2,linux3.4内核漏洞
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
// 以下转自CVE-2014-3153笔记 http://thecjw.0ginr.com/blog/archives/564 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
待续