freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

针对VR头戴显示器的侧信道攻击
2023-06-28 19:31:16
所属地 海外

摘要

随着增强现实/虚拟现实(AR/VR)系统的普及,安全和隐私问题引起了广泛关注。本文论证了AR/VR系统容易受到基于软件的侧信道攻击。通过恶意应用程序,攻击者可以在没有特殊权限的情况下推断出用户交互的隐私信息。具体而言,研究人员展示了三种攻击方法,分别用于获取目标用户的手势、语音命令和虚拟键盘上的打字信息,这些攻击的准确率超过90%。

0x01 简介

AR/VR技术支持一系列全新的应用,用户可以通过头戴式显示器观看虚拟对象和场景。这些信息通过用户的感官直接感知,使设备能够通过叠加的虚拟对象(增强现实)来丰富用户对现实世界的感知,甚至在某些情况下完全替代现实世界(虚拟现实)。AR和VR技术为游戏、虚拟探索、培训等领域带来了令人兴奋的新应用。市场上有多种商用头显设备(例如Microsoft Hololens 2、Meta Quest 2),并且有越来越多的应用程序和内容可供用户使用。

AR/VR系统中的安全和隐私问题越来越受到人们的关注。这个应用程序领域面临着许多独特的挑战,因为它位于物理世界和数字世界的交汇点。AR/VR应用程序增强了物理世界,并可能暴露与用户活动、用户与系统交互或环境本身有关的敏感信息。这些应用程序可以从应用商店下载并在头戴式显示器上运行。随着AR/VR应用程序的迅速增长,AR/VR平台正在不断发展以支持多个并发应用程序的操作,每个应用程序都提供用户可见的不同服务。例如,用户可以与远程用户在3D环境中开会,并在虚拟白板上做笔记。因此,了解新兴多应用场景中面临的威胁模型对于指导支持系统和软件中的缓解措施和最佳实践的开发至关重要。

在本文中探讨了侧信道攻击是否是影响运行多个并发应用程序的AR/VR头显设备的一种可行的威胁向量。威胁模型假设没有特殊权限的恶意应用程序试图推断关于其他同时运行的应用程序或用户与设备交互的敏感信息。此外,还展示了AR/VR引擎公开了性能计数器和其他信息,用户级应用程序无需特殊权限即可访问这些信息。这些性能计数器的变化方式与敏感信息相关,使得攻击者能够从计数器的值中推断出这些敏感信息。举例来说,当其他应用程序执行计算要求较高的操作(例如渲染虚拟手势或解析有关环境的新信息)时,设备的帧率可能会下降。这种变化可以被恶意程序用来追踪其他应用程序的行为。

尽管类似的侧信道攻击已经在中央处理单元(CPU)和图形处理单元(GPU)的背景下得到证实,但是AR/VR应用程序和系统在工作负载的性质以及头显设备上的硬件和运行时特征方面存在显著差异。本文提出的侧信道攻击方法可以通过跟踪共享渲染引擎提供的渲染性能计数器来推断攻击目标的手势和语音命令,另一种攻击方法则可以监视目标用户从虚拟键盘输入的内容。

当用户与混合现实(MR)设备进行交互或环境发生变化时,这些交互会触发处理任务,从而在资源和渲染相关的性能计数器上留下痕迹。侧信道攻击通过寻找这些痕迹来推断有关其他应用程序、用户交互或环境变化的敏感信息。这些攻击揭示了AR/VR设备上存在许多潜在的信息泄露源。

0x02 背景

image

设备和开发人员工具:本研究分析了Hololens 2和Meta Quest 2,并研究了它们在设备硬件和软件开发工具方面的共同点。其他AR/VR设备如Magic Leap和HTC Vive也共享类似的架构。上图展示了AR/VR耳机的总体软硬件架构。该架构由四个主要子系统组成,从底层开始:设备硬件、底层软件开发套件(SDK)、高层SDK和开发者工具。

