漏洞风险:安卓应用APP的配置文件Android Manifest.xml中android:debuggable=true,调试开关被打开。
危害情况:app可以被调试分析。
修复建议:把AndroidManifest.xml配置文件中调试开关属性关掉,即设置android:Debugable="false"。
漏洞风险:Activity组件的属性exported被设置为true或是未设置exported值但IntentFilter不为空时,activity被认为是导出的,可通过设置相应的Intent唤起activity。
危害情况:攻击者可能构造恶意数据针对导出activity组件,对APP实施越权攻击。
修复建议:如果组件不需要与其他APP共享数据或交互,就将AndroidManifest.xml 配置文件中设置该组件为exported = “False”。
如果组件需要与其他APP共享数据或交互,那么做好对组件进行权限控制和参数校验。
漏洞风险:Service组件属性exported被设置为true或未设置exported值但IntentFilter不为空时,Service被认为是导出的,因此可通过设置相应的Intent唤起Service。
危害情况:攻击者可能构造恶意数据针对导出Service组件,对APP实施越权攻击。
修复建议:如果组件不需要与其他APP共享数据或交互,就将AndroidManifest.xml 配置文件中设置该组件为exported = “False”。如果组件需要与其他APP共享数据或交互,对组件进行权限控制和参数校验。
漏洞风险:ContentProvider组件的属性exported被设置为true或Android API<=16时,Content Provider被认为是导出的。
危害情况:攻击者可能访问到应用本身不想共享的数据或文件。
修复建议:如果组件不需要与其他APP共享数据或交互,请将AndroidManifest.xml 配置文件中设置该组件为exported = “False”。如果组件需要与其他APP共享数据或交互,请对组件进行权限控制和参数校验。
漏洞风险:BroadcastReceiver组件的属性exported被设置为true或未设置exported值但IntentFilter不为空时,BroadcastReceiver被认为是导出的。
危害情况:导出的广播可以导致数据泄漏或者是越权。
修复建议:如果组件不需要与其他APP共享数据或交互,将AndroidManifest.xml 配置文件中设置该组件为exported = “False”。
如果组件需要与其他app共享数据或交互,对组件进行权限控制和参数校验。
漏洞风险:当Provider被导出且覆写了openFile方法时,没有对Content Query Uri进行有效判断或过滤。
危害情况:攻击者可以利用openFile()接口进行文件目录遍历以达到访问任意可读文件的目的。
修复建议:一般情况下无需覆写openFile方法,如果必要,对提交的参数进行“../”目录跳转符或其他安全校验。
漏洞风险:解压APP包的zip文件,使用getName()获取压缩文件名后未对名称进行校验。
危害情况:攻击者可构造恶意zip文件,被解压的文件将会进行目录跳转被解压到其他目录,覆盖相应文件导致任意代码执行。
修复建议:解压文件时,判断文件名是否有../特殊字符。
漏洞风险:自定义SSLx509 TrustManager,重写checkServerTrusted方法,方法内不做任何服务端的证书校验。
危害情况:黑客可以使用中间人攻击获取加密内容。
修复建议:严格判断服务端和客户端证书校验,对于异常事件禁止return 空或者null。
漏洞风险:自定义SSLx509 TrustManager,重写checkClientTrusted方法,方法内不做任何服务端的证书校验。
危害情况:黑客可以使用中间人攻击获取加密内容。
修复建议:严格判断服务端和客户端证书校验,对于异常事件禁止return 空或者null。
漏洞风险:使用DexClassLoader加载外部的 apk、jar 或 dex文件,当外部文件的来源无法控制时或是被篡改,此时无法保证加载的文件是否安全。
危害情况:加载恶意的dex文件将会导致任意命令的执行。
修复建议:加载外部文件前,必须使用校验签名或MD5等方式确认外部文件的安全性。
【推荐阅读】
原文始发于微信公众号(迪哥讲事):android常见高频漏洞小结
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论