G.O.S.S.I.P 阅读推荐 2023-12-21 Android中的Functional Bugs

admin 2023年12月22日14:48:36评论31 views字数 2316阅读7分43秒阅读模式

 分享一篇来自华东师范大学发表在ISSTA2023上的论文,文章分析了Android系统中存在的功能性漏洞。作者总共在Android 软件里找到了14个功能性漏洞,其中10个是之前未知的漏洞

1. 简介

Android应用程序是基于图形用户界面(GUI)的互动应用程序。然而开发者却经常在开发时留下GUI上的错误。最近的报告显示,应用用户非常重视用户体验——只有16%的用户会尝试功能失效的应用超过两次。因此,确保应用程序的功能正确性对其成功至关重要。


然而实际上很少工作系统研究functional Bugs的成因(root cause)、特征(symptom)、oracle等等。本文工作RedDriod开源在了

https:// github.com/Android-Functional-bugs-study/home.


2. Overview

G.O.S.S.I.P 阅读推荐 2023-12-21 Android中的Functional Bugs

通过手动分类和查询已经被报出来的functional bugs,作者构建了一个bug dataset并进行分类,对于每一类,作者都构建了一个Oracle,在动态分析过程中,Oracle会指出GUI上可能存在bug的点。


3. Functional Bugs

那么functional bugs有哪些呢?又有什么特征呢?作者创建了一个数据库并做出了总结。

作者通过在google store和github上搜索,共收集了3,186 bug reports,作为数据集合,经过分析作者分类出了14类functional Bugs,包括由于开发者疏忽产生的“general programming bug”以及由于开发者对于Android不理解产生的“Android related error”

G.O.S.S.I.P 阅读推荐 2023-12-21 Android中的Functional Bugs

这里举出几个例子:

1. Missing features 指的是开发者忘记处理了某种stage或者忘记响应某种状态请求

G.O.S.S.I.P 阅读推荐 2023-12-21 Android中的Functional Bugs

2. Android 自带的图片查看软件并不能查看全部图片,因此开发者如果没能处理好这种情况,就会导致程序报错。

G.O.S.S.I.P 阅读推荐 2023-12-21 Android中的Functional Bugs

4. Bug symptoms

下面介绍一下functional Bug出现的特征。通过总结,作者归类出下几种bug类型:

  • Missing UI elements 

  • Redundant UI elements

  • UI distortion

  • Incorrect interaction logic

  • Functionality does not take effect


G.O.S.S.I.P 阅读推荐 2023-12-21 Android中的Functional Bugs

举个例子,例如上文中提到的Functionality does not take effect,表现往往为点击某个条目,然而并没有产生相应的响应。

G.O.S.S.I.P 阅读推荐 2023-12-21 Android中的Functional Bugs

4. Test oracles & other implementations

那么,我们了解了漏洞的类型以及表现形式,如何进行检测呢?看起来似乎每一个漏洞都不一样,尤其是牵涉到UI,不容易进行自动化的检测,下面介绍一下作者的方法:

4.1 App feature agnostic oracle (AFA)

这种Oracle用于检测例如:系统卡死、产生错误(例如网络中断)等等与软件自身特性无关的通用bug

4.2 App feature related oracle (AFR)

这种Oracle用于检测和软件本身有关的通用bug,例如图标是否消失、导航栏是否性能良好等

4.3 App specific feature oracle (ASF)

这种Oracle用于检测和软件本身有关的通用bug,例如AnkiDroid软件中,如果关闭了某个learning card的使用,会导致软件背景颜色发生变化。

经过实验,作者发现66.7% 的 functional bugs只能够通过 app feature related oracle被检测出来

4.4 Differential testing

那么既然大部分functional Bugs都需要与软件本身有关的feature相关的知识,有没有办法获取这些知识并提升Oracle的检测准确度呢?作者采用了Differential testing的方法,也就是通过对于相同软件不同版本的对比,来挖掘bug,经过整合,完成了本文工作RegDroid。

G.O.S.S.I.P 阅读推荐 2023-12-21 Android中的Functional Bugs

RegDroid通过生成随机的GUI(图形用户界面)测试来检测Android应用程序的不同版本之间的UI一致性。

  1. event selector:此模块负责生成随机的GUI测试。它随机选择应用版本A的当前GUI页面ℓ𝐴上的一个可执行的UI小部件w,并根据w的小部件属性(例如,可点击、可编辑、可滚动)生成相应的事件e(例如,点击、编辑、滚动)。然后,这个事件e将分别在版本A版本B上执行。如果发现一致性问题,RegDroid会重新启动应用并再次进行测试。

  2. Oracle checker:这个模块负责进行Oracle检查。它在选定事件e实际执行之前被调用。具体来说,由于UI小部件w存在于应用版本A的当前GUI页面ℓ𝐴上,此模块会检查w是否也存在于应用版本B的对应GUI页面ℓ𝐵上。我如果w在ℓ𝐵上不存在,RegDroid会发现不一致并报告可能的错误。

RegDroid是用Python实现的,并使用uiautomator2来解析UI页面上的UI小部件并发送UI事件。

5.  Bug detection

最终,本文工具总共发现了14个functional bug,其中10个是之前未知的bug

G.O.S.S.I.P 阅读推荐 2023-12-21 Android中的Functional Bugs

[1] “An Empirical Study of Functional Bugs in Android Apps”: https://dl.acm.org/doi/abs/10.1145/3597926.3598138



原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2023-12-21 Android中的Functional Bugs

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月22日14:48:36
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   G.O.S.S.I.P 阅读推荐 2023-12-21 Android中的Functional Bugshttps://cn-sec.com/archives/2326376.html

发表评论

匿名网友 填写信息