可能比炸机还恐怖,Android 系统 APP 的那些安全隐患你了解吗

1,790 阅读12分钟

近些天有关三星 NOTE 7 炸机事件的讨论层出不穷,大家在挑选一款手机时已经要考虑到人身安全的因素了,简直不要太恐怖。在保证人身安全的情况下,多数用户挑选的手机依然是物美价廉的Android手机,但Android系统因为其开源的特性,使用过程中的不确定性和系统漏洞导致用户在使用Android手机时可能会产生隐私泄露、经济损失、敏感信息泄露等安全问题,新闻报道中的那些手机安全事件也大多是因为如此。

那么,Android系统为什么就那么不安全呢?

由于Android系统是开源的,任何人都可以下载源码。这也就代表着,任何人都可以研究代码,也更容易发现系统漏洞,其开放的系统使得任何厂商均可以生产制造Android设备,而各种硬件厂商和第三方ROM开发者水平参差不齐,导致系统容易出现漏洞。

在安装Android应用时,应用会请求各种各样的权限,这也是普通使用者最容易忽略的一点,许多应用在安装时会请求和该应用使用时完全用不到的权限,这也为日后可能出现的问题埋下隐患。

Android系统的应用可以申请读取短信、发送短信、接收短信、拨打电话、读取通讯录、修改通讯录等重要权限,无需Root即可替换短信、通讯录、相机、输入法等系统应用功能,可以更灵活的去开发第三方应用,但是也给了病毒和恶意软件可乘之机,易造成隐私泄露、短信被拦截(可导致账号被盗、网络支付安全问题)、被恶意扣费、自动给通讯录其他人发送病毒链接等问题。

手机厂商对安全补丁的更新缓慢同样也是一个大问题。系统漏洞被发现后,Google会及时更新系统补丁,而等到各个厂商给用户提供更新时可能已经过了半年以上。甚至有些厂商手机发布后,不再提供更新,导致用户始终处于已知系统漏洞的风险之中。

目前国内第三方ROM市场缺乏监管,安全难以保障:现在很多手机厂商为了自身利益内置各类应用,但很多用户并不喜欢原生系统或内置应用,经常会Root,并刷第三方ROM,也造就了第三方ROM的繁荣市场。但第三方ROM的技术人员水平参差不齐,行业也缺乏监管,系统安全性难以保障,而且手机一旦进行了Root,被病毒、恶意软件利用申请到最高权限,可以执行很多操作,会造成更大的危害。

除了普通用户,Android应用的开发者也同样要关注Android系统的安全问题,前面已经介绍了,Android系统有各种原因导致会有各种安全问题出现,且用户在手机Root后、中病毒等情况下,都会导致普通APP完全没有“隐私”可言,各种私有数据充分暴露。所以,开发者需要考虑在手机被Root后私有数据被暴露的情况下,仍然能保证数据安全,不会泄露用户重要数据及隐私信息。由于手机厂商修复系统漏洞很慢,一旦出现漏洞,开发者不能依赖系统更新,更多时候需要自己想办法避免漏洞对用户造成损失。而且Android碎片化严重,各种版本的系统占有率不相上下,这种情况下,低版本手机安全风险更大,虽然谷歌在每次新系统上都会加强安全措施,但是很多情况下低版本系统仍然暴露在已知漏洞的威胁之下。

Android应用漏洞分布现状

在第三方应用市场分别下载了18个行业的Top10应用共计180个,进行漏洞分析,97%的应用都有漏洞,总漏洞量15159个,平均每个应用有87个漏洞,且23%的Top10应用都有高风险漏洞。(数据来自阿里)


游戏类Top10 Android应用有788个漏洞,平均每个应用含79个漏洞。其中29%是Webview远程代码执行高危漏洞。
约19%是高危漏洞,游戏类应用更新迭代频率高,资金,用户下载量大,存在的漏洞风险不容忽视。


金融类Top10, Android 应用有669个漏洞,平均每个含67个漏洞,其中22%是Webview远程代码执行高危漏洞。
约34%是高危漏洞,在18个行业中高危漏洞占比最高。


电商类Top10应用共有851个漏洞,平均每个应用含85个漏洞,其中约27%是Webview远程代码执行高危漏洞,可导致恶意应用被植入、通讯录和短信被窃取、手机被远程控制等严重后果。
约27%是高危漏洞。


这些漏洞到底是什么,有多危险呢?

敏感信息泄露漏洞

敏感信息可分为产品敏感信息和用户敏感信息和两个方面。

产品敏感信息为:信息泄露后直接对企业安全造成重大损失或有助于帮助攻击者获取企业内部信息,并可能帮助攻击者尝试更多的攻击路径。比如登录密码、后台登录及数据库地址、服务器部署的绝对路径、内部IP、地址分配规则、网络拓扑、页面注释信息包括(开发者姓名或工号、程序源代码)等。

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

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

敏感信息可能泄露的方式有:代码、数据库、配置文件中明文存储敏感数据、日志中打印敏感信息、通信过程中明文传输敏感信息。

一旦产品敏感信息泄露,会导致服务器处于危险境地,可能被入侵攻击,个人敏感信息泄露也会导致账号被盗、网银盗刷等,给普通用户造成经济损失。

