Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

On Demystifying the Android Application Framework: Re-Visiting Android Permission Specification Analysis

论文下载

Abstract & Introduction

本文主要研究的是如何快速并且精确地分析安卓framework的源码中的安全问题。作者实现了一种静态分析的工具,用它来分析源码中的权限问题,并与现有的工具进行了比较。

本文的主要贡献:

  • 提供了分析安卓framework层代码的工具,从入口点开始通过自顶向下的分析方法进行数据流分析,定义了入口点以及敏感数据的模型
  • 将现有的权限控制分析由应用层扩展到框架层,作者把自己的结果与已有的工具进行对比,发现结果差异较大

Enabling In-Depth Application Framework Analysis

  • 首先解决的问题是如何定义入口点,作者认为开发者可以绕过SDK,直接访问Bound Service,所以入口点除了API还应该包括framework service class,作者排除了不能被开发者直接调用的入口点比如Zygote。

Fig

  • 其次,作者构建了一个Runtime Model,处理的模型包括Handler,AsyncChannel,AsyncChannel,为了确保准确率,在处理路径是否可达的问题上要给出明确的路径约束条件,并且针对不同类型的继承类要有不同的处理方法。
  • 最后作者提出了一个敏感资源的分类模型,确定敏感资源的方法是权限保护之后的一段代码一般都是需要访问控制的,定义其为敏感资源,人工总结了以下几种类型

Fig

Implementation

  • 静态分析工具使用的是WALA,一共有1.5W行代码,首先生成call-graph,使用高精度的分析方法,单独考虑所有派生类,虽然要耗费大量的运算资源,但是可以最大限度的降低误报率,提高准确性
  • 前向切片,从每一个入口点开始,切片停止条件是native调用,与其他类进行RPC通信,或者返回。根据IPC联系的条件把可以连接的两个图连起来。

  • 在不同版本中,分别找到了242到383个入口点,有权限保护的大概为四分之一,用服务器跑的时间是14到126小时不等

Fig

  • 作者检查framework源码中反射调用大部分是DEBUG等作用,有实用意义的反射很少。

Permission Analysis

在原有的静态分析基础上,在切片的路径上添加所需权限的字符串信息,拿到一个入口点需要的权限,根据SDK的信息,列出所有API,得出API所需要的权限。 对比PScout

Fig

Fig

差异原因,PScout没有考虑绕过SDK层直接访问framework层服务的情况。