AR/VR设备的硬件组件包括计算引擎(如CPU和GPU)和传感单元(如惯性测量单元(IMU)、摄像头和麦克风)。每个AR/VR设备都有制造商特定的低级SDK来支持,该SDK读取和处理设备特定的传感器数据,并将结果提供给高级SDK。例如,Hololens由Windows XR SDK支持,而Meta Quest使用Oculus XR SDK。低级SDK还利用计算引擎来加速某些传感器处理任务。例如,Hololens 2具有全息处理单元(HPU)2.0,它为计算机视觉任务(如手势跟踪和眼动跟踪)提供硬件加速支持。

在低级SDK之上,高级SDK定义了标准API,以在受支持的设备上提供常见的AR/VR相关功能,例如平面检测、光线投射以及2D和3D对象跟踪。两个主要的高级SDK选项是Unity XR SDK或Unreal XR SDK。最后,在架构的顶部,编写AR/VR应用程序的开发人员可以访问两组主要功能:人机交互和环境理解。在人机交互方面,AR/VR应用程序可以通过手部跟踪、眼部跟踪和语音命令来理解用户的指令。在环境理解方面,支持空间映射和场景理解。

综上所述,AR/VR设备具有特定的低级SDK,针对其硬件进行定制,这些SDK为高级SDK提供了一组通用的AR/VR功能,开发人员可以在他们的应用程序中利用这些功能。

性能计数器:高高级SDK公开了一些特定功能,包括性能计数器和内存分配API。这些功能可以帮助开发人员跟踪和优化正在运行的应用程序的性能。这些计数器和API在软件级别上跟踪应用程序的性能,并将其从特定硬件中抽象出来。在本研究中,我们特别关注与渲染和线程时间相关的性能计数器,因为它们在AR/VR设备中非常常见,无论硬件功能如何。一些示例包括绘制调用次数和顶点计数,它们反映了在显示器上渲染的2D/3D对象的图形复杂性。当攻击目标与设备进行交互或环境发生变化时,低级SDK会执行相应的处理,其结果会传播到高级SDK,并影响那里的性能计数器。攻击者利用这些计数器来发起攻击。

应用程序权限:许多流行的增强现实设备,如Microsoft Hololens 2、Meta Quest 2和Magic Leap,支持同时运行多个应用程序,从而使这些应用程序能够共同丰富用户的混合现实体验。然而,在AR/VR平台中,隔离这些多个应用程序面临着许多挑战:每个应用程序可能需要获取有关渲染环境的信息,并且还可能为用户提供与环境进行交互的机会。因此,即使应用程序可能被隔离在用户的视野/显示范围内,如何在不影响可用性的情况下设置权限仍然是一个问题。因此,在测试的头戴式显示器设备上观察到,后台运行的应用程序可以访问高级SDK中的各种API,例如共享的平面检测。这种访问是必要的,因为不同的应用程序可能需要根据用户正在查看的位置的变化或响应用户的交互来更新其显示的内容。尽管存在一些粗粒度的权限控制(例如,只有前台应用程序可以访问手部跟踪API),但大多数其他传感器数据和性能计数器在测试的头戴式显示器设备上无法进行访问控制。

0x03 攻击模型和实验

A. 威胁模型

假设恶意程序正在后台运行,具有标准应用程序级权限。该恶意程序会定期探测硬件或运行时系统中可用的某些性能计数器,并通过分析结果推断出其他并发应用程序、用户或环境的活动。AR/VR头显设备和应用程序的独特之处在于它们连接了物理世界,并通过传感器感知、增强或者在虚拟现实中完全替代物理世界。因此,这些应用程序为攻击者提供了一个丰富的攻击目标环境。

image

如上图所示,设想了恶意程序监视用户交互的攻击场景。在AR/VR应用程序中,用户处于物理世界和数字世界的交汇处。用户的交互行为可以为攻击者提供有价值的信息,使其能够跟踪用户的活动,甚至推断密码或凭据。常见的用户交互界面包括手势(例如,通过空中敲击来选择UI元素、捏合和抓取来移动虚拟对象)以及非手部的用户交互(例如,语音命令、眼球注视)。由于跟踪手部/头部/眼睛的动作和识别预定义的手势/语音模式,以及处理渲染虚拟手部或注视指针的计算,用户的交互行为可能会导致性能计数器发生变化。

B. 泄露信道

