阿里聚安全扫描器之本地拒绝服务检测详解

阿里聚安全的Android应用漏洞扫描器有一个检测项是本地拒绝服务漏洞的检测,采用的是静态分析加动态模糊测试的方法来检测,检测结果准确全面。本文将讲一下应用漏洞扫描器在针对本地拒绝服务的检测方法。

一、本地拒绝服务产生原因和影响

Android应用使用Intent机制在组件之间传递数据,如果应用在使用getIntent(),getAction(),Intent.getXXXExtra()获取到空数据、异常或者畸形数据时没有进行异常捕获,应用就会发生Crash,应用不可使用(本地拒绝服务)。恶意应用可通过向受害者应用发送此类空数据、异常或者畸形数据从而使应用产生本地拒绝服务

阿里聚安全的博客以前有一篇文章《Android应用本地拒绝服务漏洞浅析》,里面详细讲了产生本地拒绝服务的四种情况:

  1. NullPointerException空数据异常:应用程序没有对getAction()等获取到的数据进行空指针判断,从而导致空指针异常而导致应用崩溃。
  2. ClassCastException类型转换异常:程序没有对getSerializableExtra()等获取到的数据进行类型判断而进行强制类型转换,从而导致类型转换异常而导致应用崩溃。
  3. IndexOutOfBoundsException数组越界异常:程序没有对getIntegerArrayListExtra()等获取到的数据数组元素大小的判断,从而导致数组访问越界而导致应用崩溃。
  4. ClassNotFoundException异常:程序没有无法找到从getSerializableExtra ()获取到的序列化类对象的类定义,因此发生类未定义的异常而导致应用崩溃。

当应用被恶意应用攻击时,本地拒绝服务一般会导致正在运行的应用崩溃,首先影响用户体验,其次影响到后台的Crash统计数据,另外比较严重的后果是应用如果是系统级的软件,可能导致手机重启。Nexus 5曾经出现过这样的情况,它预装了一个用来测试网络连通性的系统应用,这个应用是隐藏状态,无法在桌面上打开,包名为com.lge.SprintHiddenMenu。在Android 4.4.3之前的版本里,这个应用里有大量导出的activity,这些 activity不需要任何权限就可以被外部调用。其中一个为com.lge.SprintHiddenMenu.sprintspec.SCRTN的组件是导出的,并且没有任何权限限制,给它发送一个空Intent,可导致Nexus 5手机重启。

二、阿里聚安全扫描器的进化提升

一个简单的本地拒绝服务类漏洞,要想进行大规模的自动化扫描,扫描器也要做不少的工作,并且随着对本地拒绝服务漏洞的认识,阿里聚安全的漏洞扫描器也在不断进行优化提高。

2.1 空Intent阶段

延伸阅读

学习是年轻人改变自己的最好方式-Java培训,做最负责任的教育,学习改变命运,软件学习,再就业,大学生如何就业,帮大学生找到好工作,lphotoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训学习是年轻人改变自己的最好方式