安卓应用常见的几种应对恶意攻击的解决方案

内容来源:2018 年 09 月 15 日,华为资深技术专家李欣哲在“从研发到测试,手把手教你打造绿色应用”进行《应用安全常见问题及解决方案》的演讲分享。IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。

阅读字数:3315 | 9分钟阅读

摘要

本文分为三个部分,第一个部分会介绍一下安卓的应用现状,第二部分是安卓的常见问题(偏漏洞方面),最后是隐私安全问题。

安卓应用现状

首先我们来看一下官方发布的数据,国家互联网应急响应中心对所有的移动平台进行统计后,发现安卓平台的用户是最容易受到攻击的,而且恶意的程序高达99.9%。这主要是由于安卓的本身开源开放的机制导致的,同时近些年来安卓的用户量逐年增高,让大家看到的利益,从而引来了越来越多的攻击者。

这是我们内部审计发现的一些数据,在经过仔细的排查,发现很多应用普遍都会存在一些漏洞。而少部分应用会在他们不知情或者是故意的情况下,带有一些病毒和恶意的行为。

Android应用常见问题及解决方案

接下来会给大家介绍下我们今年发现了一些漏洞,其实说漏洞还是有些不恰当,它更像是四个攻击面,包括组件问题、url绕过、中间人攻击、Webview漏洞,尽管这几个问题看起来非常简单,但是在手机上包括一些主流APP上却是非常的常见。

组件问题

对于组件问题,如果单论存在的原因,可能在安卓建立之初它就存在了。组件暴露其实是一个非常正常的事情,但是不正常的就在于很多开发者喜欢把一些没有开发完的代码也随着应用发布出去,他们可能觉得这些部分跟其他的组件或者界面没有太大关联,用户无法接触到这些界面。但是实际上如果设置了组件暴露,攻击者就可以轻松的攻击应用,包括调用隐藏功能,开启后门,拒绝服务等。

组件暴露,如果含有权限,而且没有设置保护(这里的权限不仅仅是传统意义上的那种谷歌定义的高权限行为),攻击者就可以在在用户不知情情况下做一些事情,比如访问组件直接发短信,

还有一种情况是应用设计逻辑上比较高危,比如我之前看到一款金融类的APP,它的设计就是先有一个输入密码的界面,类似于保护锁,通过保护锁验证成功之后才可以金融信息这样的隐私数据。但是如果第二个界面组件暴露了,就可以不用锁直接绕过验证。

下面介绍一个,今年某某社交软件发现的SDK的问题。这个问题大概是在今年7月份才修复,该社交软件,用户量大概有几个亿,审计发现有14000多个应用存在这种问题。

问题出在一个有分享功能的SDK上, 这个SDK存在两个暴露的组件,其中一个组件的漏洞让攻击者可以访问到应用的任意私有组件,相当于绕过了谷歌的沙箱机制。另一个组件的漏洞不仅可以让然访问私有组件,还可以向组件传参数。它们主要造成了两个问题,一个是拒绝服务,一个是调用未授权界面(甚至后门)。

URL绕过问题

URl绕过问题也只能说是攻击面,不能说是漏洞。这块首先有一个路径遍历漏洞,一般问题应用或者SDK在大量使用路径url作为参数的情况下,如果不校验路径的合法性,就容易导致这个问题。安卓平台最典型的路径遍历漏洞就是 ZipEntry URl路径遍历问题,和传统web相同。

另一个问题是url白名单绕过,随着联网应用的增多,大家都喜欢用webviwe组件去加载一个网页,那就需要加载url,而webviwe组件本身问题就非常的多,它权限中有很多敏感的行为,比如获取地理位置信息。

在使用webview的时候,大多数开发者并不希望组件任何网页都加载,因此会实现一个白名单函数约束加载的网页,常见的约束函数有contains()、indexOf()、endwith()、getHost()等,由于约束机制都是人为实现的,因此会带来不安全的因素。

url白名单可能存在的场景,包括安卓的scheme属性、暴露组件、一扫、评论、聊天输入。

扫一扫的问题比较有意思,按照道理讲,通过扫二维码和直接网页点击的url,如果有白名单校验机制的话,应该是加载同一个白名单函数。但是可能由于团队架构设计的原因,导致两块分别由不同人负责,造成白名单校验机制也不一样,从而带来一些问题。

中间人攻击