Unity和Unreal Engine是领先的AR/VR应用程序开发平台,Hololens和Meta Quest头显设备都支持它们。它们提供资源监控API,允许开发人员访问各种性能统计数据(性能计数器),以帮助提高应用程序的性能。这些值会随着每一帧的更新而变化。所有应用程序(包括恶意应用程序)都可以访问这些API,即使它们在后台运行,也只需要用户级别的权限。通过利用这些API来获取侧信道信息,攻击者能够执行攻击并获取敏感信息。下面将描述这些API。

内存分配API:在AR/VR设备上启动应用程序后,系统根据可见对象的大小和内容为其分配内存。在Unity中,可以使用AppMemoryUsage来跟踪应用程序的内存使用情况,包括当前内存使用量、内存使用峰值和内存使用限制。在Unreal Engine中,渲染硬件接口(RHI)提供了两个API,即CurrentRenderTargetMemorySize和CurrentTextureMemorySize,用于帮助开发人员了解渲染目标和纹理的内存分配情况。

尽管每个应用程序只能访问与其自身使用情况相对应的内存分配信息,但需要注意这些数字会受到用户输入或其他应用程序的竞争影响。例如,当触发内置语音命令时,观察到的恶意程序的内存使用量会增加。可以推测这是因为语音命令使用了共享缓冲区,而这些缓冲区也被视为恶意程序的一部分,从而导致内存使用量增加。相反地,当并发应用程序启动时,由于资源竞争对物理内存造成了压力,恶意程序的常驻内存使用量会减少。通过观察这些与竞争相关的模式,攻击者可以推断其他并发应用程序的行为。

image

性能计数器:性能计数器由 Unity 和 Unreal XR 高级 SDK 提供。 上表总结了可用的性能计数器,分为如下三组。

帧速率:保持高帧速率对于避免引起AR/VR不适感非常重要。为此,Unity提供了Frame Timing Manager API,用于跟踪CPU帧速率和GPU帧速率。CPU帧速率是通过计算从帧开始到主线程处理下一帧之间的时间来确定的。GPU帧速率反映了GPU从提交任务到完成任务之间的工作时间。这两个计数器可以帮助开发人员确定AR/VR应用程序的性能瓶颈所在。如果发现CPU限制,则可以通过降低某些游戏对象逻辑的更新频率来减轻CPU负载。如果帧速率受GPU限制,开发人员可以降低渲染分辨率以减少GPU的工作量。

线程:在AR/VR应用程序中广泛使用多线程,以支持并行处理多个渲染线程。然而,线程同步不良可能会导致资源浪费,破坏AR/VR设备的沉浸体验。因此,线程相关的计数器通过提供并行线程的计时信息来帮助开发人员优化性能。例如,Unreal XR SDK提供渲染线程时间和游戏线程时间。这两个线程通常并行运行。通过跟踪这两个线程的时序信息,开发人员可以优化游戏线程和渲染线程之间的同步,从而提高应用程序的性能。

渲染任务:渲染相关的计数器反映了在AR/VR显示器上呈现的2D/3D对象的复杂性。例如,顶点计数表示当前2D/3D场景中的顶点数量,而图元则表示预定义的3D对象(如立方体、球体)的数量。通过使用与渲染相关的计数器,开发人员可以避免使用过多或过复杂的对象,从而提高应用程序的帧速率。

尽管每个应用程序只能访问自身的性能计数器,但需要注意这些数值可能会受到其他应用程序或用户交互的影响,从而产生侧信道攻击的可能性。一般而言,与图形渲染相关的计数器在用户行为生成新的显示元素时会显示出增加的负载(例如,在屏幕上进行手势操作时,顶点计数会增加),而非图形相关的计数器则在非渲染任务期间显示出增加的负载(例如,在解析语音命令期间,AppMemory Usage 增加,处理现实环境变化时,CPU 帧速率降低)。

C. 实验设置

