FakeID漏洞详解
基础概念
在分析FakeID漏洞之前,有几个基础概念需要普及一下:
1、APK包中的MF、SF和RSA文件
MF文件(MANIFEST.MF):包含APK的包信息,如manifest文件的版本、签名版本、应用程序的相关属性以及包中所有源文件的SHA1值。
SF文件(CERT.SF):采用SHA1withRSA签名算法进行签名的明文文件。
RSA文件(CERT.RSA):APK文件的签名证书,是一个PEM格式保存的PKCS7公钥证书。
2、证书链结构及认证原理
自签名:公钥证书中Issuer(发布者)和Subject(所有者)是相同的。
CA颁发的证书:最终APK中的公钥证书会包含证书链,Issuer和Subject不相同。
系统在安装APK时,只会用位于链中最底层的证书对APK文件进行合法性和完整性校验,但不会验证证书链的有效性。
漏洞原理
FakeID漏洞的核心在于Android系统对证书链的校验不足,当APK是非自签名时,系统在安装APK时,只会用位于链中最底层的证书对APK文件进行合法性和完整性校验,但并不会验证证书链的有效性,攻击者可以通过伪造证书的方式,使得恶意应用通过系统的合法性校验。
漏洞危害
1、受影响系统版本:部分Android 4.4及所有4.4以下版本。
2、典型攻击场景:使用了Android WebView组件的应用可被恶意监控或隐私数据失窃;可能对GoogleWallet类的支付应用产生威胁,如可获得NFC设备的控制权限。
漏洞利用
FakeID漏洞的利用过程包括证书伪造、恶意应用签名、篡改证书、安装应用到客户端等步骤,以下是具体的实现过程:
1、伪造证书:
更改openssl.cnf配置,修改policy属性的值为policy_anything。
使用openssl生成CA自签名根证书(设置为Adobe证书名称)。
使用根证书签发子证书。
导入根证书和子证书到keystore。
2、构造符合要求的恶意应用:
符合Adobe FlashPlayer插件规范。
APK申请android.webkit.permission.PLUGIN权限。
APK声明一个服务,Intent是android.webkit.PLUGIN,有个meta信息是type,type的值必须是native。
3、使用子证书签名恶意apk:
此时恶意应用的签名中包含两个证书,其中Adobe的证书是虚假的(名称一致)。
4、篡改apk证书使有效的Adobe证书作为签发者:
通过自动化脚本,将恶意应用apk目录下/META-INF中的RSA签名文件与真实的Adobe应用的签名文件合并,生成一个具有真实Adobe证书的RSA签名文件,并用其替换原有的签名文件。
5、安装恶意应用到客户端:
将上述构造的恶意插件应用安装到客户端。
漏洞解决方案
1、升级系统:将android系统升级到最新版。
2、安装补丁:安装第三方提供的在XPOSED框架下的一个apk补丁来暂时修复该漏洞。
FakeID漏洞是Android系统中的一个重要安全缺陷,允许攻击者通过伪造证书的方式绕过系统的合法性校验,从而执行恶意操作,了解这一漏洞的原理和利用方法对于开发者和用户来说都是非常重要的,以便采取相应的防护措施。
到此,以上就是小编对于fakeid漏洞的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。
本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/89766.html