0x01 Introduction
虚拟现实 (VR) 已进入人们的生活。 虽然围绕 VR 和特别是沉浸式 VR 的兴奋不断增加,但必须关注这些平台的安全性。 虽然对于安全研究人员来说,沉浸式 VR 需要安全是显而易见的,但在探索沉浸式对人的影响时,先前的工作并没有以系统的方式对其进行检查。 本文工作不仅创造和假设潜在的 VR 攻击,而且还实施它们。 此外,通过一项人类参与者欺骗研究说明,确实能够在物理空间中将 VR 用户移动到攻击者喜欢的位置,而无需他们的知识或同意。 希望这项工作能促进该领域未来的研究,尤其是因为沉浸式 VR 对其用户具有心理和生理影响。
VR 正迅速成为一种家居用品,为各种应用提供平台。目前,虚拟现实在游戏、社交、康复和职业培训中得到了广泛的应用,但还有许多其他应用。 VR 技术已经以可承受的价格变得更容易获得,但其效用尚未完全实现。人们预计 VR 将变得无处不在。由于图形技术、移动 VR 的改进,VR 巩固了其在消费市场的地位。
2017年,国际数据合作组织估计VR设备投资114亿美元,预测未来四年每年增加 100% 的支出。推动 VR 市场增长的两个关键因素是消费者对沉浸式的渴望和 3D 用户界面的新颖性。诸如 Google Cardboard 之类的小型便携式 VR 实现为兼容的智能手机提供了经济实惠的 VR 环境。一个简单的硬纸板VR可以以大约 15 美元的价格购买,以容纳用户的手机。作为 VR 系统,使用谷歌软件的手机将呈现两个立体视图,便于携带和使用。移动 VR 的其他选择包括谷歌 Daydream 和三星的 GearVR,这是最受欢迎的,2016 年售出 451 万台。包括运动控制器和红外跟踪等功能的完全沉浸式系统也越来越受欢迎,其中最常见的是 Playstation VR (PSVR)、Oculus Rift 和 HTC Vive。这些系统完全身临其境的特性提供了独特的体验。所有 VR 体验的共同点是它们能够创建虚拟环境 (VE)。
0x02 Background
A.虚拟现实组件
由于完全沉浸式的特点,本文工作重点是沉浸式 VR 系统; HTC Vive 和 Oculus Rift。这些系统通过复杂的跟踪系统提供逼真的虚拟体验,允许在 VE 中实时复制用户的动作。 Oculus Rift 头戴式设备 (HMD) 有一系列发光二极管 (LED),由一个称为Constellation跟踪系统的小型相机跟踪。这是由相邻现实跟踪器 (ART) 补充的,它具有惯性测量单元 (IMU)、磁力计、加速度计和陀螺仪。 HTC Vive 通过将跟踪传感器放置在头显上并从基站或Lighthouse发射红外 (IR) 光束来反转这些角色。Lighthouse以同步脉冲开始跟踪周期,然后是两次垂直的 IR 扫描。传感器测量脉冲和扫描之间的时间,以确定它们与Lighthouse的角度。 Vive 还包含一个 IMU,以填补由于障碍物造成的跟踪空白。
跟踪技术的进步带来了房间规模的 VR 体验。房间规模为体验增加了另一个维度,允许 VR 用户在游乐区自由走动。由于玩家的视野完全被HMD封装,所以必须有保护措施来保护玩家免受障碍物(墙壁)的影响。两个系统都实现了类似的解决方案,涉及用户在使用控制器玩游戏之前跟踪房间的边界。 Vive 防碰撞保护被称为 Chaperone,是概念验证攻击的目标,而 Oculus Rift 使用术语 Guardian。人们可以将这些视为 VR 假半透明墙,当用户接近真实墙时,它们会在 VR 体验中出现。
B.OpenVR:攻击层
OpenVR 由 Valve Software 为 SteamVR 设备开发,旨在让开发人员无需依赖供应商特定的软件开发工具包 (SDK) 即可设计应用程序。这是通过提供虚拟功能来实现的,其中兼容的 SDK 可以与初始化的系统相匹配。下图显示了 OpenVR 如何充当 Oculus Rift 的包装器,以允许开发人员在 VR 系统之间实现兼容性。尽管目前分发仅限于 HTC Vive 和 Oculus Rift,但在撰写本文时,微软还宣布他们的 VR 耳机将与 Steam 兼容,这意味着它们可能会适用于 OpenVR,因为 Steam 基于开放式虚拟现实。 OpenVR 中发现的漏洞可能会影响所有兼容设备。本研究中描述的攻击是在 OpenVR软件接口级别实施的;尽管怀疑硬件层和特定应用程序存在其他安全漏洞,但针对 OpenVR 提供了广泛的攻击面。
SteamVR 是管理 VR 硬件并提供启动应用程序界面的应用程序。 HTC Vive 很大程度上依赖于 SteamVR 提供的服务,例如 Chaperone。 Steam 通过充当 Oculus Rift Manager 的包装器为 Oculus Rift 提供兼容性。这在避免冲突的情况下提供了服务冗余。 Oculus Rift Manager 专门提供的服务不是概念验证攻击的目标,但 Guardian 和 Oculus Manager 的功能非常相似,需要同等的安全评估。在本研究中,所有对 Chaperone 的引用都专门针对 SteamVR 生成的防撞系统。
0x03 Apparatus
本节概述了在下表中测试使用的系统和 VR 设备。重要的是要注意这些是现成的设备,提供了详细的细节。所有需要进行这项工作的是一台游戏电脑、HTC Vive 和 Oculus Rift,也构建了自己的工具。
0x04 Discovery and Attack Implementation
虚拟现实系统的安全分析有几个主要目标,研究试图回答以下问题:
· VR 用户的安全会受到威胁吗?
· VR 用户会迷失方向吗?
· VR用户可以被操纵吗?
为了初步了解系统,使用 SteamVR 生成了系统报告。这产生了边界数据的位置、默认和当前系统设置、可执行路径位置以及许多其他功能。以纯文本形式存储,没有进行完整性检查,这被认为是一个漏洞。为了完整性,对 Steam、SteamVR 和应用程序工件进行了手动检查。通过检查 API 文档来熟悉 OpenVR。小规模的开发工作导致发现缺乏对 VR 资源的访问控制。发现未经审查的应用程序能够访问和修改 VE。无法监管和验证对 VR 系统的访问也被认为是一个漏洞。
A.对抗模型
在研究和发现阶段,采用了强大的对抗模型;不限制攻击者的能力。这样做是为了促进强大的安全分析。由于范围仅限于 VR 系统及其应用程序,假设攻击者以某种方式破坏了目标机器,允许用户之后使用。另一方面,对抗性目标是由假设指导的,特别是与沉浸式 VR 相关的假设。与假设一致并表明攻击成功,强加了其他几个次要对抗性目标:
· 目标 VR 用户不会立即有迹象表明他们的隐私受到损害。
· 攻击不会中断正在进行的 VR 应用程序或表明发生了恶意活动,除非这是攻击的目标。
· VR 用户无需采取任何行动即可发起攻击。
对攻击实施的发现和要求(以下部分)允许进一步完善对抗性要求。修改 VE 的攻击需要能够启动 OpenVR 应用程序的实例,或者对 VR 系统配置文件具有有意义的写入权限。配置文件可用性本身不是必需的,但会降低攻击的复杂性并提供其他几个有价值的控制点。影响持续用户体验的能力还需要能够生成 OpenVR 实例,而仅修改配置文件将阻止实时攻击。此外,影响 VR 场景或从运行时请求信息的攻击也需要 OpenVR 实例。一般来说,对手需要修改安全边界或房间规模配置的能力。
B.攻击分类
将沉浸式攻击定义为任何针对沉浸式 VR 的独特属性和相关沉浸式用户漏洞的攻击。沉浸式攻击会导致 VE 被恶意修改,从而造成身体或精神伤害和/或干扰用户。根据攻击的结果对沉浸式攻击进行分类,针对沉浸式攻击的具体实现创造了以下新术语:
· 陪伴攻击(Chaperone Attack):任何修改 VE 边界(VR 墙)的攻击。这可用于使虚拟空间对于沉浸式用户而言显得更小或更大,或者可用于防止 Chaperone 在沉浸式会话期间帮助用户识别他们的真实世界边界(真实墙壁)。
· 迷失攻击(Disorientation Attack):用于引起沉浸式 VR 用户头晕和困惑感的任何攻击。
· 虚拟环境操纵(Human Joystick Attack):用于在用户不知情的情况下控制沉浸式用户的物理移动到预定物理位置的任何攻击。在工作中,通过操纵用户的虚拟环境来实现这一点。
· 叠加攻击(Overlay Attack):任何在玩家的 VR 视图上叠加不需要的图像/视频/内容的攻击。播放器将无法删除内容。这种攻击包括持久图像以及在虚拟空间中保持固定的内容。
C.工具
操纵 Steam 配置文件对于陪伴攻击和迷失方向攻击至关重要。为了解析和修改配置文件,使用了 Python 3.6,特别是 JSON 模块。为了复制场景并证明远程黑客可以实施攻击,整合了一个能够远程执行攻击有效载荷的反向 shell。为了从 HTC Vive 收集从设备正面 HMD 捕获的图像,利用了使用简单快速多媒体库 (SFML) API构建的用户数据报协议 (UDP) 流。
D.场景
为了向读者提供一些背景信息,在攻击实施之前使用了一个通用场景(下图),在该场景中可能会使用这些威胁。关于有效载荷交付的假设依赖于目标机器的初始妥协以及具有适当 OpenVR 驱动程序的 VR 系统的存在(默认由 SteamVR 和 Oculus 提供)。任何可能导致用户土地有效载荷执行的漏洞利用或社会工程策略都足以满足此阶段的需求。专门针对这些攻击开发了一个命令和控制 (C2) 侦听器,但是任何后期开发工具(例如 meterpreter)都可以使用。一旦执行, C2 将用于操作必要的配置文件并启动 OpenVR 的实例。这些最小的应用程序会将攻击者的命令转发到 VR 运行时。由于 OpenVR 应用程序是独立的,因此正在进行的 VR 应用程序可以不间断地继续执行。最后,任何提取的信息都会转发回攻击者。
E.陪伴攻击
通过手动系统检查发现了一个 JSON 文件,其中存储了房间设置的详细信息,如下表。每个房间设置或空间都包含代表房间边界的 3D 几何数据。创建了一个工具来解析和修改 Chaperone 工件中的边界。该工件描绘了一个安全漏洞,其中关键安全特征数据(物理墙边界)以明文、未加密且易于访问的方式存储。
通过修改 JSON 配置文件开始攻击。 HTC Vive 和 Oculus Rift 分别创建了包含工件的目录。如果文件操作发生在用户沉浸在 VR 环境中时,则此修改将无效,直到 VR 系统重新启动。为了应对这一挑战,将 OpenVR 实例初始化为后台应用程序(下图,第 1 行)。此应用程序类型无权访问渲染器,也不会启动 SteamVR,但可以向 Steam 进程发送命令。要求 Steam 从磁盘重新加载配置文件(第 2 行)。这会将数据加载到流程的 Chaperone 工作副本中。然后将副本提交给系统,作为活动的 Chaperone(第 3 行)。这种变化在 VR 沉浸期间无缝发生。如果 VR 用户没有意识到 Chaperone,这可能会被忽视并且不会影响渲染。沉浸式用户对不再有效的界限的信心可能会导致身体伤害。
实施该攻击是因为可以轻松访问 Chaperone 数据及其简单性,但是,需要注意的是,可以在 OpenVR 中完全修改 Chaperone。函数 SetWorkingCollisionBound sInfo 可用于修改 Chaperone 的工作副本的边界。然后调用 CommitWorkingCopy 将应用更改。如果攻击者的意图是简单地隐藏碰撞边界,则可以将 opacity 属性设置为透明或 forceVisible 为 false。
F.迷失攻击
迷失攻击与陪伴攻击类似,因为整个过程是相同的。这种攻击会调整沉浸在 VR 中的用户在虚拟游戏空间中的位置和旋转。当用户在没有身体运动的情况下受到视觉运动提示时,可能会发生视觉诱发运动病 (VIMS) 。通过大力和随机地应用平移和旋转,复制了一种晕船的感觉。利用 Python JSON 解析脚本,修改了 Chaperone 配置文件。两个空间特征控制着玩家的方向:偏航和平移。调整平移会导致横向移动,而偏航会影响用户面对的方向。进行小的调整并调用 Chaperone 重新加载,可以控制玩家的方向。
由于实施的攻击使用与陪伴攻击相同的配置文件,因此在 Oculus Rift 上的成功程度类似于 HTC Vive 中的陪伴攻击。当 Oculus Rift 从 Steam 启动时,能够应用平移和旋转。将在后文讨论驱动程序级攻击,注意到通过 OpenVR 自定义驱动程序可以将跟踪解决方案从一个设备映射到另一个设备。例如,用控制器的跟踪解决方案替换 HMD 的跟踪解决方案可能会导致快速和迷失方向的运动。这种攻击的实施通过使用系统跟踪自身并导致更流畅的中断来减少延迟。
G.虚拟环境操纵攻击
对虚拟环境操纵攻击的实施在所有方面都与迷失方向攻击相似,只是执行的速度和控制不同。然而,攻击对沉浸式 VR 用户的影响非常明显,足以保证单独分类。攻击试图通过复合难以察觉的 VE 转换将玩家引导到攻击者定义的方向和位置。 VE 的逐渐转变旨在让玩家将他们的位置重新调整到新的虚拟中心点。
为了在 VR 用户不知情的情况下引导和控制他们的动作,必须首先消除任何可能的犯规迹象。任何方向的连续平移都会导致玩家越过第一层,因此在大多数情况下,通过禁用或扩展 Chaperone 来开始攻击。攻击者有可能同时访问屏幕数据和前置摄像头,这可以通知攻击者必要的信息,以决定他们打算移动玩家的方向以及应用的最佳时间。然后,以小到让沉浸式 VR 用户察觉不到的量逐渐向所需方向应用平移。重复此操作,直到玩家到达障碍物或所需的物理终点。在某些情况下,有必要利用旋转的变化,但是,这取决于应用程序(VR 体验)。由于所有其他攻击本质上都是技术性的,将进行了一项人类参与者欺骗研究,以检查实施的虚拟环境操纵攻击的有效性。
H.叠加攻击
叠加层是投影到渲染屏幕上的二维图像 。此功能旨在补充沉浸式 VR 场景,不会引起中断。无论正在运行的 VR 应用程序如何,这都允许使用叠加层。可以创建无限叠加,但是,只能渲染一个高清叠加。覆盖通常用于应用程序菜单、信息显示和仪表板。与任何虚拟对象一样,叠加层可以绝对定位或相对定位。可以转换叠加层以匹配任何被跟踪设备的位置。通过将覆盖层链接到 HMD 或 VR 控制器,攻击者可以确保恶意图像将持续可见。
没有允许用户强制关闭叠加层的内置 VR 应用程序功能。这与从任何应用程序调用覆盖的能力相结合,使其特别容易被误用。一旦执行了攻击,玩家关闭覆盖层的唯一方法就是重新启动应用程序。此功能由 Valve 软件提供,作为渲染图像的一种便捷方式,但是,叠加层的某些方面可能会导致潜在的恶意行为。上图中提供了此攻击的参考代码。通过将类型初始化为 VRApplication Overlay(第 1 行)来开始攻击。如果尚未运行,这将导致 SteamVR 启动。然后创建叠加并提供一个键和句柄以供参考(第 2 行)。默认叠加可见性设置为隐藏。这种攻击将直接在用户面前显示图像并封装大部分 VR 视图。为此,首先在第 4 行捕获游戏空间的原点。然后应用平移将图像移动到玩家视野前方 1 米处(第 5 行)。然后将转换与 HMD 的跟踪联系起来(第 6 行)。最后,加载图像并将叠加层设置为可见(第 8-9 行)。
用常用的 VR 应用程序战略性地替换这种攻击播放负载可能是一种投放广告或完全阻止游戏作为勒索软件形式的手段。通过有效载荷替换 SteamVR 工具的路径来实现这一点,要求读者考虑在沉浸式体验期间攻击者叠加干扰图像的心理影响。
I.摄像头攻击
尽管并非沉浸式独有,但以下攻击进一步利用了 VR 系统的许可性质。随着由内而外跟踪的出现,摄像机可能是房间尺度沉浸的必要条件。此外,可以从系统中提取各种各样的信息,为攻击者提供摄像头不可见的信息。结合由此产生的高影响,包括以下概念验证攻击。
HTC Vive 与 Oculus Rift 的独特之处在于 HMD 有一个前置摄像头。这提供了另一个攻击面。请注意,SteamVR 确实支持启用和禁用摄像头。禁用此功能将阻止相机初始化和提供视频流。这是观察到的唯一一次限制服务权限的尝试。
与 Chaperone 配置文件类似,SteamVR 将配置设置存储在未加密的 JSON 文件中。修改包含常规设置的文件,添加属性相机:{enableCamera: True}。相反,缺少该属性会禁用相机。要使更改生效,必须重新启动 SteamVR。 OpenVR 在函数 vr::VR_Shutdown() 中提供了关闭系统的功能。最后,系统可以通过以非后台模式临时初始化系统来重新启动,例如 vr::VRAppliction_Overlay 或 vr::VRApplication_Scene。无论系统处于何种状态,这都允许攻击者访问摄像头。
访问摄像头不会产生渲染图像,也不需要特定场景,因此可以将攻击初始化为 OpenVR 后台进程(上图,第 1 行)。同样,这允许进程在不中断当前场景应用程序的情况下影响 VR 系统。由于没有迹象表明相机已开机,否则用户将不会意识到攻击。请求访问将激活相机的视频流(第 4 行)。请注意,如果攻击是第一个调用视频服务的客户端,则前几帧可能会由于相机旋转和自动曝光而延迟。调用 GetvideoStreamBuffer 将帧和标头复制到指定的缓冲区中(第 5 行)。建议在帧之前接收标头,以确保分配了适当的内存量。利用UDP 流能够导出摄像机的视频流。 OpenVR 还支持捕获许多其他数据点。以同样的方式可以导出跟踪解决方案,进一步刺激目标的物理行为或环境。重建泄露的跟踪信息,能够实时监控用户的动作。
0x05 Testing and Results
A.陪伴攻击结果
针对 HTC Vive 的所有经过测试的 OpenVR 和 SteamVR 应用程序的概念验证攻击是成功的。由于 SteamVR 是 HTC Vive 碰撞边界的唯一管理器,针对 Chaperone 配置文件影响了所有应用程序。发现修改工件的方法比完全在 OpenVR 中完成的更快的 Chaperone 工作副本方法具有可靠性优势。这是因为工作副本无法根据 HMD 的状态提交。此外,快速修改导致 Chaperone 进入错误状态,从而阻止了进一步的 Chaperone 提交。发现如果系统空闲或接近传感器没有检测到正在佩戴的耳机,Chaperone 也会处于非活动状态。相反,通过修改配置文件,更改将保留,下次加载 Chaperone 时,更改将生效。
当通过 Steam 启动时,Oculus Rift 将继承 Guardian 和 Chaper one。实施只会影响 Steam 生成的Chaperone。启动时,SteamVR 将加载 Guardian 边界信息并创建一个包含空间的 JSON 文件,类似于 SteamVR 生成的房间设置。由于攻击针对的是 Steam 生成的文件,因此该实现不会改变 Guardian。预计 Oculus Rift 会生成一个包含此信息的工件,并且可以以类似的方式进行修改。发现将边界扩展到玩家能够到达的范围之外是隐藏陪伴者的更好方法。在某些情况下,降低 Chaperone 的不透明度并不会影响所有安全功能。如果启用,当玩家接近障碍物时,前置摄像头将继续激活。此外,一些 Chaperone 模式会继续在地板上显示轮廓,这个参数也可以修改。
B.迷失攻击和虚拟环境操纵攻击结果
这些攻击的技术成功率与 Chaperone Attack 的技术成功率相同,因为针对的是相同的工件。发现在这两个系统中,VR 用户的方向都可以被操纵。通过针对 HTC Vive 的 Steam 攻击,预期成功,但 OculusVR 保持独立的房间配置和方向。当 Rift 在 Steam 中初始化时,房间方向从 Oculus 检索并存储在 Chaperone 配置文件中。此文件随后会被通过 SteamVR 启动的所有应用程序引用。对此工件的更改将反映在所有 Steam 应用程序上,但不会被 Oculus 房间配置继承。从 SteamVR 生成的配置文件中更改用户位置和方向的能力表明 Oculus 完全放弃了其房间规模的配置。 OpenVR 很可能会利用 Oculus SDK 中的功能,这表明这些攻击也可能仅通过 Oculus SDK 进行。尽管是一个封闭系统,Oculus Rift 仍然允许第三方管理人员访问其某些功能。
发现迷失攻击的有效性与人工运动的速度和幅度有关。令人惊讶的是,观察到较慢的流体正弦波比急速波动更容易产生晕船感和降低平衡。通过更小、更频繁的更新,以及进程间通信同步操作和提交,提高了攻击的流动性。可能存在用户将拒绝任何感知到的人工运动的量级点。需要进一步的测试来验证这种关系。
C.叠加攻击结果
在所有测试的应用程序中,成功地在屏幕上填充图像。此外,发现无法在用户沉浸时移除图像。对受害者隐藏有效载荷进程将进一步隐藏负责的程序。这种攻击对 Oculus Rift 也很成功,但是,OculusVR 确实会检查第三方应用程序。默认情况下,Oculus Rift Manager 将不允许启动非 Oculus 商店的应用程序。必须授予此权限才能使用 Steam 软件及其应用程序。鉴于某些内容只能在 Steam 上或从其他开发者处找到,因此许多用户会允许使用此功能。一旦有效载荷应用程序被执行,它就会出现在受害者的 Oculus 库中,从而降低透明度。需要进一步的开发和测试来避免这种基于用户诱导的权限模型。相比之下,Chaperone、Disorientation 和 Human Joystick 攻击没有被标记,因为它们没有产生渲染产品。
D.摄像头攻击结果
在撰写本文时,Oculus Rift 没有前置摄像头,因此结果仅适用于 HTC Vive。在所有经过测试的 VR 应用程序中,都能够初始化和提取视频流缓冲区。事实上,一个活跃的场景是没有必要的。 VR 系统的状态是一个因素,无论如何,在所有情况下,都能够创造条件来访问相机。在不知道系统状态的情况下,两个动作过程减轻了相机返回 NULL 的处理请求。第一个,由对 HMD 的失败请求指示,通过打开系统电源来修复。为了确保系统在不中断当前应用程序的情况下处于活动状态,可以将一个短期应用程序初始化为覆盖。根据假设,这将确保系统在使用时不会产生任何影响。其次,与通过配置文件启用的相机相关的权限授予了所需的访问权限。唯一会干扰玩家的情况是系统正在使用且摄像头被禁用的情况。诱导系统重启可能会向受害者发出警报。如果攻击者需要有关可用硬件类型的更多信息,OpenVR 将使用 IVRSettings 类提供此信息。
0x06 Human Joystick Experiments
为了确定虚拟环境操纵攻击是否能够在沉浸式用户不知情的情况下操纵他们的位置,利用 HTC Vive 设计并进行了一项欺骗研究。在实验中,用户在 VR 中玩沉浸式街机风格游戏,而虚拟环境操纵攻击试图将玩家导航到预定位置。攻击是否成功通过玩家到达攻击者创建的物理目的地和沉浸式 VR 用户报告没有意识到攻击或异常运动来衡量,假设沉浸式玩家会跟随 VE。
A.方法
实验设计:设计了实验以及调查方法。该实验是一项欺骗性研究,因为招募参与者的前提是他们将玩 VR 游戏。参与者没有被告知会操纵他们的 VE 来影响他们的身体运动,直到他们在每次实验结束时得到汇报。
工具创建:在这个阶段,开发了软件来跟踪和可视化参与者的位置和 VE 的转换。
IRB 批准:提交了 IRB 请求并获得了欺骗性研究的批准。
参与者招募:通过发送电子邮件、张贴海报,最后通过电子邮件向游戏俱乐部成员发送参与者来招募参与者。参与者的选择与性别、年龄或 VR 体验无关。
实验运行:参与者首先签署同意书,实验运行的第一阶段用于让参与者熟悉 HTC Vive。然后要求他们玩 Arcade 风格的游戏,使用创建的工具记录数据。最后要求参与者完成沉浸后调查,并听取汇报。
B.实验设计
为了沿着攻击轴提供最大的游戏空间,实验开始时 VE 从物理房间的中心偏移,如下图所示。伴侣无法阻止参与者接收有关物理房间的视觉提示( 3.4mx3.4m) 和工作站的位置,使得 HTC Vive 的系绳允许访问房间的所有区域。将参与者到达表示攻击成功的位置定义为沿 Y 轴在参与者前方 1.9 米处,半径为 20 厘米。到目的地的距离是通过观察参与者的典型领土来确定的,以便进行测试。这确保了参与者不会因为不受影响的游戏而前往目的地,并且在大多数游戏中,虚拟墙和边界不鼓励这样做。选择游戏以快速理解为基础,玩家技能不会对体验产生太大影响,平均游戏周期在5-15分钟之间。
参与者获得了一个快速的 HTC Vive 教程,并允许他们熟悉该系统。当他们开始 VR 游戏时,开始使用开发的工具以 20x/秒的频率收集 HMD 和 VE 位置数据。在开始攻击之前,参与者被允许玩至少一个游戏周期。这能够确认每个玩家的领土都没有延伸到目的地。
然后通过以 0.01 米/秒的速度沿 Y 轴移动 VE 来执行攻击。总攻击平移等于到目的地的距离,VE 以目的地为中心。数据收集最多持续 15 分钟,或者直到参与者因接近物理房间边界而停止。参与者完成了一项沉浸后调查,询问他们在游戏中(沉浸式)对攻击的认识。
C.观察和结果
在本节中展示了对下表中显示的每个测试游戏的发现。测试了(n=5) 游戏并招募了 (n=64) 参与者。尽管实验的目的是调查攻击的成功与否,但还是针对多种类型的游戏测试了该攻击,以探索构建攻击的外部有效性。注意到这不是针对所有应用程序类型的这种攻击类型的全面分析,但观察到有助于攻击成功的游戏玩法趋势。
游戏 1-4 很常见,因为玩家要么被要求移动到给定位置以与虚拟对象交互,要么根据位置获得优势。这些游戏为玩家保持以 VE 为中心提供了强大的动力,因此实现了 94.4% 的成功率,能够将沉浸式 VR 用户移动到预定的位置。
第 5 个游戏之所以被选中,是因为玩家没有被迫与静态虚拟物体互动,并且只能站着玩。对于这款游戏,观察到了 50% 的成功率。在这场比赛中,参与者对攻击的反应各不相同,部分原因可能是他们的比赛风格。由于这个游戏没有明确提供让玩家保持以 VE 为中心的动机,没有响应的参与者允许 VE 远离他们。相比之下,选择与风景互动的参与者的反应与游戏 1-4 类似。在三名参与者中观察到了第三种特殊的反应;它们不与静态虚拟对象交互,但倾向于保持它们与附近对象的相对位置。这说明有些玩家,不管玩法要求如何,都会下意识地对信息进行自我修正。尽管攻击的成功与游戏 1-4 不相上下,但这一发现表明,无论应用程序如何,一些受害者都容易受到攻击。
对攻击(56/64)做出反应的参与者报告说,在 VR 沉浸结束时对他们的位置感到惊讶。下图显示了参与者在 VE 中采用的示例路径,这些路径保持在游戏空间的中心。这是玩家在 VE 方面所经历的可视化。玩家在 VE 中的稳定区域表明玩家对平移的无知,因为他们认为自己的整体位置是静态的。 VE 中的路径与物理路径的对比表明向前移动是攻击的结果。
13 名参与者在与目的地的物理墙相撞时被重新定位,然而,据报告,在碰撞之前,他们不知道他们已经从起始位置走了很长一段路。在意识到 VE 变化的两个参与者中,一个注意到转换并遵守了,而另一个在 VR 中移动时感到不舒服,这次攻击的成功将取决于受害者的能力和移动意愿,因为 VE 只是试图将玩家带到目的地。没有改变执行攻击的速度,但是,进一步调查攻击的速度和幅度与意识之间的关系可能会提高成功率。
由于参与者确实倾向于遵循虚拟中心点,观察到导致他们纠正 VE 变化的两种主要机制。 Xortex、Surgeon Simulator 和 Guns’n’Stories 游戏让玩家频繁轮换。这导致参与者迈出了许多他们可能没有注意到他们已经向前迈进的小步。与动作胆怯的参与者相比,在虚拟空间中自信地走动并积极参与游戏的参与者裤子往往更能反映。Xortex、Surgeon Simulator 和 Guns’n’Stories 路径显示玩家由于频繁旋转而逐渐适应平移。虽然长弓游戏涉及旋转,但事实证明这取决于参与者的游戏风格。不轻易移动脚的参与者倾向于对与上图中的长弓和弹弓路径相似的平移做出反应。 对 VE 平移的校正主要通过向前的大运动发生,然后是不完全的互惠移动。参与者报告说他们感觉好像他们必须比平常更远,但是,在完成动作后,他们感觉好像回到了原来的位置。
参与者运动的程度可能代表他们之前对 VR 的体验,而在 VE 中移动的舒适度和信心反映了参与者对 VR 的熟悉程度。为了确定先前的经验是否影响参与者对攻击的反应速度,比较了报告先前经验的参与者与没有报告先前经验的参与者到达目的地所需的时间。报告先前使用 VR 的参与者(M = 183.0,SD = 62.9)与没有使用 VR 的参与者相比(M = 181.6,SD = 42.0)在到达目的地的时间上没有差异,t(53) = -0.10,p = 0.919。 p 值表示两组在统计上相似的概率为 91.9%。
由于在整个实验过程中攻击率保持不变,这些初步结果表明攻击成功的假设与玩家的经验水平无关,尽管需要更多的测试来验证这一说法。考虑到平移率(0:01 m/s) 和距离(1.9m),到目的地的平均时间进一步强化了原始假设。由于目的地的半径为 (20 cm),与观察到的平均到达目的地的平均时间为 182.4 秒相比,对攻击的理想反应将需要参与者 170 190 秒。两组的总体和每场比赛时间相似性如下图所示。 比较每个应用程序的时间可能会揭示与玩家响应的关系,但是,这项初步研究对样本量的限制排除了这种分析。
这些游戏在促进攻击方面有两个功能。假设持续的移动会淡化 VE 中的微小变化,并且游戏的目标会吸引用户。这可以提供必要的分心以防止攻击被察觉。其次,游戏为用户提供了移动的动力。通常,玩家被迫服从攻击以继续比赛。上面描述的大幅向前移动偶尔是参与者伸手去拿虚拟对象或与玩家继续进行所需的菜单项交互的结果。因此,与 VE 中的特定空间有密切联系的游戏将迫使玩家移动。在这种情况下,攻击的成功更多地取决于是否保持秘密。另一方面,不为玩家位置提供优势的游戏必须依靠玩家来维持他们的相对位置。本研究中使用的游戏代表了沉浸式 VR 的多种应用程序中的一小部分,其中许多旨在让玩家保持坐姿。由于每种应用方式的分心和动机程度不同,进一步调查可能会得出沉浸程度和对攻击的易感性之间的关系。
0x07 Discussion
每次攻击的技术普遍成功都归功于攻击层 OpenVR。有了合理的确定性,可以得出结论,所有 OpenVR 兼容系统都容易受到这些类型的攻击。无论硬件接口如何,都认为 VR 系统的各个方面都需要受到保护。恶意行为的后果被沉浸的物理和生理影响放大。尽管专门针对 OpenVR,但本研究中发现的潜在漏洞适用于所有 VR 系统。概念验证攻击表明,VR 安全和安全功能需要进一步开发和保护。鉴于所有完全沉浸式 VR 系统都需要某种形式的碰撞检测,因此应优先对这些安全功能进行全面评估。虽然同意用户手动调整他/她的游戏区域的边界有一些好处,但需要保护对这些数据的访问。 SteamVR 以明文形式存储这些工件提供了一个重大漏洞。建议加密此数据并限制其对创建个人和服务的访问。由于必须保持安全功能的完整性,同时也是可管理的,建议应用Clark-Wilson完整性模型。必须通过 VR 运行时进行和验证交易的地方。
Overlay 和 Camera Attacks 展示了该架构的许可结构。在测试过程中,使用了超过五个在场景后台运行的额外恶意应用程序。同样,SteamVR 明显缺乏应用程序控制,而 OculusVR 未能检查无渲染进程。 OpenVR 为应用程序管理提供了一个 API 接口,然而,叠加攻击的成功证明了应用程序隔离的利用不足。不受监管的应用程序导致 VR 系统失去控制和数据泄露。关闭或限制 VR 应用程序对其各自环境的访问可能适合防止恶意行为者中断有效的应用程序。因此,建议 VR 应用程序管理人员限制对经过审查的程序的访问,并在更大程度上要求用户批准第三方应用程序。尽管超出了本文的范围,但发现 Steam 应用程序缺乏完整性检查。建议建立应用程序签名以防止不必要的修改。
另一种解决方案是Arya 框架,用于实施管理 AR 现实输出的政策。这种策略管理应纳入现有的沉浸式 VR 系统。相机攻击明显缺乏基于权限的访问。尽管 Steam 允许用户限制相机的使用,但权限属性未加密存储且易于访问。这种透明度允许攻击者克服相机限制。随着 VR 的继续传播,其功能和特性也将继续传播。例如,Android 已经通过访问控制列表 (ACL) 实现了基于权限的安全性。一种具有 VR 系统特殊功能的类似方法,将它们的使用限制在指定的应用程序中,可以防止恶意的第三方软件滥用其访问权限。建议扩展访问控制以验证所有访问 VR 资源的应用程序。如果建立来自受信任的开发人员的应用程序签名,其中许多可以得到验证。
0x08 Future Work
尽管攻击集中在软件接口层,但在整个分析过程中,发现了其他领域的漏洞。 OpenVR 提供了为附加硬件开发驱动程序的框架。这包括为 Vive 系统重载已有的驱动程序并创建虚拟控制器。菜单操作和交互覆盖主要接收来自控制器指针的输入,并且通过恶意虚拟控制器,攻击者可以远程控制玩家的计算机系统。一个流行的 VR 应用程序,如虚拟桌面,默认在启动时加载,允许用户在 VR 中访问他们的桌面。如果存在虚拟控制器,攻击者可以获得对客户端计算机的完全访问权限。虚拟控制器具有透明性的优点,其中控制器的 3D 模型表示不会被指定或呈现。应该注意的是,驱动程序的安装将使有效载荷的交付和执行变得越来越复杂。
HTC Vive 有一个独特的利用Lighthouse的跟踪系统。这些Lighthouse使用 IR 为被跟踪设备提供绝对定位。为了减少所需传感器的数量,跟踪解决方案由 IMU提供的相对跟踪补充。仅基于 IMU 数据的跟踪不是很准确,但有助于在传感器受阻时填补空白。怀疑禁用绝对跟踪会导致跟踪解决方案偏离真实玩家的位置。需要进一步测试,但是,Lighthouse Redox HTC Vive 逆向工程项目反转了蓝牙低功耗 (LE) 通信以唤醒并设置睡眠超时。
Lighthouse有自己的一组配置和日志文件,其中包含位置和正常信息。这些文件也以纯文本 JSON 格式存储。这些工件可能会提供额外的攻击途径。迷失方向攻击很可能是通过操纵Lighthouse本身的位置来进行的,攻击了在房间设置期间建立的静态用户定义的空间。由于Lighthouse自行配置,这可能不太可行。此外,如果Lighthouse检测到它们受到干扰,它们将立即关闭转子。需要进一步测试以确定是否可以通过操纵这些伪像来引起 IMU 漂移。社交应用程序允许沉浸式 VR 用户在 VR 中聚集和共享内容。 Big Screen Beta 等应用程序甚至可以共享用户的计算机屏幕、手势和音频。初步网络层分析表明,这些信息中的大部分都是在未加密的情况下传递的。怀疑一种新形式的中间人 (MITM) 攻击可能允许攻击者加入聊天室并提取信息,甚至可能操纵客户端的环境,将此称为 Man-In-The-Room (MITR) 攻击。