研究选择了两种设备进行攻击,分别是基于Windows的AR头显设备Microsoft Hololens 2和基于Android的VR头显设备Meta Quest 2。选择这些设备的原因是它们代表了AR和VR领域最具有代表性的头显设备。此外,这两种设备使用了不同的底层SDK,Hololens基于Windows XR SDK,而Quest基于Oculus XR SDK,这旨在证明侧信道攻击通常适用于不同的AR/VR系统。恶意应用程序是使用Unity版本2020.3.16f1和Unreal Engine版本4.27.2开发的。恶意程序作为普通用户空间应用程序运行,无需特殊权限(如研究模式)即可执行操作。

数据采集:在实验中,研究人员从大学社区招募了十名志愿者,他们的年龄、身高、体重和性别各不相同。在进行数据收集实验之前,志愿者接受了关于Hololens 2和Meta Quest 2交互模型的简要培训课程。每位志愿者收集了包含五种不同攻击场景的数据。每次攻击的数据收集大约需要30分钟的时间。性能计数器的读数以60 Hz的频率记录。所有收集到的数据都可以被具有用户级权限的恶意后台程序访问。

为了证明跨SDK攻击的普遍性,在Unity和Unreal上进行了一些攻击测试(AR/VR设备的两个主要SDK)。三种攻击可能针对任意一个SDK进行。具体来说,攻击 III(按键监控)使用了Unreal,而所有其他攻击针对的是Unity应用程序。每个SDK提供的计数器集是不同的。例如,在攻击 I(手势推断)中,针对Unity应用程序收集了五个信道的泄漏数据,包括CPU帧率、GPU帧率、绘制调用次数、顶点数和AppMemoryUsage。志愿者在每次试验中执行每个手势五次。攻击 II(语音命令推理)也针对Unity,并收集相同的性能计数器,志愿者每次试验触发每个语音命令五次。攻击3针对的是Unreal。它收集了来自Unreal Engine RHI的帧时间、游戏线程时间、渲染线程时间、绘制调用次数和图元计数器数。志愿者被要求每次键入数字(0-9)十次。

D. 攻击流程

攻击流程如下图,将数据分成80%的训练集和20%的测试集。其中80%的数据用于特征工程和模型训练,剩余的20%用于评估所有攻击。

image

特征工程:在AR/VR设备上记录恶意应用程序的侧信道泄露后,下一步是从时间序列数据中提取有用的特征。为此,使用了tsfresh这个Python库,它可以自动生成数百个统计特征,针对时间序列数据。使用Benjamini-Yekutieli程序对所有特征进行排序,并根据p值过滤出与目标相关性较强的特征。

分类/回归: 使用提取的特征来训练几个标准分类器或回归器候选者,包括K最近邻(KNN)、决策树(DT)、随机森林(RF)、轻梯度提升机(LGBM,Light Gradient Boosting Machine)和基于加权多数规则投票(Voting)的分类器。投票集成方法将决策树和随机森林作为候选者,并将它们的权重设置为相同。分类器和回归器的超参数设置分别列于下表中。 为了评估分类器的性能,计算F1 Score (F1)、精度 (Prec) 和召回率 (Rec)。此外,为了选择最佳回归器,计算平均绝对误差 (MAE)。

image

E. 攻击场景:用户交互

在攻击场景中,假设恶意应用程序在后台运行以监视性能计数器和内存分配 API,而攻击目标用户正在与AR/VR设备交互。使用性能计数器和内存分配 API 来推断手势(系统命令和击键)和语音输入行为。

0X04 攻击 I:手势推断

用户可以直接或通过手势与环境中的数字制品(例如全息图)进行交互。首先,描述Hololens 2和Meta Quest 2上的手势输入,然后描述攻击和评估。

Hololens 2 用户手势:攻击者重点推关注 Hololens 2 上的五种基本系统级手势,这些手势是大多数应用程序标准交互界面的一部分。第一个手势是“触摸”,即用户直接用食指触摸全息内容。 用户的食指上将显示一个白色的触摸光标,这有助于用户精确地触摸目标并与之交互。 其次是隔空敲击手势,允许用户借助从用户手掌发出的手射线与远处的全息图进行交互,如下图(a)所示。 为了选择手部射线指向的远处全息图,用户需要将拇指和食指捏在一起,然后快速松开。 第三个交互是“开始”菜单的手势,用于打开“开始”菜单。 为了执行此操作,用户将手掌朝外并指向她的手腕内侧,如下图(b)所示。 第四个和第五个手势是放大和缩小手势,可以通过抓住和拉伸全息图的角来调整全息图的大小。

