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九大漏洞,附解决建议相关推荐

  1. @IT老司机 云服务、BI大数据、协同办公等五大技术选型研讨会,震撼来袭!

    市场瞬息变化,每家企业都在拼命转型,当业务调整,IT能否从容应对,响应业务能否快速变化?市场提供的众多技术.产品与解决方案,究竟哪一款能够帮助企业快速应对当下发展?作为身经百战的IT老司机,您也一定见 ...

  2. Python老司机总结新手常见10大错误

    作为python的新手,大家在上手python的时候都会或多或少的接触到一些rookie mistake,也就是菜鸟级别的错误.小编作为一个老司机也是从这些错误中一点一点的积累经验,才慢慢的能够熟练的 ...

  3. 10 ping不通widwos7 windwos_弱电老司机总结的10种视频监控系统故障解决方法,学会,事半功倍...

    最近有许多的读者咨询关于视频监控系统维修方法的事情,有没有总结一些常见故障的解决方案呢?当然有的,今天分享一些常见故障解决方法. 正文: 视频监控系统通常出现摄像机没有画面.或者画面卡顿.丢失等情况, ...

  4. Coding时间加起来8万小时,四位老司机唐赓 武爱敏 大师兄(刘歧)刘连响带你多媒体开发...

    9月9日 | 北京 带着初秋的一丝凉爽,LiveVideoStack Meet北京再聚首,本次沙龙我们将目光聚焦[多媒体开发技术].多媒体正在成为互联网应用的标配,随着新技术不断演进,给人们带来了前所 ...

  5. uni-app(踩坑第一篇):轮播图swiper改变指示点样式(已解决)

    参考文章:uniapp修改swiper组件下方指示点方法(亲测可用)_今天是一个礼物的博客-CSDN博客_uniapp swiper 去掉指示点 主要实现这种指示点 指示点样式更改:直接加在vue文件 ...

  6. win7为啥总扫描计算机,老司机搞定win7系统共享扫描仪的解决办法

    随着电脑的使用率越来越高,我们有时候可能会遇到对win7系统共享扫描仪进行设置,如果我们需要对win7系统共享扫描仪进行设置时,要怎么处理win7系统共享扫描仪呢?我们按照1.将扫描仪通过USB线跟电 ...

  7. 一路踩坑构建Dubbo源码

    dubbo构建 源码环境 构建 快速启动 总结 源码环境 随着溪源目前对技术栈的求知欲,也开始入手Dubbo源码啦!!! 构建源码第一步: 必备开发环境:Java 1.5 以上的版本:Maven 2. ...

  8. 这是一篇路由器踩坑的文章

    这是一篇路由器踩坑的文章 ​ 想用路由器遂咸鱼了一台路由器,基于极路由2改的第三方路由,但是硬件配置都一样,所以本文就是针对极贰的踩坑记录. 目标 老毛子固件 自动登录校园网(drcom客户端) 校园 ...

  9. Android踩坑之 couldnt find libClingSDK.so

    Android踩坑之couldn't find "libClingSDK.so" 在android开发中一些涉及到硬件级的API需要引入第三方的sdk,通常都是一个jar包搭配一个 ...

最新文章

  1. 玩转Spring Cloud之配置中心(config server config client)
  2. TeamLab安装及使用
  3. 突发!Intel CEO 换帅,VMware CEO 将走马上任
  4. PHP中session的工作原理
  5. audio 上一首 下一首 自定义样式_HTML5中 audio标签的样式修改
  6. CompletableFuture详解~异常处理
  7. Java获取数据类型
  8. jQuery插件_SuperSlide插件(焦点图切换、标签切换、多个slide组合)
  9. Flask详解(上篇)
  10. 常用域名管理后台网址
  11. flutter 生成图片保存到手机相册
  12. android模拟电源按键
  13. 无主3局域网找不到服务器,无主之地3局域网模式设置方法攻略 无主之地3局域网怎么用...
  14. win7如何创建宽带连接
  15. conda搜索安装包时显示没有匹配No match found for: fastaqc. Search: *fastaqc* PackagesNotFoundError:
  16. 最大公因数及其求解算法(GCD)
  17. 手机html端悬浮球,大屏手机绝配!一款轻巧强大的悬浮球App
  18. 高晓松的《晓说》很棒,这脑袋怎么长得?
  19. SystemProperties与Settings.system
  20. EtherCAT源代码分析(1)

热门文章

  1. mysql批量存图片_教你如何在MySQL数据库中直接储存图片(3)
  2. 冷热分离和直接使用大数据库_「系统架构」如何通过分离冷热数据提升系统性能?...
  3. git eclipse 取消误操作 ignore(忽略)文件
  4. Compile error: Cannot find a C++ compiler that supports both C++11 and the specified C++ flags
  5. Java 语言 ArrayList 和 JSONArray 相互转换
  6. Android开发笔记(一百二十四)自定义相册
  7. CP三次握手和四次分手--转
  8. 【Android手机测试】OOM
  9. xml字符串转xml对象,xml对象转json对象
  10. Apache Shiro SessionManager配置详解.