本研究是首批對消費者沉浸式虛擬現實 (VR) 系統進行安全分析的工作。 本文使用了兩種最廣泛采用的沉浸式 VR 系統,HTC Vive 和 Oculus Rift。 更具體地說,通過創建可能使用戶迷失方向的攻擊,在他們不知情的情況下打開他們的頭戴式顯示器 (HMD) 攝像頭,在他們的視野中疊加圖像,并修改迫使他們撞擊物理對象和墻壁。 最后,通過一項人類參與者欺騙研究來說明能夠成功利用 VR 系統來控制沉浸式用戶并將他們移動到物理空間中的某個位置而他們不知情,將此稱為虛擬環境操縱(Human Joystick)攻擊。
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
由于完全沉浸式的特點,本文工作重點是沉浸式 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 體驗中出現。
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 系統的訪問也被認為是一個漏洞。
在研究和發現階段,采用了強大的對抗模型;不限制攻擊者的能力。這樣做是為了促進強大的安全分析。由于范圍僅限于 VR 系統及其應用程序,假設攻擊者以某種方式破壞了目標機器,允許用戶之后使用。另一方面,對抗性目標是由假設指導的,特別是與沉浸式 VR 相關的假設。與假設一致并表明攻擊成功,強加了其他幾個次要對抗性目標:
· 目標 VR 用戶不會立即有跡象表明他們的隱私受到損害。
· 攻擊不會中斷正在進行的 VR 應用程序或表明發生了惡意活動,除非這是攻擊的目標。
· VR 用戶無需采取任何行動即可發起攻擊。
對攻擊實施的發現和要求(以下部分)允許進一步完善對抗性要求。修改 VE 的攻擊需要能夠啟動 OpenVR 應用程序的實例,或者對 VR 系統配置文件具有有意義的寫入權限。配置文件可用性本身不是必需的,但會降低攻擊的復雜性并提供其他幾個有價值的控制點。影響持續用戶體驗的能力還需要能夠生成 OpenVR 實例,而僅修改配置文件將阻止實時攻擊。此外,影響 VR 場景或從運行時請求信息的攻擊也需要 OpenVR 實例。一般來說,對手需要修改安全邊界或房間規模配置的能力。
將沉浸式攻擊定義為任何針對沉浸式 VR 的獨特屬性和相關沉浸式用戶漏洞的攻擊。沉浸式攻擊會導致 VE 被惡意修改,從而造成身體或精神傷害和/或干擾用戶。根據攻擊的結果對沉浸式攻擊進行分類,針對沉浸式攻擊的具體實現創造了以下新術語:
· 陪伴攻擊(Chaperone Attack):任何修改 VE 邊界(VR 墻)的攻擊。這可用于使虛擬空間對于沉浸式用戶而言顯得更小或更大,或者可用于防止 Chaperone 在沉浸式會話期間幫助用戶識別他們的真實世界邊界(真實墻壁)。
· 迷失攻擊(Disorientation Attack):用于引起沉浸式 VR 用戶頭暈和困惑感的任何攻擊。
· 虛擬環境操縱(Human Joystick Attack):用于在用戶不知情的情況下控制沉浸式用戶的物理移動到預定物理位置的任何攻擊。在工作中,通過操縱用戶的虛擬環境來實現這一點。
· 疊加攻擊(Overlay Attack):任何在玩家的 VR 視圖上疊加不需要的圖像/視頻/內容的攻擊。播放器將無法刪除內容。這種攻擊包括持久圖像以及在虛擬空間中保持固定的內容。
操縱 Steam 配置文件對于陪伴攻擊和迷失方向攻擊至關重要。為了解析和修改配置文件,使用了 Python 3.6,特別是 JSON 模塊。為了復制場景并證明遠程黑客可以實施攻擊,整合了一個能夠遠程執行攻擊有效載荷的反向 shell。為了從 HTC Vive 收集從設備正面 HMD 捕獲的圖像,利用了使用簡單快速多媒體庫 (SFML) API構建的用戶數據報協議 (UDP) 流。
為了向讀者提供一些背景信息,在攻擊實施之前使用了一個通用場景(下圖),在該場景中可能會使用這些威脅。關于有效載荷交付的假設依賴于目標機器的初始妥協以及具有適當 OpenVR 驅動程序的 VR 系統的存在(默認由 SteamVR 和 Oculus 提供)。任何可能導致用戶土地有效載荷執行的漏洞利用或社會工程策略都足以滿足此階段的需求。專門針對這些攻擊開發了一個命令和控制 (C2) 偵聽器,但是任何后期開發工具(例如 meterpreter)都可以使用。一旦執行, C2 將用于操作必要的配置文件并啟動 OpenVR 的實例。這些最小的應用程序會將攻擊者的命令轉發到 VR 運行時。由于 OpenVR 應用程序是獨立的,因此正在進行的 VR 應用程序可以不間斷地繼續執行。最后,任何提取的信息都會轉發回攻擊者。
通過手動系統檢查發現了一個 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。
迷失攻擊與陪伴攻擊類似,因為整個過程是相同的。這種攻擊會調整沉浸在 VR 中的用戶在虛擬游戲空間中的位置和旋轉。當用戶在沒有身體運動的情況下受到視覺運動提示時,可能會發生視覺誘發運動病 (VIMS) 。通過大力和隨機地應用平移和旋轉,復制了一種暈船的感覺。利用 Python JSON 解析腳本,修改了 Chaperone 配置文件。兩個空間特征控制著玩家的方向:偏航和平移。調整平移會導致橫向移動,而偏航會影響用戶面對的方向。進行小的調整并調用 Chaperone 重新加載,可以控制玩家的方向。
由于實施的攻擊使用與陪伴攻擊相同的配置文件,因此在 Oculus Rift 上的成功程度類似于 HTC Vive 中的陪伴攻擊。當 Oculus Rift 從 Steam 啟動時,能夠應用平移和旋轉。將在后文討論驅動程序級攻擊,注意到通過 OpenVR 自定義驅動程序可以將跟蹤解決方案從一個設備映射到另一個設備。例如,用控制器的跟蹤解決方案替換 HMD 的跟蹤解決方案可能會導致快速和迷失方向的運動。這種攻擊的實施通過使用系統跟蹤自身并導致更流暢的中斷來減少延遲。
對虛擬環境操縱攻擊的實施在所有方面都與迷失方向攻擊相似,只是執行的速度和控制不同。然而,攻擊對沉浸式 VR 用戶的影響非常明顯,足以保證單獨分類。攻擊試圖通過復合難以察覺的 VE 轉換將玩家引導到攻擊者定義的方向和位置。 VE 的逐漸轉變旨在讓玩家將他們的位置重新調整到新的虛擬中心點。
為了在 VR 用戶不知情的情況下引導和控制他們的動作,必須首先消除任何可能的犯規跡象。任何方向的連續平移都會導致玩家越過第一層,因此在大多數情況下,通過禁用或擴展 Chaperone 來開始攻擊。攻擊者有可能同時訪問屏幕數據和前置攝像頭,這可以通知攻擊者必要的信息,以決定他們打算移動玩家的方向以及應用的最佳時間。然后,以小到讓沉浸式 VR 用戶察覺不到的量逐漸向所需方向應用平移。重復此操作,直到玩家到達障礙物或所需的物理終點。在某些情況下,有必要利用旋轉的變化,但是,這取決于應用程序(VR 體驗)。由于所有其他攻擊本質上都是技術性的,將進行了一項人類參與者欺騙研究,以檢查實施的虛擬環境操縱攻擊的有效性。
疊加層是投影到渲染屏幕上的二維圖像 。此功能旨在補充沉浸式 VR 場景,不會引起中斷。無論正在運行的 VR 應用程序如何,這都允許使用疊加層。可以創建無限疊加,但是,只能渲染一個高清疊加。覆蓋通常用于應用程序菜單、信息顯示和儀表板。與任何虛擬對象一樣,疊加層可以絕對定位或相對定位。可以轉換疊加層以匹配任何被跟蹤設備的位置。通過將覆蓋層鏈接到 HMD 或 VR 控制器,攻擊者可以確保惡意圖像將持續可見。
沒有允許用戶強制關閉疊加層的內置 VR 應用程序功能。這與從任何應用程序調用覆蓋的能力相結合,使其特別容易被誤用。一旦執行了攻擊,玩家關閉覆蓋層的唯一方法就是重新啟動應用程序。此功能由 Valve 軟件提供,作為渲染圖像的一種便捷方式,但是,疊加層的某些方面可能會導致潛在的惡意行為。上圖中提供了此攻擊的參考代碼。通過將類型初始化為 VRApplication Overlay(第 1 行)來開始攻擊。如果尚未運行,這將導致 SteamVR 啟動。然后創建疊加并提供一個鍵和句柄以供參考(第 2 行)。默認疊加可見性設置為隱藏。這種攻擊將直接在用戶面前顯示圖像并封裝大部分 VR 視圖。為此,首先在第 4 行捕獲游戲空間的原點。然后應用平移將圖像移動到玩家視野前方 1 米處(第 5 行)。然后將轉換與 HMD 的跟蹤聯系起來(第 6 行)。最后,加載圖像并將疊加層設置為可見(第 8-9 行)。
用常用的 VR 應用程序戰略性地替換這種攻擊播放負載可能是一種投放廣告或完全阻止游戲作為勒索軟件形式的手段。通過有效載荷替換 SteamVR 工具的路徑來實現這一點,要求讀者考慮在沉浸式體驗期間攻擊者疊加干擾圖像的心理影響。
盡管并非沉浸式獨有,但以下攻擊進一步利用了 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
針對 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 模式會繼續在地板上顯示輪廓,這個參數也可以修改。
這些攻擊的技術成功率與 Chaperone Attack 的技術成功率相同,因為針對的是相同的工件。發現在這兩個系統中,VR 用戶的方向都可以被操縱。通過針對 HTC Vive 的 Steam 攻擊,預期成功,但 OculusVR 保持獨立的房間配置和方向。當 Rift 在 Steam 中初始化時,房間方向從 Oculus 檢索并存儲在 Chaperone 配置文件中。此文件隨后會被通過 SteamVR 啟動的所有應用程序引用。對此工件的更改將反映在所有 Steam 應用程序上,但不會被 Oculus 房間配置繼承。從 SteamVR 生成的配置文件中更改用戶位置和方向的能力表明 Oculus 完全放棄了其房間規模的配置。 OpenVR 很可能會利用 Oculus SDK 中的功能,這表明這些攻擊也可能僅通過 Oculus SDK 進行。盡管是一個封閉系統,Oculus Rift 仍然允許第三方管理人員訪問其某些功能。
發現迷失攻擊的有效性與人工運動的速度和幅度有關。令人驚訝的是,觀察到較慢的流體正弦波比急速波動更容易產生暈船感和降低平衡。通過更小、更頻繁的更新,以及進程間通信同步操作和提交,提高了攻擊的流動性。可能存在用戶將拒絕任何感知到的人工運動的量級點。需要進一步的測試來驗證這種關系。
在所有測試的應用程序中,成功地在屏幕上填充圖像。此外,發現無法在用戶沉浸時移除圖像。對受害者隱藏有效載荷進程將進一步隱藏負責的程序。這種攻擊對 Oculus Rift 也很成功,但是,OculusVR 確實會檢查第三方應用程序。默認情況下,Oculus Rift Manager 將不允許啟動非 Oculus 商店的應用程序。必須授予此權限才能使用 Steam 軟件及其應用程序。鑒于某些內容只能在 Steam 上或從其他開發者處找到,因此許多用戶會允許使用此功能。一旦有效載荷應用程序被執行,它就會出現在受害者的 Oculus 庫中,從而降低透明度。需要進一步的開發和測試來避免這種基于用戶誘導的權限模型。相比之下,Chaperone、Disorientation 和 Human Joystick 攻擊沒有被標記,因為它們沒有產生渲染產品。
在撰寫本文時,Oculus Rift 沒有前置攝像頭,因此結果僅適用于 HTC Vive。在所有經過測試的 VR 應用程序中,都能夠初始化和提取視頻流緩沖區。事實上,一個活躍的場景是沒有必要的。 VR 系統的狀態是一個因素,無論如何,在所有情況下,都能夠創造條件來訪問相機。在不知道系統狀態的情況下,兩個動作過程減輕了相機返回 NULL 的處理請求。第一個,由對 HMD 的失敗請求指示,通過打開系統電源來修復。為了確保系統在不中斷當前應用程序的情況下處于活動狀態,可以將一個短期應用程序初始化為覆蓋。根據假設,這將確保系統在使用時不會產生任何影響。其次,與通過配置文件啟用的相機相關的權限授予了所需的訪問權限。唯一會干擾玩家的情況是系統正在使用且攝像頭被禁用的情況。誘導系統重啟可能會向受害者發出警報。如果攻擊者需要有關可用硬件類型的更多信息,OpenVR 將使用 IVRSettings 類提供此信息。
0x06 Human Joystick Experiments
為了確定虛擬環境操縱攻擊是否能夠在沉浸式用戶不知情的情況下操縱他們的位置,利用 HTC Vive 設計并進行了一項欺騙研究。在實驗中,用戶在 VR 中玩沉浸式街機風格游戲,而虛擬環境操縱攻擊試圖將玩家導航到預定位置。攻擊是否成功通過玩家到達攻擊者創建的物理目的地和沉浸式 VR 用戶報告沒有意識到攻擊或異常運動來衡量,假設沉浸式玩家會跟隨 VE。
實驗設計:設計了實驗以及調查方法。該實驗是一項欺騙性研究,因為招募參與者的前提是他們將玩 VR 游戲。參與者沒有被告知會操縱他們的 VE 來影響他們的身體運動,直到他們在每次實驗結束時得到匯報。
工具創建:在這個階段,開發了軟件來跟蹤和可視化參與者的位置和 VE 的轉換。
IRB 批準:提交了 IRB 請求并獲得了欺騙性研究的批準。
參與者招募:通過發送電子郵件、張貼海報,最后通過電子郵件向游戲俱樂部成員發送參與者來招募參與者。參與者的選擇與性別、年齡或 VR 體驗無關。
實驗運行:參與者首先簽署同意書,實驗運行的第一階段用于讓參與者熟悉 HTC Vive。然后要求他們玩 Arcade 風格的游戲,使用創建的工具記錄數據。最后要求參與者完成沉浸后調查,并聽取匯報。
為了沿著攻擊軸提供最大的游戲空間,實驗開始時 VE 從物理房間的中心偏移,如下圖所示。伴侶無法阻止參與者接收有關物理房間的視覺提示( 3.4mx3.4m) 和工作站的位置,使得 HTC Vive 的系繩允許訪問房間的所有區域。將參與者到達表示攻擊成功的位置定義為沿 Y 軸在參與者前方 1.9 米處,半徑為 20 厘米。到目的地的距離是通過觀察參與者的典型領土來確定的,以便進行測試。這確保了參與者不會因為不受影響的游戲而前往目的地,并且在大多數游戲中,虛擬墻和邊界不鼓勵這樣做。選擇游戲以快速理解為基礎,玩家技能不會對體驗產生太大影響,平均游戲周期在5-15分鐘之間。
參與者獲得了一個快速的 HTC Vive 教程,并允許他們熟悉該系統。當他們開始 VR 游戲時,開始使用開發的工具以 20x/秒的頻率收集 HMD 和 VE 位置數據。在開始攻擊之前,參與者被允許玩至少一個游戲周期。這能夠確認每個玩家的領土都沒有延伸到目的地。
然后通過以 0.01 米/秒的速度沿 Y 軸移動 VE 來執行攻擊。總攻擊平移等于到目的地的距離,VE 以目的地為中心。數據收集最多持續 15 分鐘,或者直到參與者因接近物理房間邊界而停止。參與者完成了一項沉浸后調查,詢問他們在游戲中(沉浸式)對攻擊的認識。
在本節中展示了對下表中顯示的每個測試游戲的發現。測試了(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) 攻擊。
譯文聲明
本文是翻譯文章,文章原作者Peter Casey , Ibrahim Baggili , and Ananya Yarramreddy,文章來源:ieeexplore.ieee.org
原文地址:https://ieeexplore.ieee.org/document/8675340
譯文僅供參考,具體內容表達以及含義原文為準