Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

Hare Hunting in the Wild Android: A Study on the Threat of Hanging Attribute References

论文下载:http://www.cis.syr.edu/~wedu/Research/paper/harehunt_ccs2015.pdf

这篇文章来自于多个研究机构的合作,其中有我们非常熟悉的xiaofeng wang老师。

这篇文章的主要内容是对Android平台上一种新发现的安全隐患进行了深入分析,这一类安全问题主要源自Android平台各类资源组件之间显示调用方式的缺陷。

我们都知道Android系统中存在着各种各样的组件,常见的有Activity、Service、Content Provider等,这些组件之间存在着频繁的相互调用关系,而组件之间的相互调用往往伴随着敏感信息的传递,这篇文章所发现的新的安全隐患正是发生在这种组件之间相互调用的过程中。在Android系统中,当你需要显式的去调用一个系统资源时,你需要将该资源的标签硬编码在你的代码里,比如一个activity的包名、content provider的url等。但往往我们在调用这些其他组件的时候,并不会去检查这些组件是否真的存在,那么当你调用一个并不存在的组件时,就给了攻击者取而代之的机会,攻击者可以伪装成被调用的组件,窃取或篡改这一调用过程中传递的敏感信息。

根据这篇文章的分析,能够出发这类安全隐患的情况往往发生在同一套代码被部署在不同设备时,在目前碎片化非常严重的Android生态环境中,这样的代码复用是非常常见的。比如同一个厂商的平板和手机ROM代码很可能就来自于同一套基础代码,而手机和平板设备的系统组件是存在差异的,比如平板设备中就不存在用于处理短信的模块,在这种情况下,如果在手机和平板设备上使用同一套代码而不进行严格的检查,就会发生上文所说的安全隐患,导致漏洞的出现。

文本的作者根据这种安全隐患的特点,设计了一套漏洞检测方案,用于检测一个ROM中是否存在这样的安全隐患,具体架构如下:

Fig

首先通过静态代码分析,寻找ROM代码中所有的组件显式调用代码,通过和ROM中组件列表的比对,判断是否存在调用不存在组件的情况。同时也对发起调用的代码进行程序分析,检查是否针对组件不存在的情况做了判断和异常处理.

作者选取了来自5个不同厂商的97个ROM镜像进行实验,实验结果如下:

Fig