下面介绍一个,今年某某社交软件发现的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表示泄露点。
以上为今天的分享内容,喜欢的话请帮忙点个赞让更多需要的人看到哦。更多Android进阶技术,面试资料系统整理分享,职业生涯规划,产品,思维,行业观察,谈天说地。可以加Android架构师群;701740775。
划,产品,思维,行业观察,谈天说地。可以加Android架构师群;701740775。