什么是 Android 主密匙,Bluebox Security 发现的漏洞有何威胁?

“Android 主密匙” 这个词好像没有听过啊,看了下bluebox官网的博客内容,感觉他说的这个“Android主密匙”应该说的是应用程序的加密签名。

关于这个 bluebox 说的这个漏洞好像说的也不是系统方面的漏洞,而是在编译apk软件的时候的一个漏洞。

先说下 apk 程序:每一个 Android 程序在代码编写好之后都需要用打包工具打包成一个可以在 Android 系统上可执行的 apk 包,这个包包含了程序的所有内容,以及一个加密签名,Android 系统就是根据这个签名来验证apk文件是否是一个正常的软件。

而 bluebox 发现的这个漏洞可以让黑客不破坏 apk签名 的情况下去修改apk软件内容,那样的话Android系统或许会验证不出这是一个已经被修改过的程序。

不过这样的程序应该还威胁不到一般的用户。

因为 这样的程序必须是用户已经安装过的程序,只有在更新的时候才会有可能被装到用户的机器上,但是一般应用更新的话都有自己的更新链接!比如官网,或者应用市场。

如果你不是经常从不正规的网站或者市场下载软件的话,一般不会被威胁到。

要说这个漏洞最大的威胁的话,应该在于那些获取root权限的系统上,当被恶意软件获得了root权限之后那它就是神了。

应对这种威胁的方法:从官网或者是正规市场下载软件。根据他们的发现,黑客无需破坏用于认证的加密签名便能够修改一款应用的APK

以上引用原文,这也是最直白的一句总结。

要理解这种做法带来的危害性,首先要大致了解Android的签名工作机制:

每个应用都必须签名

应用可以被不同的签名文件签名(如果有源代码或者反编译后重新编译)

同一个应用如果签名不同则不能覆盖安装

在之前,一些恶意开发者会采用反编译重新编译的方法来给各种应用夹带私货然后偷偷上传到各个渠道等着小白鼠自己上钩,比如我反编译个QQ,加了个广告,忽悠到人装了……从此你的手机就各种弹广告你还不知道是哪个软件干的……起码普通用户是不会知道了,除非挨个儿卸载尝试。

但是这种做法有一个弊端(对于恶意开发者而言),恶意开发者一定拿不到QQ官方的签名文件,于是只能用自己的签名文件签名……然后用户如果之前安装过官方版本的QQ就会发现“签名不一致”的提示,各大应用市场也可以通过这种办法来鉴别(比如某荚提供的洗白白功能其实就是在对比签名),虽然还是会有人中招,但是也算是有应对之法。

如果此文说的漏洞确实存在,意味着这些恶意开发者们可以在不破坏原有官方签名的情况下夹带私货……意味着将极大提高识别难度,那么就会有更多的人中招。

如何避免危害:只从可信赖的安全的渠道下载应用,比如Google Play,尽量避免通过论坛下载应用,各种手机论坛应该是恶意应用的相对重灾区,第三方市场尚有可能通过特殊的审核机制尽量避免未知来源的恶意应用(不完全),论坛基本是无事前审核的……至多在被举报以后删帖。