避免踩坑:易盾安全老司机起底Android九大漏洞,附解决建议
Android应用会遇到各种各样的漏洞,如何从细节上了解各种安全隐患,积极采取适当的防御措施便变得尤为重要。为了让大家对Android漏洞有一个非常全面的认识,网易云易盾资深安全工程师徐从祥为大家详细解读常见九大的Android漏洞,供各位学习参考。(如果下面干货内容没有让各位尽兴,欢迎来官网申请相关产品试用,面对面交流,保证解决你的安全难题。
第一大类:AndroidManifest配置相关的风险或漏洞
程序可被任意调试
风险详情:安卓应用apk配置文件Android Manifest.xml中android:debuggable=true,调试开关被打开。
危害情况:app可以被调试。
修复建议:把AndroidManifest.xml配置文件中调试开关属性关掉,即设置android:Debugable="false"。
程序数据任意备份
风险详情:安卓应用apk配置文件AndroidManifest.xml中android:allowBackup=true,数据备份开关被打开。
危害情况:app应用数据可被备份导出。
修复建议:把AndroidManifest.xml配置文件备份开关关掉,即设置android:allowBackup="false"。
组件暴露:建议使用android:protectionLevel="signature"验证调用来源。
Activity组件暴露
风险详情:Activity组件的属性exported被设置为true或是未设置exported值但IntentFilter不为空时,activity被认为是导出的,可通过设置相应的Intent唤起activity。
危害情况:***可能构造恶意数据针对导出activity组件实施越权***。
修复建议:如果组件不需要与其他app共享数据或交互,请将AndroidManifest.xml 配置文件中设置该组件为exported = “False”。如果组件需要与其他app共享数据或交互,请对组件进行权限控制和参数校验。
Service组件暴露
风险详情:Service组件的属性exported被设置为true或是未设置exported值但IntentFilter不为空时,Service被认为是导出的,可通过设置相应的Intent唤起Service。
危害情况:***可能构造恶意数据针对导出Service组件实施越权***。
修复建议:如果组件不需要与其他app共享数据或交互,请将AndroidManifest.xml 配置文件中设置该组件为exported = “False”。如果组件需要与其他app共享数据或交互,请对组件进行权限控制和参数校验。
ContentProvider组件暴露
风险详情:ContentProvider组件的属性exported被设置为true或是Android API<=16时,Content Provider被认为是导出的。
危害情况:***可能访问到应用本身不想共享的数据或文件。
修复建议:如果组件不需要与其他app共享数据或交互,请将AndroidManifest.xml 配置文件中设置该组件为exported = “False”。如果组件需要与其他app共享数据或交互,请对组件进行权限控制和参数校验。
BroadcastReceiver组件暴露
风险详情:BroadcastReceiver组件的属性exported被设置为true或是未设置exported值但IntentFilter不为空时,BroadcastReceiver被认为是导出的。
危害情况:导出的广播可以导致数据泄漏或者是越权。
修复建议:如果组件不需要与其他app共享数据或交互,请将AndroidManifest.xml 配置文件中设置该组件为exported = “False”。如果组件需要与其他app共享数据或交互,请对组件进行权限控制和参数校验。
Intent SchemeURLs***
风险详情:在AndroidManifast.xml设置Scheme协议之后,可以通过浏览器打开对应的Activity。
危害情况:***者通过访问浏览器构造Intent语法唤起app相应组件,轻则引起拒绝服务,重则可能演变对app进行越权调用甚至升级为提权漏洞。
修复建议:app对外部调用过程和传输数据进行安全检查或检验,配置category filter, 添加android.intent.category.BROWSABLE方式规避风险
第二大类:WebView组件及与服务器通信相关的风险或漏洞
Webview存在本地Java接口
风险详情:android的webView组件有一个非常特殊的接口函数addJavascriptInterface,能实现本地java与js之间交互。
危害情况:在targetSdkVersion小于17时,***者利用 addJavascriptInterface这个接口添加的函数,可以远程执行任意代码。
修复建议:建议开发者不要使用addJavascriptInterface,使用注入javascript和第三方协议的替代方案。
Webview组件远程代码执行(调用getClassLoader)
风险详情:使用低于17的targetSDKVersion,并且在Context子类中使用addJavascriptInterface绑定this对象。
危害情况:通过调用getClassLoader可以绕过google底层对getClass方法的限制。
修复建议:targetSDKVersion使用大于17的版本。
WebView忽略SSL证书错误
风险详情:WebView调用onReceivedSslError方法时,直接执行handler.proceed()来忽略该证书错误。
危害情况:忽略SSL证书错误可能引起中间人***。
修复建议:不要重写onReceivedSslError方法,或者对于SSL证书错误问题按照业务场景判断,避免造成数据明文传输情况。
webview启用访问文件数据
风险详情:Webview中使用setAllowFileAccess(true),App可通过webview访问私有目录下的文件数据。
危害情况:在Android中,mWebView.setAllowFileAccess(true)为默认设置。当setAllowFileAccess(true)时,在File域下,可执行任意的JavaScript代码,如果绕过同源策略能够对私有目录文件进行访问,导致用户隐私泄漏。
修复建议:使用WebView.getSettings().setAllowFileAccess(false)来禁止访问私有文件数据。
SSL通信服务端检测信任任意证书
风险详情:自定义SSLx509 TrustManager,重写checkServerTrusted方法,方法内不做任何服务端的证书校验。
危害情况:***可以使用中间人***获取加密内容。
修复建议:严格判断服务端和客户端证书校验,对于异常事件禁止return 空或者null。
HTTPS关闭主机名验证
风险详情:构造HttpClient时,设置HostnameVerifier时参数使用ALLOW_ALL_HOSTNAME_VERIFIER或空的HostnameVerifier。
危害情况:关闭主机名校验可以导致***使用中间人***获取加密内容。
修复建议:APP在使用SSL时没有对证书的主机名进行校验,信任任意主机名下的合法的证书,导致加密通信可被还原成明文通信,加密传输遭到破坏。
避免踩坑:易盾安全老司机起底Android九大漏洞,附解决建议相关推荐
- @IT老司机 云服务、BI大数据、协同办公等五大技术选型研讨会,震撼来袭!
市场瞬息变化,每家企业都在拼命转型,当业务调整,IT能否从容应对,响应业务能否快速变化?市场提供的众多技术.产品与解决方案,究竟哪一款能够帮助企业快速应对当下发展?作为身经百战的IT老司机,您也一定见 ...
- Python老司机总结新手常见10大错误
作为python的新手,大家在上手python的时候都会或多或少的接触到一些rookie mistake,也就是菜鸟级别的错误.小编作为一个老司机也是从这些错误中一点一点的积累经验,才慢慢的能够熟练的 ...
- 10 ping不通widwos7 windwos_弱电老司机总结的10种视频监控系统故障解决方法,学会,事半功倍...
最近有许多的读者咨询关于视频监控系统维修方法的事情,有没有总结一些常见故障的解决方案呢?当然有的,今天分享一些常见故障解决方法. 正文: 视频监控系统通常出现摄像机没有画面.或者画面卡顿.丢失等情况, ...
- Coding时间加起来8万小时,四位老司机唐赓 武爱敏 大师兄(刘歧)刘连响带你多媒体开发...
9月9日 | 北京 带着初秋的一丝凉爽,LiveVideoStack Meet北京再聚首,本次沙龙我们将目光聚焦[多媒体开发技术].多媒体正在成为互联网应用的标配,随着新技术不断演进,给人们带来了前所 ...
- uni-app(踩坑第一篇):轮播图swiper改变指示点样式(已解决)
参考文章:uniapp修改swiper组件下方指示点方法(亲测可用)_今天是一个礼物的博客-CSDN博客_uniapp swiper 去掉指示点 主要实现这种指示点 指示点样式更改:直接加在vue文件 ...
- win7为啥总扫描计算机,老司机搞定win7系统共享扫描仪的解决办法
随着电脑的使用率越来越高,我们有时候可能会遇到对win7系统共享扫描仪进行设置,如果我们需要对win7系统共享扫描仪进行设置时,要怎么处理win7系统共享扫描仪呢?我们按照1.将扫描仪通过USB线跟电 ...
- 一路踩坑构建Dubbo源码
dubbo构建 源码环境 构建 快速启动 总结 源码环境 随着溪源目前对技术栈的求知欲,也开始入手Dubbo源码啦!!! 构建源码第一步: 必备开发环境:Java 1.5 以上的版本:Maven 2. ...
- 这是一篇路由器踩坑的文章
这是一篇路由器踩坑的文章 想用路由器遂咸鱼了一台路由器,基于极路由2改的第三方路由,但是硬件配置都一样,所以本文就是针对极贰的踩坑记录. 目标 老毛子固件 自动登录校园网(drcom客户端) 校园 ...
- Android踩坑之 couldnt find libClingSDK.so
Android踩坑之couldn't find "libClingSDK.so" 在android开发中一些涉及到硬件级的API需要引入第三方的sdk,通常都是一个jar包搭配一个 ...
最新文章
- 玩转Spring Cloud之配置中心(config server config client)
- TeamLab安装及使用
- 突发!Intel CEO 换帅,VMware CEO 将走马上任
- PHP中session的工作原理
- audio 上一首 下一首 自定义样式_HTML5中 audio标签的样式修改
- CompletableFuture详解~异常处理
- Java获取数据类型
- jQuery插件_SuperSlide插件(焦点图切换、标签切换、多个slide组合)
- Flask详解(上篇)
- 常用域名管理后台网址
- flutter 生成图片保存到手机相册
- android模拟电源按键
- 无主3局域网找不到服务器,无主之地3局域网模式设置方法攻略 无主之地3局域网怎么用...
- win7如何创建宽带连接
- conda搜索安装包时显示没有匹配No match found for: fastaqc. Search: *fastaqc* PackagesNotFoundError:
- 最大公因数及其求解算法(GCD)
- 手机html端悬浮球,大屏手机绝配!一款轻巧强大的悬浮球App
- 高晓松的《晓说》很棒,这脑袋怎么长得?
- SystemProperties与Settings.system
- EtherCAT源代码分析(1)
热门文章
- mysql批量存图片_教你如何在MySQL数据库中直接储存图片(3)
- 冷热分离和直接使用大数据库_「系统架构」如何通过分离冷热数据提升系统性能?...
- git eclipse 取消误操作 ignore(忽略)文件
- Compile error: Cannot find a C++ compiler that supports both C++11 and the specified C++ flags
- Java 语言 ArrayList 和 JSONArray 相互转换
- Android开发笔记(一百二十四)自定义相册
- CP三次握手和四次分手--转
- 【Android手机测试】OOM
- xml字符串转xml对象,xml对象转json对象
- Apache Shiro SessionManager配置详解.