image

Meta Quest 2 用户手势:Meta Quest 2的用户手势与Hololens 2类似,用户可以使用手势与3D对象进行交互。以下是五种不同手势:手指捏合、手掌捏合、触摸、放大和缩放。手指捏合需要用户将拇指和食指并拢才能触发开始菜单。手掌捏合类似于Hololens上的Air tap,允许用户通过使用拇指点击全息图并捏合食指来选择远处的全息图。触摸、放大和缩小手势与Hololens 2上的手势相同。这些手势引入了不同的渲染竞争模式,在后台运行的恶意程序中会引起不同的渲染任务。具体而言,当用户使用手势与全息图交互时,会根据正在执行的手势将各种渲染任务分配给设备的CPU。这些渲染工作负载通过渲染性能计数器留下可见的签名,例如顶点计数揭示了提交给图形API进行渲染的顶点数量。

image

上图显示了渲染性能计数器顶点计数的轨迹,说明了执行"开始"菜单、触摸和隔空敲击手势时的独特特征。在发送这三个手势输入之前,顶点计数的值保持在大约1000左右的稳定状态。然而,当用户开始通过手势与设备进行交互时,AR/VR设备需要将手势渲染到沉浸式世界中,导致顶点数突然增加。此外,由于"触摸"和"隔空敲击"涉及与3D对象的交互,而"开始"菜单则不涉及,因此"开始"菜单的顶点数峰值要低于其他两种手势。此外,触摸手势生成的顶点比空中敲击手势更多,这是因为触摸手势直接与对象进行交互,而空中敲击手势是远程交互。

image

特征工程和分类:上表分别总结了 Hololens 2 和 Meta Quest 2 上用于分类手势的前 10 个特征。 下表定义了这些统计数据。 Hololens 2的前三个特征分别是Benford Correlation(顶点数)、Approximate Entropy(CPU帧率)和Approximation Entropy(GPU帧率)。而对于Quest 2,前三个特征是Sum Values、Mean和Root Mean Square(AppMemoryUsage)。Quest 2的所有前三个特征都是从App MemoryUsage计数器生成的。这可能是因为Hololens和Quest的硬件配置不同。例如,Quest 2具有用于加速渲染任务的CPU和GPU,而Hololens 2则具有额外的HPU来协助处理渲染任务。当在Quest 2上触发不同手势时,AppMemoryUsage比在 Hololens 2 上更为敏感。

image

下表显示了使用先前选择的特征的每个分类器的性能结果,根据数据发现基于投票的分类器在 Hololens 2 上的手势推断准确率达到了 89% 以上。同样,随机森林分类器在 Quest 2 上的手势推断的所有候选分类器中获得了最佳性能,F1分数、精度和召回率的性能超过93%。

image

抗噪鲁棒性:由于前面的实验是在相对安静的环境中进行测试的,因此可能存在其他应用程序同时在同一台AR/VR设备上运行,这可能会对侧信道泄露数据的质量造成影响。为了评估侧信道的质量,通常会使用信噪比(SNR)进行检查。SNR的计算公式为:SNR = Var(Signal) / Var(Noise)。

具体来说,收集了五个CPU帧速率轨迹,并计算了在后台运行的其他应用程序(Microsoft Store、Microsoft Edge和3D Viewer)引入的平均信噪比(SNR)。在没有干扰的情况下,针对"开始"菜单手势,测得的SNR为10.51,这表明信道质量较高。即使在存在噪声的情况下,计算得到的SNR降至6.90,但仍然处于较高的水平,表明对噪声具有一定的抵抗能力,大于1的SNR值被认为是可接受的。

0X05 攻击 II:语音命令推理

用户还可以通过语音输入命令与头显设备进行通信。与前一节类似,攻击 II 可以推断出用户在Quest和Hololens头显设备上发出的语音命令。下面是每个设备的内置语音命令的简要描述:

