當前位置: 華文星空 > 知識

針對沈浸式VR系統的虛擬環境操縱攻擊

2021-06-25知識

本研究是首批對消費者沈浸式虛擬現實 (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

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) 攻擊。

歡迎登入安全客 -有思想的安全新媒體http://www. anquanke.com/ 加入QQ交流群1015601496 獲取更多最新資訊

原文連結:https://www. anquanke.com/post/id/24 4151