中间人攻击其实也是历史悠久的问题,最早也是在web平台,不过现在因为安卓平台的网络连接越来越多,用户量越来越大,这个也是成为了安隐患非常大的问题。

中间人攻击可以劫持应用发出的请求,返回用户不期望的东西。所有的http都可以被中间人攻击,因为它本身就是不安全的网络传输。

https作为http的安全解决方案,如果实现的不够好,也有很多的漏洞。目前众所周知的漏洞位置由X509TrustManager、HostnameVerifier、setHostnameVerifier,对于场景分别是客户端不校验SSL证书或者校验逻辑有误;自定义实现HostnameVerifier接口,却不检查域名和证书域名是否匹配;直接使用接受任意域名的HostnameVerifier接口。

Webvie漏洞

Webview漏洞方面今年发现的,影响面最广,而且数量不断递增的就是JavaScript的接口暴露问题。目前市面上比较流行的,用了Webview组件的应用,大概有1/5都存在这种问题。

我们某应用中供应商的SDK中就存在大量暴露的JavaScript接口,通过代码跟踪我们发现这个接口可以执行很多操作,包括发短信、打电话、下载应用等等功能,

对于webview漏洞的解决方案主要是扫描代码中关键字,以上这些都是webview的一些配置,它们单独拿出来可能都不是什么问题,但是组合起来就会造成非常多的问题。

Android应用问题及解决方案

我们使用的应用里肯定有很多的隐私数据,例如的姓名,年龄、性别、身份证号等等信息,这些信息可以通过网络、SD卡存储、短信发送、NFC、蓝牙传输等各种方式泄露出去。

那么作为一个开发者,要如何防范这些泄露呢,或者说保证自己开发的应用没有这些行为,其中就包括判断所引入的大量开源的SDK是否有恶意的行为。

这里介绍一款工具——flowdroid,它是一款针对android app数据分析的工具。它实际上是分析了你的信息流所有可能的通过的路径,其中分为source跟sink,,source表示敏感数据、sink表示泄露点。

以上为今天的分享内容,谢谢大家!

原文发布于微信公众号 - IT大咖说(itdakashuo)

原文发表时间:2018-11-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

网页游戏系统架构图

如上图所示,一台物理服务器放三个游戏服务和一个数据库,并且有专门的memcached服务器 1、当memcached服务器重启时,需要从基础数据库中读取基础数据...

3716
来自专栏腾讯技术工程官方号的专栏

WEB加速,协议先行 ( 上)

本文分享了 STGW 及腾讯云 CLB 在 WEB 协议优化过程中的实践经验,并对WEB协议的未来进行了探讨分析。

5472
来自专栏Python

操作系统简介

一 为什么要有操作系统 现代计算机系统是一个复杂的系统,程序员无法把所有的硬件操作细节都了解到,管理这些硬件并且加以优化使用是非常繁琐的工作,为了将程序员就从这...

2217
来自专栏Youngxj

绕过CDN查找网站真实IP的方法

4504
来自专栏小文博客

win10更新后lol帧数一直60解决办法

1473
来自专栏ytkah

微信公众号可以快速注册认证小程序了

  今天上午微信公众平台带来两招:1、公众号可以快速注册并认证新的小程序;2、已关联了同主体公众号的小程序,可一键完成微信认证。这两个“快速通道”都无需重新提交...

4785
来自专栏FreeBuf

挖洞经验 | 看我如何接管OLX的每一条广告

在这篇文章中,我将跟大家分享关于“不安全的直接对象引用”(IDOR)攻击的相关内容。没错,正如本文标题所写的那样,我在OLX所托管的网站上发现了一个IDOR漏洞...

2658
来自专栏杨建荣的学习笔记

防火墙开通的自动化尝试和感悟

对于一个从零到一的系统或者平台,你会有几十次几百次的调试,为的是能让系统/平台真正跑起来,用起来。我想这背后需要的坚持真是百般煎熬,一方面希望能够像建造...

1181
来自专栏13blog.site

Docker+SpringBoot+Mybatis+thymeleaf的Java博客系统开源啦

作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载。 个人博客 对于技术...

4549
来自专栏FreeBuf

中国深圳一家厂商的智能摄像头曝出漏洞:至少 17.5 万设备可被远程攻击

安全企业 Bitdefender 和 Checkmarx 均发布报告表示,安全研究员在多个常用智能摄像头中发现远程侵入漏洞,涉及 VStarcam、Loftek...

3465

扫码关注云+社区

领取腾讯云代金券