Hololens 2 内置语音命令:攻击的目标是发现五个Hololens特定的命令,包括:"Go to Start"(去开始菜单)、"Take a picture"(拍照)、"Start/stop recording"(开始/停止录音)、"Turn up/down the volume"(打开/关闭音量)和"Show/hide hand ray"(显示/隐藏手部光线)。

Meta Quest 2 内置语音命令:要启动语音命令,用户需要双击右侧控制器上的主页按钮。攻击的目标是推断出五个Meta内置的语音命令,包括:"Take a photo"(拍照)、"Start/stop recording"(开始/停止录制)、"Turn up/down volume"(调高/调低音量)、"Reset view"(重置视图)和"Start casting"(开始投影)。

image

泄露信道:不同的语音命令会导致恶意程序使用不同的内存,如上图所示。 内存使用量增加表明语音命令被触发。 推测这是因为触发的语音命令可能被分配到与后台恶意程序共享的缓冲区。 此外,不同语音命令的峰值也不同:“开始/停止录音”最高,约为 780 MB,而“去开始菜单”仅触发 610 MB。

image

特征工程和分类:使用相同的方法来提取Hololens 2 和 Meta Quest 2 的的显着时间序列特征,如上表所示,下表则列出了两种设备上的攻击准确度。 决策树分类器可以成功推断出 Hololens 特定的语音命令,F-1 分数为 93.7%。通过使用投票分类器,可以在 Meta Quest 2 上高精度地识别正确的语音命令类型(F-1 分数为 93.9%)。

image

0x06 攻击 III:键盘监控

攻击III的目标是监控虚拟键盘上的击键行为。当用户在沉浸式环境中使用虚拟键盘输入按键时,需要以不同的方式移动手和手指来定位每个按键,并进行击键操作。这种移动方式会为每个按键的击键行为生成可区分的侧信道泄露模式。

image

攻击场景:上图说明了攻击概述。 具体过程如下:目标用户切换到一个新的前台应用程序(1)并开始通过系统键盘输入一些敏感文本(2)。同时,恶意应用程序在后台记录性能计数器的数据(3)。用户通过手势直接点击和捏合虚拟键盘上的按键来输入敏感的按键(4)。为了概念验证,重点关注虚拟键盘上的十个数字(0-9)。这些数字可能包含敏感信息,例如用于在线支付的信用卡号。下图显示了 Hololens 2 上的恶意程序收集的三个不同数字输入的示例,每个数字都有独特的模式。攻击不需要对无线基础设施进行任何物理访问。

image

泄露信道:上图显示了这两个线程的三位数字(0、2 和 9)的计数器值。 由于手部动作的不同,这三个数字都具有不同的模式。计数游戏线程时间和渲染线程时间用于跟踪使用该引擎的应用程序中存在的两个主线程的执行时间。游戏线程负责大部分应用程序逻辑,而渲染线程则用于渲染新帧。研究人员注意到游戏线程时间计数器增加,而渲染线程时间计数器同时减少。这种异常行为模式的一个可能解释是,当AR/VR设备检测到触摸手势时,它会消耗一些资源来持续跟踪手部运动。由于游戏线程时间反映了恶意应用程序逻辑所使用的时间,它可能会被手动跟踪任务抢占。此外,恶意应用程序的渲染线程可能会由于资源争用而跳过更新。结果,游戏线程时间增加,而渲染时间减少。

image

特征工程和分类:上表总结了两种 AR/VR 设备的性能计数器,结果如下表所示,投票方法在 Hololens 2 上表现最佳,F-1 得分约为 91%,LightGBM 分类器在 Quest 2 上达到 93.8%。

image

0x07 结论

本文对AR/VR设备上的侧信道攻击进行了分析,展示了针对用户交互的端到端攻击,包括手势或语音命令作为输入以及虚拟键盘击键监控。该研究揭示了AR/VR系统存在的安全隐患,研究人员已经证明攻击者可以通过恶意程序获取用户的隐私信息。开发人员和用户都需要密切关注这一问题,并采取适当的措施来保护用户的隐私。

研究由加州大学的学者完成,参考链接: https://www.usenix.org/conference/usenixsecurity23/presentation/zhang-yicheng

# 数据泄露 # 可穿戴设备 # 虚拟现实 # 侧信道攻击 # VR技术
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录