Android系统开发 APP 端常见安全漏洞解读——敏感信息泄露漏洞

众所周知,Android系统由于其开源、开放、灵活的特征让智能手机产业有了飞速的进步,截止2015年第四季度,Android 在智能手机市场的占有率达到了80.7%,但与此同时,Android开放、开源优势从另一个角度来看也许正是其最大的弱点——系统的安全问题。

而作为APP开发者,需要考虑的就是在手机被root后,私有数据被暴露的情况下,仍然能保证数据安全,不会泄露用户重要的数据及隐私信息,而对于手机厂商修复系统漏洞速度慢的问题,开发者不能依赖系统更新,更多时候需要自己想办法避免漏洞对用户造成损失。这时作为一个Android开发者,了解一些安全漏洞的基础知识是十分必要的,本次蒲公英内测就从APP端和服务端两个方面来为各位开发者简单介绍一些那些开发过程中最常见到的漏洞。

本次首先介绍APP端的敏感信息泄露漏洞。

敏感信息可分为产品敏感信息和用户敏感信息两类,我们对产品敏感信息是这样界定的:

泄露后直接对企业安全造成重大损失或有助于帮助攻击者获取企业内部信息,并可能帮助攻击者尝试更多的攻击路径的信息。

以下这些信息都属于产品敏感信息:登录密码、后台登录及数据库地址、服务器部署的绝对路径、内部IP、地址分配规则、网络拓扑、页面注释信息(开发者姓名或工号、程序源代码)。

而用户敏感信息有两个界定原则:

用户隐私保护主要考虑直接通过该数据或者结合该数据与其它的信息,可以识别出自然人的信息。 一旦发生数据泄露事件,可以被恶意人员利用并获取不当利润。

由此标准参考,以下字段在数据库的存储以及传输过程中,我们建议加密处理:密码、手机号、快捷支付手机号、Email、身份证、银行卡、CVV码、有效期。

而这些敏感信息泄露的原因大多数情况下是因为信息未加密或储存位置不当造成的:

代码中明文使用敏感信息,比如:服务器地址、数据库信息等 数据库中明文保存敏感信息,比如:账号、密码、银行卡等 SD卡中保存敏感信息或隐私数据,比如:聊天记录、通讯录等 日志中打印敏感信息:比如:账号、密码 通信过程中明文传输敏感信息

以上这些做法都会使APP中的敏感信息暴露在黑客的眼皮底下,只要黑客认为该信息有价值,他就会轻而易举的获取这些敏感信息,最直接的损失可能就是用户的账号被盗、网银被盗刷等。

而黑客如果知道了登录密码、后台登录及数据库地址、服务器部署的绝对路径、内部IP、地址分配规则、网络拓扑等产品敏感信息,会极大节省攻击时间,获取该应用的绝对控制权,其损失不是能够用金钱来衡量的。另外,这些敏感信息泄露,也会招来其他试探性的黑客去尝试攻击,导致服务器处于危险境地。

比如以下这几个案例,都将用户名、密码等敏感信息完全明文存储,这对一款金融或涉及线上交易的应用无疑是巨大的问题:

1.某金融App日志中明文打印用户名、密码,如果用户手机被安装了恶意软件,恶意软件可以获取到这些信息,导致账号被盗、被转账等。

2.某金融App Preferences中明文存储用户名、密码、Token(令牌)。 Preferences通常用于把一些配置、状态信息保存在手机上。

如果手机有root权限,安装了恶意软件,这些信息可被轻松获取。

3.携程用于处理用户支付的安全支付服务器接口开启了调试功能,使所有向银行验证持卡所有者接口传输的数据包均直接保存在本地服务器,同时因为保存支付日志的服务器未做严格的基线安全配置,存在目录遍历漏洞。可能导致大量用户持卡人姓名、身份证、银行卡号、卡CVV码、等信息外泄。

4.某App登录时使用HTTP明文传输用户名、密码