一个中国的安全组织Android Security Squad称他们发现了第二个万能密钥,能够在不破坏应用签名的情况下修改应用本身。
一个文件或者文档的数字签名的关键作用就是为了证明该文件或文档没有被修改过。这个过程使用了一个公钥加密算法。在这个中国版本的攻击中,恶意代码可以添加在文件的头部。但是由于目标文件需要小于64K,因此这段恶意代码的功能被限制了。
APK 文件使用了一种流行的ZIP压缩算法进行了压缩。多数的压缩行为不会把两个文件名相同的文件放到同一个归档中。但是其实算法本身并没有禁止这种可能性。所以两个版本的classes.dex文件会被放在包裹中,一个原始的和一个被恶意修改过的。
当检查应用的数字签名的时候,安卓系统会匹配第一个符合特征的文件,但是当真正执行并启动文件时,会使用第二个被修改过的。为了把一个应用变得像木马一样,你需要做的仅仅是把你的恶意代码改成一个在应用中已经存在的名字。
这个漏洞和由国外移动安全公司Bluebox Security发现的第一个万能密钥的漏洞非常相似。根据BlueBox的说法,有99%的移动设备受到该漏洞的影响。谷歌已经修复了这个问题并提交到了安卓源码开放项目中(AOSP)
你也可以使用ReKey ,一个免费的移动应用用来修复安卓万能密钥漏洞。
安卓安全小分队技术分析:http://blog.sina.com.cn/s/blog_be6dacae0101bksm.html