Page 128 - 《软件学报》2021年第6期
P. 128

1702                                     Journal of Software  软件学报 Vol.32, No.6,  June 2021

         with the tool FlowDroid, FastDroid has a higher precision of 93.3% and a higher recall of 85.8% on DroidBench-2.0, and the time cost for
         analysis is less and more stable on all the test suites.
         Key words:    static analysis; taint analysis; software security; privacy protection; Android applications

             近年来,智能手机得到了广泛的普及和应用,智能手机成为人类生活工作中不可或缺的重要工具.在智能手
         机的操作系统中,Android 系统占据主要份额,据统计,在全球手机操作系统中,Android 系统的市场份额达到
              [1]
         74.1% .智能手机的普及,离不开丰富多样的应用,用户可以通过安装在智能手机上的各种应用,实现其社交、娱
         乐、管理、支付等多种需求.然而,根据 360 安全公司 2019 年手机安全状况报告的数据,2019 年新增的恶意程
                                                         [2]
         序样本约 180.9 万个,其中,隐私窃取类的恶意程序占 41.9% .因此,智能手机应用的安全问题备受工业界和学
         术界的关注,特别是隐私数据保护问题成为安全问题的研究重点和热点.Android 应用由于功能的需要,经常会
         存储和访问用户的隐私数据,例如通讯录、短消息、地理位置、账户密码等等.应用在获取用户授予的相关权
         限后,可以访问隐私数据并提供相应服务,比如:导航应用会实时获取用户的地理位置,从而计算道路规划并进
         行导航.然而,一些应用可能会过度申请权限或滥用权限,违规违法泄露和使用用户的隐私数据并造成严重的问
         题.比如:用户的银行账户密码泄露可能造成财产的损失,通讯录的泄露会严重侵犯用户的隐私.因此,智能手机
         的隐私数据保护具有十分重要的意义.
             对于应用本身造成的隐私数据泄露(不包括用户使用不当、操作系统漏洞或网络攻击等),有效地检测应用
         中代码包含的隐私泄露行为,是保护隐私数据的前提.污点分析(taint analysis)作为一种信息流分析技术,近年来
                                      [3]
         被广泛应用于隐私数据泄露的检测 .污点分析能够追踪应用程序中隐私数据从获取到泄露的整个传播过程,
         其中涉及诸多方面的研究,包括应用程序反编译、危险权限使用、隐私数据获取与泄露方式、污染变量传播方
         式等等.虽然污点分析结果不能直接判定某项隐私数据的泄露是否是恶意的,但可以从中了解应用程序使用和
         泄露隐私数据的相关细节,从而帮助判定是否构成恶意行为.另外,恶意行为的判定,还需要根据应用功能及其
                                                   [4]
         行为发生的上下文(context)等具体情况进行具体分析 .例如:地图类型的应用访问用户地理位置这一隐私数据
         是合理的,而要求获取用户通讯录通常是不正常的.总之,污点分析提供了应用获取和使用隐私数据的全貌,可
         为进一步深入分析应用、保护隐私打下基础.
             目前已有的面向 Android 应用的精确的静态污点分析工具                 [5−8] 往往关注分析的精度,忽略了分析效率和运
         行时间.在分析大规模复杂应用时,效率问题可能造成分析超时甚至程序崩溃                           [9,10] 等问题,影响工具在现实中的
         广泛应用.本文提出一种基于污染变量关系图的 Android 应用静态污点分析方法,该方法摒弃了传统数据流分
         析框架,将污点分析和别名分析进行结合,从程序中抽象出污染变量关系图和潜在污染流,并在控制流图上对潜
         在污染流进行验证.实验表明:基于该方法实现的工具 FastDroid 在保证较高精度的同时,大大减少了分析时间,
         并且分析时间更加稳定.
             本文的主要贡献包括以下 3 点:
             (1)  定义了用于描述污染变量及其关系的污染变量关系图;
             (2)  提出一种新的基于污染变量关系图的高效准确的静态污点分析方法;
             (3)  基于该方法实现了工具 FastDroid,实验表明:FastDroid 能够准确检测 Android 应用中的隐私数据泄露,
                 并且在运行时间上优于当前主流的静态污点分析工具.
             本文第 1 节简要介绍 Android 应用污点分析的相关背景.第 2 节阐述基于污染变量关系图的污点分析方法
         的研究动机,给出污染变量关系图和污染传播规则的定义,并介绍方法的实施步骤.第 3 节详细介绍基于该方法
         的工具实现.第 4 节给出工具的实验和分析结果.第 5 节介绍相关工作.第 6 节总结全文并展望未来工作.

         1    Android 应用污点分析的相关背景

         1.1   污点分析简介
             污点分析是一种信息流分析技术,通过插桩、数据流分析等方法追踪程序中带污点标记的数据的传播以及
   123   124   125   126   127   128   129   130   131   132   133