这是我们内部审计发现的一些数据,在经过仔细的排查,发现很多应用普遍都会存在一些漏洞。而少部分应用会在他们不知情或者是故意的情况下,带有一些病毒和恶意的行为。
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接口,通过代码跟踪我们发现这个接口可以执行很多操作,包括发短信、打电话、下载应用等等功能,
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

分享读者
作者2013年java转到Android开发,在小厂待过,也去过华为,OPPO等大厂待过,18年四月份进了阿里一直到现在。
被人面试过,也面试过很多人。深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长,而且极易碰到天花板技术停滞不前!
我们整理了一份阿里P7级别的Android架构师全套学习资料,特别适合有3-5年以上经验的小伙伴深入学习提升。
主要包括腾讯,以及字节跳动,阿里,华为,小米,等一线互联网公司主流架构技术。
如果你觉得自己学习效率低,缺乏正确的指导,可以一起学习交流!
我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。
35岁中年危机大多是因为被短期的利益牵着走,过早压榨掉了价值,如果能一开始就树立一个正确的长远的职业规划。35岁后的你只会比周围的人更值钱。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!