漏洞概要 关注数(24) 关注此漏洞
>
漏洞详情
披露状态:
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@乌云
>
漏洞回应
厂商回应:
未能联系到厂商或者厂商积极拒绝