漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2013-028389
漏洞标题:Android 8219321 - 漏洞分析分享
相关厂商:Google
漏洞作者: SeaRobber
提交时间:2013-07-10 13:04
修复时间:2013-07-10 13:04
公开时间:2013-07-10 13:04
漏洞类型:设计错误/逻辑缺陷
危害等级:低
自评Rank:5
漏洞状态:未联系到厂商或者厂商积极忽略
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2013-07-10: 积极联系厂商并且等待厂商认领中,细节不对外公开
2013-07-10: 厂商已经主动忽略漏洞,细节向公众公开
简要描述:
漏洞位置:
Android系统中java.util.zip工具包下ZipFile.java文件中的语句“mEntries.put(newEntry.getName(), newEntry);”没有进行校验重名entry逻辑漏洞。
ZipFile.java文件如下连接:
http://www.java2s.com/Open-Source/Android/android-core/platform-libcore/java/util/zip/ZipFile.java.htm
详细说明:
漏洞利用分析:
zipFile.java文件是用于根据不同打开模式(如read\write等)进行解压apk应用文件的;如下
其中有函数readCentralDir(),其作用为根据apk压缩包的结构进行读取压缩包内容,如下:
其中在遍历整个apk压缩包文件的每个entry节点并读取其内容时,语句"mEntries.put(newEntry.getName(), newEntry);"
没有进行重名entry节点校验,从而导致apk文件在被加入重名的(并被加入了恶意代码的)Class.dex文件后,
其校验签名时还是用第一个拥有正确签名的Class.dex文件,而在解压读取时却被加入的重名文件把正确的内容进行了覆盖执行;从而产生的攻击行为。
目前google给出的补丁为对此语句进行重名entry校验并抛出异常:如下:
漏洞证明:
目前网上已经出现POC代码:
https://gist.github.com/poliva/36b0795ab79ad6f14fd8
修复方案:
版权声明:转载请注明来源 SeaRobber@乌云
漏洞回应
厂商回应:
未能联系到厂商或者厂商积极拒绝