移动端安全 - 安卓Android - 漏洞修复方案整理

时间:2022-10-11 18:36:38

敏感数据泄露

明文传输用户名、密码和验证码等敏感信息

MD5/Base64弱加密传输手机、密码等敏感信息

敏感信息在本地加密存储 后台服务器地址泄露。

边信道信息泄漏

  1. 在日志中对于密码等敏感信息进行加密存储。

  2. 关闭调试接口,禁止输出敏感信息。

未经用户确认调用敏感功能

不安全的本地存储-如XML文件

鉴权机制缺陷

任意文件上传

     限制文件上传格式

升级重定向

   客户端应用对升级版本和地址做有效性验证

未使用有效的token机制,导致可以绕过鉴权  
使用有效的token机制进行鉴权  
对response包进行加密  
使用HTTPS强校验机制
使用时间戳对响应有效时间做甄别
传输数据可修改,造成越权访问

 用户枚举

登录设计缺陷,存在被暴力破解风险 利用业务逻辑缺陷制作短信炸弹

 

钓鱼劫持风险

在关键类的onpause中实现钓鱼劫持防护功能。
使用HTML5架构或android+HTML5混合开发,实现登陆、支付等关键页面,降低被劫持的风险。

 

代码保护不足

未混淆

未加固

代码中编写测试账户信息

密钥硬编码

   对密钥离散存储于资源文件中,并动态加载使用

服务端证书检测 - 测试客户端程序是否严格检查服务器端证书信息,避免用户访问钓鱼网站后,泄露密码等敏感信息。SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER为忽略证书验证

      对SSL证书进行强校验,包括证书是否合法、主机域名是否合法和证书的有效期。修改Allow_all_hostname_verfier

Janus安卓签名漏洞

      将App升级到最新的Signature scheme V2签名机制;

      开发者及时校验App文件的开始字节,以确保App未被篡改。

WebView漏洞
Android 4.2之前版本对addJavascriptInterface的输入参数进行过滤;
Android 4.2及之后版本,使用声明@JavascriptInterface来代替addjavascriptInterface
控制相关权限或者尽可能不要使用js2java的bridge

随机数加密破解漏洞

Intent协议解析越权漏洞

KeyStore漏洞
SQL注入漏洞
  
参数化
预编译
过滤

 

公共组件漏洞

组件Content Provider配置错误,导致数据泄漏 组件Activity配置错误,导致登录页面被绕过 组件Service配置错误,导致非法权限提升 组件Broadcast Receiver配置错误,导致拒绝服务、非法越权

 

应用配置错误

关闭allowbackup备份 关闭Debuggable属性,防止应用信息篡改泄露风险

 数据安全

SQLLite读取权限安全性
创建应用内部存储文件时,调用了openOrCreateDatabase,并将访问权限设置为MODE_WORLD_READABLE或者MODE_WORLD_WRITEABLE

私有文件泄露风险
创建应用内部存储文件时,调用了openFileOutput,并将访问权限设置为MODE_WORLD_READABLE或者MODE_WORLD_WRITEABLE,若设备被root也可进行读写。
设置为MODE_PRIVATE模式

SharedPrefs任意读写漏洞
创建应用SharedPreference时,调用了getSharedPreferences,并将访问权限设置为MODE_WORLD_READABLE或者MODE_WORLD_WRITEABLE

日志泄露风险

 

恶意软件/木马/病毒