安卓开发安全问题

1. 组件暴露——Activity,Service,BroadcastReceiver

说明: 当应用程序的组件被导出后,导出的组件可以被第三方app任意调用,从而导致敏感信息泄露,而且恶意攻击者也可以通过精心构造数据来达到攻击目标应用的的目的。
修复:如果组件不需要与其他应用共享数据或进行交互,则在AndroidManifest.xml文件中设置该组件为 exported = “false”,反之,则需要对导出的组件进行权限控制并且严格校验传入的参数。

2.应用数据任意备份风险

说明: 当AndroidManifest.xml配置文件中没有有设置allowBackup标志(默认为true)或将allowBackup标志设置为true时,应用程序的数据可以被任意备份和恢复,恶意攻击者可以通过adb工具备份复制应用程序的数据。
修复: 在AndroidManifest.xml文件中设置application的属性 android:allowBackup=”false”

3.权限滥用风险

说明: 自定义权限的保护级别过低,导致任意应用程序都可以使用此权限,无法起到保护作用。
修复:如非必要,自定义权限的保护级别至少要设置为:signature。

4.WebView组件系统隐藏接口未移除漏洞

说明: 使用Android WebView组件时,没有移除其中内置的searchBoxJavaBridge_,accessibility和accessibilityTraversal等导出接口, 可能导致远程代码任意执行  .
修复: 使用Android WebView组件时,通过调用removeJavascriptInterface方法移除searchBoxJavaBridge_, accessibility和accessibilityTraversal等导出接口,防止被恶意利用.

5.WebView组件系统隐藏接口未移除漏洞

说明:使用Android WebView组件时,没有移除其中内置的searchBoxJavaBridge_,accessibility和accessibilityTraversal等导出接口, 可能导致远程代码任意执行.
说明: 使用Android WebView组件时,通过调用removeJavascriptInterface方法移除searchBoxJavaBridge_, accessibility和accessibilityTraversal等导出接口,防止被恶意利用.

6.Dex文件动态加载风险

说明: Android提供的DexClassLoader动态加载方法,并没有对DEX文件和路径进行安全校验,可能导致加载文件或者优化文件被恶意替换.
修复: 使用DexClassLoader方法动态加载DEX文件时,对DEX文件进行安全校验,并保证加载路径和优化路径的安全.

7.SSL证书验证不当漏洞

说明: 应用忽略证书校验错误或信任任意证书,会导致中间人攻击,造成隐私泄露.
修复: 禁止使用ALLOW_ALL_HOSTNAME_VERIFIER;禁止使用X509TrustManager.checkServerTrusted方法来忽略证书验证错误;在使用HostnameVerifier时verify合理处理,禁止直接返回true.

8.WebView密码明文保存漏洞

说明: 在默认情况下,如果用户选择保存在WebView中输入的用户名和密码,则会被明文保存到应用数据目录的databases/webview.db文件中,存在密码被泄露的风险.
修复: 使用WebView.getSettings().setSavePassword(false)来禁止保存密码e.

9.PendingIntent包含隐式Intent风险

说明: PendingIntent以其发送方应用的权限使用该PendingIntent包含的Intent,如果该Intent为隐式的,可能造成隐私泄露和权限泄露.
修复: 使用PendingIntent时,建议使用显示Intent.

10.PendingIntent包含隐式Intent风险

说明: 日志泄露隐私风险.
修复: 关闭调试接口,禁止输出敏感信息.

猜你喜欢

转载自blog.csdn.net/u011174139/article/details/78404813