G.O.S.S.I.P 阅读推荐 2023-10-30 手机农场的虚拟化

admin 2023年10月31日08:55:36评论38 views字数 2292阅读7分38秒阅读模式

G.O.S.S.I.P 阅读推荐 2023-10-30 手机农场的虚拟化

2019年,知名媒体VICE上发表了一篇文章America’s DIY Phone Farmers ( https://www.vice.com/en/article/d3naek/how-to-make-a-phone-farm ),介绍了生活在水深火热中的美国人民是如何依赖许多台手机来赚取微薄收入维持温饱。对此我们表示同情和理解,解放全世界人民是共产主义的宗旨。今天我们就要介绍一篇由中美研究人员以及字节跳动的工程师共同完成的MobiCom 2023论文Virtual Device Farms for Mobile App Testing at Scale,将手机农场这项业务从老百姓手中解放出来:

G.O.S.S.I.P 阅读推荐 2023-10-30 手机农场的虚拟化

很显然,如果都用题图上面那种实物手机设备来做农场,成本肯定太高,假设能有一些虚拟化的模拟器也能做到类似的效果,那云计算厂商不要太开心了~ 不过实体设备有很多不可比拟的优势,例如不同设备之间的差异性,这本来就是开发者希望看到的特点,毕竟移动生态特别是Android生态里面碎片化太严重,需要考虑不同设备上运行的兼容性。

为了弄清在APP测试的过程中,使用虚拟设备和使用真实设备之间到底存在多大的差异性,以及是否能够通过精心的处理来(一定程度)抹平这些差异性,研究人员分析了抖音等10个用户数都超过五百万的热门APP,对它们的103个不同版本进行了测试——既使用虚拟设备也使用真实设备,然后对测试的结果进行了详细对比。结果究竟如何,请继续往下看。

G.O.S.S.I.P 阅读推荐 2023-10-30 手机农场的虚拟化

作者首先介绍,在2019年,抖音花了超过100万美元来建立了一个真实的手机农场,而且这个农场里面的设备平均寿命都不长,每年还要再花60万美元来更新。很显然,这么多钱拿来资助研究人员是一笔合算的买卖,虚拟设备要是能取代真实设备,资本家又要笑哈哈。

果然,资本家的狠毒心肠远见卓识起到了效果,到了2021年,抖音建立了一个MATRIX版本的虚拟设备手机农场,里面有5918台不同的虚拟设备(运行在395台ARM CPU的服务器上)。借助 Cuttlefish Virtual Android Devices(新一代的Android模拟器,可以参考 https://source.android.google.cn/docs/setup/create/cuttlefish?hl=en ),这些虚拟设备能够模拟不同的特性,而且研究人员想办法还给它们装上了尽可能多厂商的vendor APP(当然,有些厂商的vendor APP装不上也没办法),显得更加真实。

G.O.S.S.I.P 阅读推荐 2023-10-30 手机农场的虚拟化

当然,建立虚拟农场的目的并不是完全取代真实手机农场,上图展示了作者的思路:首先用虚拟农场来执行主要的测试任务,先把那些功能性和逻辑性的bug都测出来,最后再花一点点时间把APP放到真实硬件设备上去看看一些和硬件相关的bug是否存在就好了。这样,在一台物理设备10个月的宝贵生命周期中,可以尽可能多的物尽其用,好钢用在刀刃上。

有了理论支持,接下来就是实验测试,在三个月的测试中,在虚拟设备和真实设备上,作者总共捕获了805423个错误,而其中390286个是在真实设备上发现的,其余的415137个出现在虚拟设备上,这其中,仅有2.45%的错误是硬件相关的(例如和Audio或者GPU相关),其余92.64%是APP相关错误,4.91%是系统组件错误。很明显,这些实验数据支撑了前面提出的理论设想,同时作者经过测试记录,统计了(在虚拟设备上)最常出现的bug,如下表所示,大部分都是我们在Java开发中常见的功能性bug:

G.O.S.S.I.P 阅读推荐 2023-10-30 手机农场的虚拟化

作者还对390286个在真实设备上发现的错误进行了记录,并且检查它们在虚拟设备上出现的比例。结果表明,有92.4%的错误完全可以在虚拟设备上复现。反过来,在虚拟设备上出现的错误中,仅有1.8%的错误是没有在真实设备上出现过的(权且可认为这些是false positive)。针对不同的设备,作者还进行了详细的precision/recall分析,而我锤科技贡献了最与众不同的表现(见下表)。

G.O.S.S.I.P 阅读推荐 2023-10-30 手机农场的虚拟化

对于虚拟设备上无法发现的错误(权且认为是false negative),作者进行了分析,然后指出这些都是系统级代码的问题,如果仅仅是APP测试,虚拟设备和真实设备之间差别不大。

G.O.S.S.I.P 阅读推荐 2023-10-30 手机农场的虚拟化

对模拟器而言,最容易产生false positive的是它的图形显示子系统,由于和真实设备之间的显示渲染还是存在一定的差别,作者指出这是由于模拟器host主机上的GPU和真实手机设备上的GPU存在的差异导致。

G.O.S.S.I.P 阅读推荐 2023-10-30 手机农场的虚拟化

经过上面的测试,作者进一步总结出要得到精确的测试结果,就需要注意如下三点:

  1. 让模拟器的host环境的图形渲染环境支持更多的Android特定格式的输出;

  2. 调整模拟器中系统的后台进程管理策略(杀掉后台进程的时候,要一次性把那些流氓APP的多个进程全部干掉);

  3. 对于真实设备中那些系统级代码的问题,由于缺乏root支持,没法去patch系统的代码,就得在APP进程空间内部自己调用mprotect去动态patch加载到内存中的系统级代码,看看问题是否还存在。

在考虑了这些因素后,作者重新进行了测试,发现效果确实变好了许多(如下图):

G.O.S.S.I.P 阅读推荐 2023-10-30 手机农场的虚拟化

论文的第七章就开始给作者自己的这套方法论打广告了,还学习流行术语,发明了一个新的名词——Virtual Devices as a Service(VDaaS),听上去怎么有点像天行者卢克的爸爸(误)。


论文:Virtual Device Farms for Mobile App Testing at Scale (thucloud.com)


原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2023-10-30 手机农场的虚拟化

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年10月31日08:55:36
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   G.O.S.S.I.P 阅读推荐 2023-10-30 手机农场的虚拟化http://cn-sec.com/archives/2161186.html

发表评论

匿名网友 填写信息