相关案例:
国王控卫电脑被黑遭勒索 私人敏感信息或泄露

WebView远程代码执行漏洞

WebView组件中的addJavascriptInterface方法用于实现本地Java和JavaScript的交互,但是该函数并没有对方法调用进行限制,导致攻击者可以调用任何JAVA类,最终导致JavaScript代码对设备进行任意攻击。该漏洞可被用来实现网页挂马,导致手机中毒等。

相关案例:
关于安卓webview安全漏洞远程命令执行

任意调试漏洞

AndroidManifest.xml文件中debuggable属性值被设置为true时(默认为false),该程序可被任调试 。该漏洞可被动态调试,增加了apk被破解、分析的风险。

HTTPS中间人劫持漏洞

中间人攻击是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。在中间人攻击中,攻击者可以拦截通讯双方的通话并插入新的内容。

攻击者可通过中间人攻击,盗取账户密码明文、聊天内容、通讯地址、电话号码以及信用卡支付信息等敏感信息,甚至通过中间人劫持将原有信息替换成恶意链接或恶意代码程序,以达到远程控制、恶意扣费等攻击意图。

相关案例:
在各大漏洞平台上,有大量存在HTTPS证书不校验漏洞,例如国内绝大部分Android APP存在信任所有证书漏洞、亚马逊最新官方Android版存在一处信任所有证书漏洞、Yahoo雅虎在国内访问遭遇SSL中间人攻击、携程旅游网最新Android客户端https未校验证书导致https通信内容完全被捕获。

加密算法漏洞

使用AES/DES/DESede加密算法时,如果使用ECB模式,容易受到攻击风险,造成信息泄露。
代码中生成秘钥时使用明文硬编码,易被轻易破解。
使用不安全的Hash算法(MD5/SHA-1)加密信息,易被破解。
生成的随机数具有确定性,存在被破解的风险。

加密信息被破解会导致信息的泄露。 如果加密的是账号、密码、银行卡、身份证等信息,破解后可被不法分子用于诈骗、盗号、盗刷等。

除了以上客户端可能出现的这些漏洞,服务端可能出现的安全漏洞同样不能忽视。目前大量业务从传统的PC端扩展到移动端,在服务器上运行业务逻辑也是较为安全和低成本的实现方式。但正因为业务逻辑是在服务端处理,如果不对作为入口的客户端进行强有效的安全校验,客户端很容易被黑客作为突破口,用于挖掘服务端的业务风险漏洞。理论上,web服务器所有安全问题也会出现在App的服务端。而Web安全已经发展了很长时间,研究人员、黑客也很多,技术成熟,更容易被黑客发现漏洞。

SQL注入漏洞

SQL注入攻击是黑客对数据库进行攻击的常用手段之一。原因是没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据。该漏洞可导致用户信息泄露,被不法分子用于诈骗、出售信息等。

相关案例:
贷齐乐系统多处SQL注入漏洞可影响大量P2P网贷站点

越权访问漏洞

一个正常的用户A通常只能够对自己的一些信息进行增删改查,但是由于程序员的一时疏忽,在进行增删改查的时候,没有判断所需要操作的信息是否属于对应的用户,可以导致用户A可以操作其他人的信息。该漏洞可导致黑客查看、修改他人用户信息、信息泄露等。

相关案例:

黑客可通过漏洞访问Uber优步司机和乘客信息

接口未限制导致撞库漏洞

撞库是黑客通过收集互联网已泄露的用户和密码信息,生成对应的字典表,尝试批量登陆其他网站后,得到一系列可以登录的用户。很多用户在不同网站使用的是相同的帐号密码,因此黑客可以通过获取用户在A网站的账户从而尝试登录B网址,这就可以理解为撞库攻击。同样容易引起账号被盗、信息泄露等严重问题。

相关案例:

12306数据泄露原因曝光:手机APP漏洞导致“撞库”

XSS漏洞

跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,使得用户信息谢咯,从而达到恶意攻击用户的目的。

相关案例:
APP安全之上车一处无效xss可间接影响18万土豪车主(包括认证的特斯拉/劳斯莱斯/法拉利车主等)

业务逻辑漏洞

业务逻辑漏洞是指由于程序逻辑不严密或逻辑太复杂,导致一些逻辑分支不能够正常处理或处理错误。常见漏洞包括:任意密码修改(没有旧密码验证)、密码找回漏洞、业务数据篡改等。该漏洞易造成账号被盗、免费购物、刷钱、刷游戏币等严重问题。

相关案例:
有利网某业务逻辑漏洞导致可无限刷红包(红包可用于投资)

如何最大限度的避免这些漏洞的出现

在目前大多数应用的测试团队中,大都缺乏安全测试的意识和能力,且安全测试专业性强、涉及面广、人才稀缺,组建安全团队成本太高,想做安全测试也有心无力。

蒲公英专家测试同样也注意到了以上的问题,本着更好的为开发者服务的初心,新产品安全性测试也正在最后的打磨阶段,即将在不久后推出,详情可访问蒲公英专家测试咨询客服,我们也会根据您的需求在最后阶段完善我们的产品。