文章语言:英文
文章来源:2013年ACM CCS
作者信息:Zhemin Yang 杨珉 Yuan Zhang Guofei Gu(研究领域:网络安全,移动安全,系统安全等等)Ning peng(和蒋旭宪大牛一个学校的,怪不得人家这么厉害看来是有学术积淀的)XiaoYang Wang
文章涉及到的工具:Dexpler,DED
文章中应用的会议以及WorkShop:CCS,S&P,NDSS,USENIX security(如果不知道是什么等级的会议,请猛戳),OSDI,ESEC、SIGSOFT,PLDI,POPL,ACM WiSec,SPSM,ISSTA,FSE
AppIntent:使用了改进的符号执行——(event-spcae constraint)事件空间限制符号执行,有效的减小了搜索空间,通过符号执行产生事件输入和数据输入,这些输入会导致敏感数据的传播,并且使用动态分析平台将Android手机传播的敏感数据中关于隐私泄露的行为进行了有效区分。
Android手机常常存储了很多的个人信息因此吸引了很多恶意软件的开发者在Android的应用程序中嵌入恶意代码窃取敏感数据。根据已知的技术文献,很容易来判断敏感数据是不是在从Android手机中传播出去。但是,敏感数据的传播并不一定就意味着隐私的泄露;一个很好的判定标准就是是否这个传播是用户知道的或者不知道。当这个传播不是用户意图的话,它很有可能是隐私泄露。这问题就是怎么决定一个传播是用户意图。对于这个问题的第一个解决方案,我们呈现了一个新的分析框架AppIntent。对于每一个的数据传播AppIntent都能够有效的提供一系列的GUI操作对应了一系列的事件可以导致数据的传播,来帮助分析人员决定是否数据传播史用户意图的或者也不是。最基本的思想就是使用符号执行来产生前面所提到的一系列的事件,但是简单的符号执行证明是很耗时间的在实际应用当中。在AppIntent当中最主要的创新就是利用唯一的Android执行模型来减少搜索的空间而且不会牺牲代码的覆盖。我们也对AppIntent做了一个评估使用了750个恶意软件和Google Play排名前1000的APP。这个结果显示AppIntent能够有效的帮助区分应用程序到底是不是真的存在隐私泄露。
关键词:Android安全,隐私泄露检测,符号执行
怎样判断智能手机隐私泄露
现在很多工具都只能判断敏感数据传播,但是不能判断是不是这些敏感数据的传播就意味着隐私数据的泄露。并且单纯的敏感数据传播判断的方法误报率很高。研究的目的就是发明一种工具能够区分这些敏感数据的传播那些会造成隐私数据的泄露。
设计一个能够自动分析的工具根据获取的程序的上下文的信息来判断出敏感数据传播中的隐私泄露,这个工具就是AppIntent。AppIntent的框架就是提供一些敏感数据传播的输入,这些输入可能触发敏感数据的传播,通过行为触发的产生来判断敏感数据传播中出现的隐私泄露。
根据这个目的因此想到了符号执行。因为符号执行是一个有效的技术来提取出可行的输入触发程序的行为导致敏感数据的传播得意显现。
但是使用符号执行存在着一些难点:
1、 App的种类很多有着不同的使用目的
2、 现有的符号执行只能针对没有交互的程序(Android的程序基本上都是GUI用户图形交互的)
3、 可能的数据输入使得
4、 符号执行的路径激增,导致符号符号执行时很费时间
1. 传统的符号执行可能陷入无限的搜索空间
图片来源:http://developer.android.com/training/basics/activity-lifecycle/index.html
注意看存在循环
Android的App常常被运行时事件和回调函数所驱使,回调函数决定着App的状态转移,监听器句柄决定着用户交互组件
以Activity的生命周期说明,如图所示,由于存在着不确定性和没有界限的调用顺序如果采用符号执行当执行路径是OnStart()àOnResume()àOnPause()àOnStop()àOnStart
/(OnRestart())时,可能进入无限循环,导致符号执行无法停止。
2. GUI控件的触发有很多的不确定性,可以随时触发,也可能导致符号执行陷入循环
注意:相关工作描述的是前人的研究
1. 使用符号执行为了提高系统系能,前人曾经的做法牺牲代码覆盖率,采用随机策略
2. 假设事件句柄之间是相互独立的
3. 代码插入技术,但是效果不佳
对于路径太多的问题,使用静态分析提取出可能的路径指导符号执行,采用event-space constraints的符号执行
1. 行为触发产生重要的apps输入(数据输入和事件输入)导致敏感数据的传播
2. 保证代码的覆盖率以及低的误报率和漏报率
3. 提供分析人员便于理解的工具让其意识到敏感数据什么时候传播
系统主要的架构分为两个部分:(1)事件空间限制的符号执行(2)动态程序分析平台
第一部分
1. 静态污点分析提取出所有的可能的数据输入和事件输入
2. 提取过滤事件路径,产生事件限制图指导符号执行
第二部分
采用InstrumentationTestRunner作为行为触发的工具一步步模拟被检测的APP的行为
以安卓短信为例分析它由两个Activity(MessagePopup,ComposeMessageActivity)和一个BroadcastReceiver(PushReceiver)组成。
当一条短信来的时候OnReceive()接收短信激活组件,这个时候MessagePopup()组件会弹出来,点击前进按钮会进入到ComposeMessageActivity()这个Activity的组件界面
由此可以得到一条执行的路径:
{OnReceive,i1}⇒{startNewMessagesQuery,i2}⇒{forward,i3}⇒{forward,i4}⇒{sendMessage,i5}⇒{sendMessage,i6}
经过提取可以得到一个基本的事件图:
其中可以吧事件分为两类:
1. 重要事件:
事件句柄至少包含一条数据传播途径的指令,用粗线表示
2. 基本事件
不包含任何可能的路径执行指令,用细线表示
提取出重要事件
算法采用Dijistra算法找到最小生成树。首先是找出重要的事件节点,其次在来找边。根据生命周期的调用图找到重要节点的先行节点,组成边。反复执行这个过程知道再也找不到先行节点为止。
例如,一个Activity发送intent给另一个intent发送方将作为接收方的先行节点。通过上述步骤完成了事件空间图便可以得到过滤之后的图
1. 敏感数据的传播并不意味着隐私数据的泄露,user-intented被视为不是隐私数据的泄露,user-unintented的很大可能就是隐私泄露
2. 研发了event-space constraint 符号执行技术,减少了使用符号执行的事件搜索空间
3. (传说中的行为触发)通过提取出的数据和事件输入在动态程序分析平台上执行,还原出导致敏感数据传播的UI控件操作
【文章涉及论文】
文章涉及论文下载链接:http://pan.baidu.com/s/1gd5hBeN
[符号执行]
[漏洞检测]
[敏感数据传播]
[静态分析]
[动态分析]
[行为触发]
转载请注明出处:http://write.blog.csdn.net/postedit/18683769,谢谢合作~^^
文章下载