本研究是首批對消費者沉浸式虛擬現(xiàn)實 (VR) 系統(tǒng)進(jìn)行安全分析的工作。 本文使用了兩種最廣泛采用的沉浸式 VR 系統(tǒng),HTC Vive 和 Oculus Rift。 更具體地說,通過創(chuàng)建可能使用戶迷失方向的攻擊,在他們不知情的情況下打開他們的頭戴式顯示器 (HMD) 攝像頭,在他們的視野中疊加圖像,并修改迫使他們撞擊物理對象和墻壁。 最后,通過一項人類參與者欺騙研究來說明能夠成功利用 VR 系統(tǒng)來控制沉浸式用戶并將他們移動到物理空間中的某個位置而他們不知情,將此稱為虛擬環(huán)境操縱(Human Joystick)攻擊。
0x01 Introduction
虛擬現(xiàn)實 (VR) 已進(jìn)入人們的生活。 雖然圍繞 VR 和特別是沉浸式 VR 的興奮不斷增加,但必須關(guān)注這些平臺的安全性。 雖然對于安全研究人員來說,沉浸式 VR 需要安全是顯而易見的,但在探索沉浸式對人的影響時,先前的工作并沒有以系統(tǒng)的方式對其進(jìn)行檢查。 本文工作不僅創(chuàng)造和假設(shè)潛在的 VR 攻擊,而且還實施它們。 此外,通過一項人類參與者欺騙研究說明,確實能夠在物理空間中將 VR 用戶移動到攻擊者喜歡的位置,而無需他們的知識或同意。 希望這項工作能促進(jìn)該領(lǐng)域未來的研究,尤其是因為沉浸式 VR 對其用戶具有心理和生理影響。
VR 正迅速成為一種家居用品,為各種應(yīng)用提供平臺。目前,虛擬現(xiàn)實在游戲、社交、康復(fù)和職業(yè)培訓(xùn)中得到了廣泛的應(yīng)用,但還有許多其他應(yīng)用。 VR 技術(shù)已經(jīng)以可承受的價格變得更容易獲得,但其效用尚未完全實現(xiàn)。人們預(yù)計 VR 將變得無處不在。由于圖形技術(shù)、移動 VR 的改進(jìn),VR 鞏固了其在消費市場的地位。
2017年,國際數(shù)據(jù)合作組織估計VR設(shè)備投資114億美元,預(yù)測未來四年每年增加 100% 的支出。推動 VR 市場增長的兩個關(guān)鍵因素是消費者對沉浸式的渴望和 3D 用戶界面的新穎性。諸如 Google Cardboard 之類的小型便攜式 VR 實現(xiàn)為兼容的智能手機(jī)提供了經(jīng)濟(jì)實惠的 VR 環(huán)境。一個簡單的硬紙板VR可以以大約 15 美元的價格購買,以容納用戶的手機(jī)。作為 VR 系統(tǒng),使用谷歌軟件的手機(jī)將呈現(xiàn)兩個立體視圖,便于攜帶和使用。移動 VR 的其他選擇包括谷歌 Daydream 和三星的 GearVR,這是最受歡迎的,2016 年售出 451 萬臺。包括運(yùn)動控制器和紅外跟蹤等功能的完全沉浸式系統(tǒng)也越來越受歡迎,其中最常見的是 Playstation VR (PSVR)、Oculus Rift 和 HTC Vive。這些系統(tǒng)完全身臨其境的特性提供了獨特的體驗。所有 VR 體驗的共同點是它們能夠創(chuàng)建虛擬環(huán)境 (VE)。
0x02 Background
由于完全沉浸式的特點,本文工作重點是沉浸式 VR 系統(tǒng); HTC Vive 和 Oculus Rift。這些系統(tǒng)通過復(fù)雜的跟蹤系統(tǒng)提供逼真的虛擬體驗,允許在 VE 中實時復(fù)制用戶的動作。 Oculus Rift 頭戴式設(shè)備 (HMD) 有一系列發(fā)光二極管 (LED),由一個稱為Constellation跟蹤系統(tǒng)的小型相機(jī)跟蹤。這是由相鄰現(xiàn)實跟蹤器 (ART) 補(bǔ)充的,它具有慣性測量單元 (IMU)、磁力計、加速度計和陀螺儀。 HTC Vive 通過將跟蹤傳感器放置在頭顯上并從基站或Lighthouse發(fā)射紅外 (IR) 光束來反轉(zhuǎn)這些角色。Lighthouse以同步脈沖開始跟蹤周期,然后是兩次垂直的 IR 掃描。傳感器測量脈沖和掃描之間的時間,以確定它們與Lighthouse的角度。 Vive 還包含一個 IMU,以填補(bǔ)由于障礙物造成的跟蹤空白。
跟蹤技術(shù)的進(jìn)步帶來了房間規(guī)模的 VR 體驗。房間規(guī)模為體驗增加了另一個維度,允許 VR 用戶在游樂區(qū)自由走動。由于玩家的視野完全被HMD封裝,所以必須有保護(hù)措施來保護(hù)玩家免受障礙物(墻壁)的影響。兩個系統(tǒng)都實現(xiàn)了類似的解決方案,涉及用戶在使用控制器玩游戲之前跟蹤房間的邊界。 Vive 防碰撞保護(hù)被稱為 Chaperone,是概念驗證攻擊的目標(biāo),而 Oculus Rift 使用術(shù)語 Guardian。人們可以將這些視為 VR 假半透明墻,當(dāng)用戶接近真實墻時,它們會在 VR 體驗中出現(xiàn)。
OpenVR 由 Valve Software 為 SteamVR 設(shè)備開發(fā),旨在讓開發(fā)人員無需依賴供應(yīng)商特定的軟件開發(fā)工具包 (SDK) 即可設(shè)計應(yīng)用程序。這是通過提供虛擬功能來實現(xiàn)的,其中兼容的 SDK 可以與初始化的系統(tǒng)相匹配。下圖顯示了 OpenVR 如何充當(dāng) Oculus Rift 的包裝器,以允許開發(fā)人員在 VR 系統(tǒng)之間實現(xiàn)兼容性。盡管目前分發(fā)僅限于 HTC Vive 和 Oculus Rift,但在撰寫本文時,微軟還宣布他們的 VR 耳機(jī)將與 Steam 兼容,這意味著它們可能會適用于 OpenVR,因為 Steam 基于開放式虛擬現(xiàn)實。 OpenVR 中發(fā)現(xiàn)的漏洞可能會影響所有兼容設(shè)備。本研究中描述的攻擊是在 OpenVR軟件接口級別實施的;盡管懷疑硬件層和特定應(yīng)用程序存在其他安全漏洞,但針對 OpenVR 提供了廣泛的攻擊面。
SteamVR 是管理 VR 硬件并提供啟動應(yīng)用程序界面的應(yīng)用程序。 HTC Vive 很大程度上依賴于 SteamVR 提供的服務(wù),例如 Chaperone。 Steam 通過充當(dāng) Oculus Rift Manager 的包裝器為 Oculus Rift 提供兼容性。這在避免沖突的情況下提供了服務(wù)冗余。 Oculus Rift Manager 專門提供的服務(wù)不是概念驗證攻擊的目標(biāo),但 Guardian 和 Oculus Manager 的功能非常相似,需要同等的安全評估。在本研究中,所有對 Chaperone 的引用都專門針對 SteamVR 生成的防撞系統(tǒng)。
0x03 Apparatus
本節(jié)概述了在下表中測試使用的系統(tǒng)和 VR 設(shè)備。重要的是要注意這些是現(xiàn)成的設(shè)備,提供了詳細(xì)的細(xì)節(jié)。所有需要進(jìn)行這項工作的是一臺游戲電腦、HTC Vive 和 Oculus Rift,也構(gòu)建了自己的工具。
0x04 Discovery and Attack Implementation
虛擬現(xiàn)實系統(tǒng)的安全分析有幾個主要目標(biāo),研究試圖回答以下問題:
· VR 用戶的安全會受到威脅嗎?
· VR 用戶會迷失方向嗎?
· VR用戶可以被操縱嗎?
為了初步了解系統(tǒng),使用 SteamVR 生成了系統(tǒng)報告。這產(chǎn)生了邊界數(shù)據(jù)的位置、默認(rèn)和當(dāng)前系統(tǒng)設(shè)置、可執(zhí)行路徑位置以及許多其他功能。以純文本形式存儲,沒有進(jìn)行完整性檢查,這被認(rèn)為是一個漏洞。為了完整性,對 Steam、SteamVR 和應(yīng)用程序工件進(jìn)行了手動檢查。通過檢查 API 文檔來熟悉 OpenVR。小規(guī)模的開發(fā)工作導(dǎo)致發(fā)現(xiàn)缺乏對 VR 資源的訪問控制。發(fā)現(xiàn)未經(jīng)審查的應(yīng)用程序能夠訪問和修改 VE。無法監(jiān)管和驗證對 VR 系統(tǒng)的訪問也被認(rèn)為是一個漏洞。
在研究和發(fā)現(xiàn)階段,采用了強(qiáng)大的對抗模型;不限制攻擊者的能力。這樣做是為了促進(jìn)強(qiáng)大的安全分析。由于范圍僅限于 VR 系統(tǒng)及其應(yīng)用程序,假設(shè)攻擊者以某種方式破壞了目標(biāo)機(jī)器,允許用戶之后使用。另一方面,對抗性目標(biāo)是由假設(shè)指導(dǎo)的,特別是與沉浸式 VR 相關(guān)的假設(shè)。與假設(shè)一致并表明攻擊成功,強(qiáng)加了其他幾個次要對抗性目標(biāo):
· 目標(biāo) VR 用戶不會立即有跡象表明他們的隱私受到損害。
· 攻擊不會中斷正在進(jìn)行的 VR 應(yīng)用程序或表明發(fā)生了惡意活動,除非這是攻擊的目標(biāo)。
· VR 用戶無需采取任何行動即可發(fā)起攻擊。
對攻擊實施的發(fā)現(xiàn)和要求(以下部分)允許進(jìn)一步完善對抗性要求。修改 VE 的攻擊需要能夠啟動 OpenVR 應(yīng)用程序的實例,或者對 VR 系統(tǒng)配置文件具有有意義的寫入權(quán)限。配置文件可用性本身不是必需的,但會降低攻擊的復(fù)雜性并提供其他幾個有價值的控制點。影響持續(xù)用戶體驗的能力還需要能夠生成 OpenVR 實例,而僅修改配置文件將阻止實時攻擊。此外,影響 VR 場景或從運(yùn)行時請求信息的攻擊也需要 OpenVR 實例。一般來說,對手需要修改安全邊界或房間規(guī)模配置的能力。
將沉浸式攻擊定義為任何針對沉浸式 VR 的獨特屬性和相關(guān)沉浸式用戶漏洞的攻擊。沉浸式攻擊會導(dǎo)致 VE 被惡意修改,從而造成身體或精神傷害和/或干擾用戶。根據(jù)攻擊的結(jié)果對沉浸式攻擊進(jìn)行分類,針對沉浸式攻擊的具體實現(xiàn)創(chuàng)造了以下新術(shù)語:
· 陪伴攻擊(Chaperone Attack):任何修改 VE 邊界(VR 墻)的攻擊。這可用于使虛擬空間對于沉浸式用戶而言顯得更小或更大,或者可用于防止 Chaperone 在沉浸式會話期間幫助用戶識別他們的真實世界邊界(真實墻壁)。
· 迷失攻擊(Disorientation Attack):用于引起沉浸式 VR 用戶頭暈和困惑感的任何攻擊。
· 虛擬環(huán)境操縱(Human Joystick Attack):用于在用戶不知情的情況下控制沉浸式用戶的物理移動到預(yù)定物理位置的任何攻擊。在工作中,通過操縱用戶的虛擬環(huán)境來實現(xiàn)這一點。
· 疊加攻擊(Overlay Attack):任何在玩家的 VR 視圖上疊加不需要的圖像/視頻/內(nèi)容的攻擊。播放器將無法刪除內(nèi)容。這種攻擊包括持久圖像以及在虛擬空間中保持固定的內(nèi)容。
操縱 Steam 配置文件對于陪伴攻擊和迷失方向攻擊至關(guān)重要。為了解析和修改配置文件,使用了 Python 3.6,特別是 JSON 模塊。為了復(fù)制場景并證明遠(yuǎn)程黑客可以實施攻擊,整合了一個能夠遠(yuǎn)程執(zhí)行攻擊有效載荷的反向 shell。為了從 HTC Vive 收集從設(shè)備正面 HMD 捕獲的圖像,利用了使用簡單快速多媒體庫 (SFML) API構(gòu)建的用戶數(shù)據(jù)報協(xié)議 (UDP) 流。
為了向讀者提供一些背景信息,在攻擊實施之前使用了一個通用場景(下圖),在該場景中可能會使用這些威脅。關(guān)于有效載荷交付的假設(shè)依賴于目標(biāo)機(jī)器的初始妥協(xié)以及具有適當(dāng) OpenVR 驅(qū)動程序的 VR 系統(tǒng)的存在(默認(rèn)由 SteamVR 和 Oculus 提供)。任何可能導(dǎo)致用戶土地有效載荷執(zhí)行的漏洞利用或社會工程策略都足以滿足此階段的需求。專門針對這些攻擊開發(fā)了一個命令和控制 (C2) 偵聽器,但是任何后期開發(fā)工具(例如 meterpreter)都可以使用。一旦執(zhí)行, C2 將用于操作必要的配置文件并啟動 OpenVR 的實例。這些最小的應(yīng)用程序會將攻擊者的命令轉(zhuǎn)發(fā)到 VR 運(yùn)行時。由于 OpenVR 應(yīng)用程序是獨立的,因此正在進(jìn)行的 VR 應(yīng)用程序可以不間斷地繼續(xù)執(zhí)行。最后,任何提取的信息都會轉(zhuǎn)發(fā)回攻擊者。
通過手動系統(tǒng)檢查發(fā)現(xiàn)了一個 JSON 文件,其中存儲了房間設(shè)置的詳細(xì)信息,如下表。每個房間設(shè)置或空間都包含代表房間邊界的 3D 幾何數(shù)據(jù)。創(chuàng)建了一個工具來解析和修改 Chaperone 工件中的邊界。該工件描繪了一個安全漏洞,其中關(guān)鍵安全特征數(shù)據(jù)(物理墻邊界)以明文、未加密且易于訪問的方式存儲。
通過修改 JSON 配置文件開始攻擊。 HTC Vive 和 Oculus Rift 分別創(chuàng)建了包含工件的目錄。如果文件操作發(fā)生在用戶沉浸在 VR 環(huán)境中時,則此修改將無效,直到 VR 系統(tǒng)重新啟動。為了應(yīng)對這一挑戰(zhàn),將 OpenVR 實例初始化為后臺應(yīng)用程序(下圖,第 1 行)。此應(yīng)用程序類型無權(quán)訪問渲染器,也不會啟動 SteamVR,但可以向 Steam 進(jìn)程發(fā)送命令。要求 Steam 從磁盤重新加載配置文件(第 2 行)。這會將數(shù)據(jù)加載到流程的 Chaperone 工作副本中。然后將副本提交給系統(tǒng),作為活動的 Chaperone(第 3 行)。這種變化在 VR 沉浸期間無縫發(fā)生。如果 VR 用戶沒有意識到 Chaperone,這可能會被忽視并且不會影響渲染。沉浸式用戶對不再有效的界限的信心可能會導(dǎo)致身體傷害。
實施該攻擊是因為可以輕松訪問 Chaperone 數(shù)據(jù)及其簡單性,但是,需要注意的是,可以在 OpenVR 中完全修改 Chaperone。函數(shù) SetWorkingCollisionBound sInfo 可用于修改 Chaperone 的工作副本的邊界。然后調(diào)用 CommitWorkingCopy 將應(yīng)用更改。如果攻擊者的意圖是簡單地隱藏碰撞邊界,則可以將 opacity 屬性設(shè)置為透明或 forceVisible 為 false。
迷失攻擊與陪伴攻擊類似,因為整個過程是相同的。這種攻擊會調(diào)整沉浸在 VR 中的用戶在虛擬游戲空間中的位置和旋轉(zhuǎn)。當(dāng)用戶在沒有身體運(yùn)動的情況下受到視覺運(yùn)動提示時,可能會發(fā)生視覺誘發(fā)運(yùn)動病 (VIMS) 。通過大力和隨機(jī)地應(yīng)用平移和旋轉(zhuǎn),復(fù)制了一種暈船的感覺。利用 Python JSON 解析腳本,修改了 Chaperone 配置文件。兩個空間特征控制著玩家的方向:偏航和平移。調(diào)整平移會導(dǎo)致橫向移動,而偏航會影響用戶面對的方向。進(jìn)行小的調(diào)整并調(diào)用 Chaperone 重新加載,可以控制玩家的方向。
由于實施的攻擊使用與陪伴攻擊相同的配置文件,因此在 Oculus Rift 上的成功程度類似于 HTC Vive 中的陪伴攻擊。當(dāng) Oculus Rift 從 Steam 啟動時,能夠應(yīng)用平移和旋轉(zhuǎn)。將在后文討論驅(qū)動程序級攻擊,注意到通過 OpenVR 自定義驅(qū)動程序可以將跟蹤解決方案從一個設(shè)備映射到另一個設(shè)備。例如,用控制器的跟蹤解決方案替換 HMD 的跟蹤解決方案可能會導(dǎo)致快速和迷失方向的運(yùn)動。這種攻擊的實施通過使用系統(tǒng)跟蹤自身并導(dǎo)致更流暢的中斷來減少延遲。
對虛擬環(huán)境操縱攻擊的實施在所有方面都與迷失方向攻擊相似,只是執(zhí)行的速度和控制不同。然而,攻擊對沉浸式 VR 用戶的影響非常明顯,足以保證單獨分類。攻擊試圖通過復(fù)合難以察覺的 VE 轉(zhuǎn)換將玩家引導(dǎo)到攻擊者定義的方向和位置。 VE 的逐漸轉(zhuǎn)變旨在讓玩家將他們的位置重新調(diào)整到新的虛擬中心點。
為了在 VR 用戶不知情的情況下引導(dǎo)和控制他們的動作,必須首先消除任何可能的犯規(guī)跡象。任何方向的連續(xù)平移都會導(dǎo)致玩家越過第一層,因此在大多數(shù)情況下,通過禁用或擴(kuò)展 Chaperone 來開始攻擊。攻擊者有可能同時訪問屏幕數(shù)據(jù)和前置攝像頭,這可以通知攻擊者必要的信息,以決定他們打算移動玩家的方向以及應(yīng)用的最佳時間。然后,以小到讓沉浸式 VR 用戶察覺不到的量逐漸向所需方向應(yīng)用平移。重復(fù)此操作,直到玩家到達(dá)障礙物或所需的物理終點。在某些情況下,有必要利用旋轉(zhuǎn)的變化,但是,這取決于應(yīng)用程序(VR 體驗)。由于所有其他攻擊本質(zhì)上都是技術(shù)性的,將進(jìn)行了一項人類參與者欺騙研究,以檢查實施的虛擬環(huán)境操縱攻擊的有效性。
疊加層是投影到渲染屏幕上的二維圖像 。此功能旨在補(bǔ)充沉浸式 VR 場景,不會引起中斷。無論正在運(yùn)行的 VR 應(yīng)用程序如何,這都允許使用疊加層。可以創(chuàng)建無限疊加,但是,只能渲染一個高清疊加。覆蓋通常用于應(yīng)用程序菜單、信息顯示和儀表板。與任何虛擬對象一樣,疊加層可以絕對定位或相對定位。可以轉(zhuǎn)換疊加層以匹配任何被跟蹤設(shè)備的位置。通過將覆蓋層鏈接到 HMD 或 VR 控制器,攻擊者可以確保惡意圖像將持續(xù)可見。
沒有允許用戶強(qiáng)制關(guān)閉疊加層的內(nèi)置 VR 應(yīng)用程序功能。這與從任何應(yīng)用程序調(diào)用覆蓋的能力相結(jié)合,使其特別容易被誤用。一旦執(zhí)行了攻擊,玩家關(guān)閉覆蓋層的唯一方法就是重新啟動應(yīng)用程序。此功能由 Valve 軟件提供,作為渲染圖像的一種便捷方式,但是,疊加層的某些方面可能會導(dǎo)致潛在的惡意行為。上圖中提供了此攻擊的參考代碼。通過將類型初始化為 VRApplication Overlay(第 1 行)來開始攻擊。如果尚未運(yùn)行,這將導(dǎo)致 SteamVR 啟動。然后創(chuàng)建疊加并提供一個鍵和句柄以供參考(第 2 行)。默認(rèn)疊加可見性設(shè)置為隱藏。這種攻擊將直接在用戶面前顯示圖像并封裝大部分 VR 視圖。為此,首先在第 4 行捕獲游戲空間的原點。然后應(yīng)用平移將圖像移動到玩家視野前方 1 米處(第 5 行)。然后將轉(zhuǎn)換與 HMD 的跟蹤聯(lián)系起來(第 6 行)。最后,加載圖像并將疊加層設(shè)置為可見(第 8-9 行)。
用常用的 VR 應(yīng)用程序戰(zhàn)略性地替換這種攻擊播放負(fù)載可能是一種投放廣告或完全阻止游戲作為勒索軟件形式的手段。通過有效載荷替換 SteamVR 工具的路徑來實現(xiàn)這一點,要求讀者考慮在沉浸式體驗期間攻擊者疊加干擾圖像的心理影響。
盡管并非沉浸式獨有,但以下攻擊進(jìn)一步利用了 VR 系統(tǒng)的許可性質(zhì)。隨著由內(nèi)而外跟蹤的出現(xiàn),攝像機(jī)可能是房間尺度沉浸的必要條件。此外,可以從系統(tǒng)中提取各種各樣的信息,為攻擊者提供攝像頭不可見的信息。結(jié)合由此產(chǎn)生的高影響,包括以下概念驗證攻擊。
HTC Vive 與 Oculus Rift 的獨特之處在于 HMD 有一個前置攝像頭。這提供了另一個攻擊面。請注意,SteamVR 確實支持啟用和禁用攝像頭。禁用此功能將阻止相機(jī)初始化和提供視頻流。這是觀察到的唯一一次限制服務(wù)權(quán)限的嘗試。
與 Chaperone 配置文件類似,SteamVR 將配置設(shè)置存儲在未加密的 JSON 文件中。修改包含常規(guī)設(shè)置的文件,添加屬性相機(jī):{enableCamera: True}。相反,缺少該屬性會禁用相機(jī)。要使更改生效,必須重新啟動 SteamVR。 OpenVR 在函數(shù) vr::VR_Shutdown() 中提供了關(guān)閉系統(tǒng)的功能。最后,系統(tǒng)可以通過以非后臺模式臨時初始化系統(tǒng)來重新啟動,例如 vr::VRAppliction_Overlay 或 vr::VRApplication_Scene。無論系統(tǒng)處于何種狀態(tài),這都允許攻擊者訪問攝像頭。
訪問攝像頭不會產(chǎn)生渲染圖像,也不需要特定場景,因此可以將攻擊初始化為 OpenVR 后臺進(jìn)程(上圖,第 1 行)。同樣,這允許進(jìn)程在不中斷當(dāng)前場景應(yīng)用程序的情況下影響 VR 系統(tǒng)。由于沒有跡象表明相機(jī)已開機(jī),否則用戶將不會意識到攻擊。請求訪問將激活相機(jī)的視頻流(第 4 行)。請注意,如果攻擊是第一個調(diào)用視頻服務(wù)的客戶端,則前幾幀可能會由于相機(jī)旋轉(zhuǎn)和自動曝光而延遲。調(diào)用 GetvideoStreamBuffer 將幀和標(biāo)頭復(fù)制到指定的緩沖區(qū)中(第 5 行)。建議在幀之前接收標(biāo)頭,以確保分配了適當(dāng)?shù)膬?nèi)存量。利用UDP 流能夠?qū)С鰯z像機(jī)的視頻流。 OpenVR 還支持捕獲許多其他數(shù)據(jù)點。以同樣的方式可以導(dǎo)出跟蹤解決方案,進(jìn)一步刺激目標(biāo)的物理行為或環(huán)境。重建泄露的跟蹤信息,能夠?qū)崟r監(jiān)控用戶的動作。
0x05 Testing and Results
針對 HTC Vive 的所有經(jīng)過測試的 OpenVR 和 SteamVR 應(yīng)用程序的概念驗證攻擊是成功的。由于 SteamVR 是 HTC Vive 碰撞邊界的唯一管理器,針對 Chaperone 配置文件影響了所有應(yīng)用程序。發(fā)現(xiàn)修改工件的方法比完全在 OpenVR 中完成的更快的 Chaperone 工作副本方法具有可靠性優(yōu)勢。這是因為工作副本無法根據(jù) HMD 的狀態(tài)提交。此外,快速修改導(dǎo)致 Chaperone 進(jìn)入錯誤狀態(tài),從而阻止了進(jìn)一步的 Chaperone 提交。發(fā)現(xiàn)如果系統(tǒng)空閑或接近傳感器沒有檢測到正在佩戴的耳機(jī),Chaperone 也會處于非活動狀態(tài)。相反,通過修改配置文件,更改將保留,下次加載 Chaperone 時,更改將生效。
當(dāng)通過 Steam 啟動時,Oculus Rift 將繼承 Guardian 和 Chaper one。實施只會影響 Steam 生成的Chaperone。啟動時,SteamVR 將加載 Guardian 邊界信息并創(chuàng)建一個包含空間的 JSON 文件,類似于 SteamVR 生成的房間設(shè)置。由于攻擊針對的是 Steam 生成的文件,因此該實現(xiàn)不會改變 Guardian。預(yù)計 Oculus Rift 會生成一個包含此信息的工件,并且可以以類似的方式進(jìn)行修改。發(fā)現(xiàn)將邊界擴(kuò)展到玩家能夠到達(dá)的范圍之外是隱藏陪伴者的更好方法。在某些情況下,降低 Chaperone 的不透明度并不會影響所有安全功能。如果啟用,當(dāng)玩家接近障礙物時,前置攝像頭將繼續(xù)激活。此外,一些 Chaperone 模式會繼續(xù)在地板上顯示輪廓,這個參數(shù)也可以修改。
這些攻擊的技術(shù)成功率與 Chaperone Attack 的技術(shù)成功率相同,因為針對的是相同的工件。發(fā)現(xiàn)在這兩個系統(tǒng)中,VR 用戶的方向都可以被操縱。通過針對 HTC Vive 的 Steam 攻擊,預(yù)期成功,但 OculusVR 保持獨立的房間配置和方向。當(dāng) Rift 在 Steam 中初始化時,房間方向從 Oculus 檢索并存儲在 Chaperone 配置文件中。此文件隨后會被通過 SteamVR 啟動的所有應(yīng)用程序引用。對此工件的更改將反映在所有 Steam 應(yīng)用程序上,但不會被 Oculus 房間配置繼承。從 SteamVR 生成的配置文件中更改用戶位置和方向的能力表明 Oculus 完全放棄了其房間規(guī)模的配置。 OpenVR 很可能會利用 Oculus SDK 中的功能,這表明這些攻擊也可能僅通過 Oculus SDK 進(jìn)行。盡管是一個封閉系統(tǒng),Oculus Rift 仍然允許第三方管理人員訪問其某些功能。
發(fā)現(xiàn)迷失攻擊的有效性與人工運(yùn)動的速度和幅度有關(guān)。令人驚訝的是,觀察到較慢的流體正弦波比急速波動更容易產(chǎn)生暈船感和降低平衡。通過更小、更頻繁的更新,以及進(jìn)程間通信同步操作和提交,提高了攻擊的流動性。可能存在用戶將拒絕任何感知到的人工運(yùn)動的量級點。需要進(jìn)一步的測試來驗證這種關(guān)系。
在所有測試的應(yīng)用程序中,成功地在屏幕上填充圖像。此外,發(fā)現(xiàn)無法在用戶沉浸時移除圖像。對受害者隱藏有效載荷進(jìn)程將進(jìn)一步隱藏負(fù)責(zé)的程序。這種攻擊對 Oculus Rift 也很成功,但是,OculusVR 確實會檢查第三方應(yīng)用程序。默認(rèn)情況下,Oculus Rift Manager 將不允許啟動非 Oculus 商店的應(yīng)用程序。必須授予此權(quán)限才能使用 Steam 軟件及其應(yīng)用程序。鑒于某些內(nèi)容只能在 Steam 上或從其他開發(fā)者處找到,因此許多用戶會允許使用此功能。一旦有效載荷應(yīng)用程序被執(zhí)行,它就會出現(xiàn)在受害者的 Oculus 庫中,從而降低透明度。需要進(jìn)一步的開發(fā)和測試來避免這種基于用戶誘導(dǎo)的權(quán)限模型。相比之下,Chaperone、Disorientation 和 Human Joystick 攻擊沒有被標(biāo)記,因為它們沒有產(chǎn)生渲染產(chǎn)品。
在撰寫本文時,Oculus Rift 沒有前置攝像頭,因此結(jié)果僅適用于 HTC Vive。在所有經(jīng)過測試的 VR 應(yīng)用程序中,都能夠初始化和提取視頻流緩沖區(qū)。事實上,一個活躍的場景是沒有必要的。 VR 系統(tǒng)的狀態(tài)是一個因素,無論如何,在所有情況下,都能夠創(chuàng)造條件來訪問相機(jī)。在不知道系統(tǒng)狀態(tài)的情況下,兩個動作過程減輕了相機(jī)返回 NULL 的處理請求。第一個,由對 HMD 的失敗請求指示,通過打開系統(tǒng)電源來修復(fù)。為了確保系統(tǒng)在不中斷當(dāng)前應(yīng)用程序的情況下處于活動狀態(tài),可以將一個短期應(yīng)用程序初始化為覆蓋。根據(jù)假設(shè),這將確保系統(tǒng)在使用時不會產(chǎn)生任何影響。其次,與通過配置文件啟用的相機(jī)相關(guān)的權(quán)限授予了所需的訪問權(quán)限。唯一會干擾玩家的情況是系統(tǒng)正在使用且攝像頭被禁用的情況。誘導(dǎo)系統(tǒng)重啟可能會向受害者發(fā)出警報。如果攻擊者需要有關(guān)可用硬件類型的更多信息,OpenVR 將使用 IVRSettings 類提供此信息。
0x06 Human Joystick Experiments
為了確定虛擬環(huán)境操縱攻擊是否能夠在沉浸式用戶不知情的情況下操縱他們的位置,利用 HTC Vive 設(shè)計并進(jìn)行了一項欺騙研究。在實驗中,用戶在 VR 中玩沉浸式街機(jī)風(fēng)格游戲,而虛擬環(huán)境操縱攻擊試圖將玩家導(dǎo)航到預(yù)定位置。攻擊是否成功通過玩家到達(dá)攻擊者創(chuàng)建的物理目的地和沉浸式 VR 用戶報告沒有意識到攻擊或異常運(yùn)動來衡量,假設(shè)沉浸式玩家會跟隨 VE。
實驗設(shè)計:設(shè)計了實驗以及調(diào)查方法。該實驗是一項欺騙性研究,因為招募參與者的前提是他們將玩 VR 游戲。參與者沒有被告知會操縱他們的 VE 來影響他們的身體運(yùn)動,直到他們在每次實驗結(jié)束時得到匯報。
工具創(chuàng)建:在這個階段,開發(fā)了軟件來跟蹤和可視化參與者的位置和 VE 的轉(zhuǎn)換。
IRB 批準(zhǔn):提交了 IRB 請求并獲得了欺騙性研究的批準(zhǔn)。
參與者招募:通過發(fā)送電子郵件、張貼海報,最后通過電子郵件向游戲俱樂部成員發(fā)送參與者來招募參與者。參與者的選擇與性別、年齡或 VR 體驗無關(guān)。
實驗運(yùn)行:參與者首先簽署同意書,實驗運(yùn)行的第一階段用于讓參與者熟悉 HTC Vive。然后要求他們玩 Arcade 風(fēng)格的游戲,使用創(chuàng)建的工具記錄數(shù)據(jù)。最后要求參與者完成沉浸后調(diào)查,并聽取匯報。
為了沿著攻擊軸提供最大的游戲空間,實驗開始時 VE 從物理房間的中心偏移,如下圖所示。伴侶無法阻止參與者接收有關(guān)物理房間的視覺提示( 3.4mx3.4m) 和工作站的位置,使得 HTC Vive 的系繩允許訪問房間的所有區(qū)域。將參與者到達(dá)表示攻擊成功的位置定義為沿 Y 軸在參與者前方 1.9 米處,半徑為 20 厘米。到目的地的距離是通過觀察參與者的典型領(lǐng)土來確定的,以便進(jìn)行測試。這確保了參與者不會因為不受影響的游戲而前往目的地,并且在大多數(shù)游戲中,虛擬墻和邊界不鼓勵這樣做。選擇游戲以快速理解為基礎(chǔ),玩家技能不會對體驗產(chǎn)生太大影響,平均游戲周期在5-15分鐘之間。
參與者獲得了一個快速的 HTC Vive 教程,并允許他們熟悉該系統(tǒng)。當(dāng)他們開始 VR 游戲時,開始使用開發(fā)的工具以 20x/秒的頻率收集 HMD 和 VE 位置數(shù)據(jù)。在開始攻擊之前,參與者被允許玩至少一個游戲周期。這能夠確認(rèn)每個玩家的領(lǐng)土都沒有延伸到目的地。
然后通過以 0.01 米/秒的速度沿 Y 軸移動 VE 來執(zhí)行攻擊。總攻擊平移等于到目的地的距離,VE 以目的地為中心。數(shù)據(jù)收集最多持續(xù) 15 分鐘,或者直到參與者因接近物理房間邊界而停止。參與者完成了一項沉浸后調(diào)查,詢問他們在游戲中(沉浸式)對攻擊的認(rèn)識。
在本節(jié)中展示了對下表中顯示的每個測試游戲的發(fā)現(xiàn)。測試了(n=5) 游戲并招募了 (n=64) 參與者。盡管實驗的目的是調(diào)查攻擊的成功與否,但還是針對多種類型的游戲測試了該攻擊,以探索構(gòu)建攻擊的外部有效性。注意到這不是針對所有應(yīng)用程序類型的這種攻擊類型的全面分析,但觀察到有助于攻擊成功的游戲玩法趨勢。
游戲 1-4 很常見,因為玩家要么被要求移動到給定位置以與虛擬對象交互,要么根據(jù)位置獲得優(yōu)勢。這些游戲為玩家保持以 VE 為中心提供了強(qiáng)大的動力,因此實現(xiàn)了 94.4% 的成功率,能夠?qū)⒊两?VR 用戶移動到預(yù)定的位置。
第 5 個游戲之所以被選中,是因為玩家沒有被迫與靜態(tài)虛擬物體互動,并且只能站著玩。對于這款游戲,觀察到了 50% 的成功率。在這場比賽中,參與者對攻擊的反應(yīng)各不相同,部分原因可能是他們的比賽風(fēng)格。由于這個游戲沒有明確提供讓玩家保持以 VE 為中心的動機(jī),沒有響應(yīng)的參與者允許 VE 遠(yuǎn)離他們。相比之下,選擇與風(fēng)景互動的參與者的反應(yīng)與游戲 1-4 類似。在三名參與者中觀察到了第三種特殊的反應(yīng);它們不與靜態(tài)虛擬對象交互,但傾向于保持它們與附近對象的相對位置。這說明有些玩家,不管玩法要求如何,都會下意識地對信息進(jìn)行自我修正。盡管攻擊的成功與游戲 1-4 不相上下,但這一發(fā)現(xiàn)表明,無論應(yīng)用程序如何,一些受害者都容易受到攻擊。
對攻擊(56/64)做出反應(yīng)的參與者報告說,在 VR 沉浸結(jié)束時對他們的位置感到驚訝。下圖顯示了參與者在 VE 中采用的示例路徑,這些路徑保持在游戲空間的中心。這是玩家在 VE 方面所經(jīng)歷的可視化。玩家在 VE 中的穩(wěn)定區(qū)域表明玩家對平移的無知,因為他們認(rèn)為自己的整體位置是靜態(tài)的。 VE 中的路徑與物理路徑的對比表明向前移動是攻擊的結(jié)果。
13 名參與者在與目的地的物理墻相撞時被重新定位,然而,據(jù)報告,在碰撞之前,他們不知道他們已經(jīng)從起始位置走了很長一段路。在意識到 VE 變化的兩個參與者中,一個注意到轉(zhuǎn)換并遵守了,而另一個在 VR 中移動時感到不舒服,這次攻擊的成功將取決于受害者的能力和移動意愿,因為 VE 只是試圖將玩家?guī)У侥康牡亍]有改變執(zhí)行攻擊的速度,但是,進(jìn)一步調(diào)查攻擊的速度和幅度與意識之間的關(guān)系可能會提高成功率。
由于參與者確實傾向于遵循虛擬中心點,觀察到導(dǎo)致他們糾正 VE 變化的兩種主要機(jī)制。 Xortex、Surgeon Simulator 和 Guns’n’Stories 游戲讓玩家頻繁輪換。這導(dǎo)致參與者邁出了許多他們可能沒有注意到他們已經(jīng)向前邁進(jìn)的小步。與動作膽怯的參與者相比,在虛擬空間中自信地走動并積極參與游戲的參與者褲子往往更能反映。Xortex、Surgeon Simulator 和 Guns’n’Stories 路徑顯示玩家由于頻繁旋轉(zhuǎn)而逐漸適應(yīng)平移。雖然長弓游戲涉及旋轉(zhuǎn),但事實證明這取決于參與者的游戲風(fēng)格。不輕易移動腳的參與者傾向于對與上圖中的長弓和彈弓路徑相似的平移做出反應(yīng)。 對 VE 平移的校正主要通過向前的大運(yùn)動發(fā)生,然后是不完全的互惠移動。參與者報告說他們感覺好像他們必須比平常更遠(yuǎn),但是,在完成動作后,他們感覺好像回到了原來的位置。
參與者運(yùn)動的程度可能代表他們之前對 VR 的體驗,而在 VE 中移動的舒適度和信心反映了參與者對 VR 的熟悉程度。為了確定先前的經(jīng)驗是否影響參與者對攻擊的反應(yīng)速度,比較了報告先前經(jīng)驗的參與者與沒有報告先前經(jīng)驗的參與者到達(dá)目的地所需的時間。報告先前使用 VR 的參與者(M = 183.0,SD = 62.9)與沒有使用 VR 的參與者相比(M = 181.6,SD = 42.0)在到達(dá)目的地的時間上沒有差異,t(53) = -0.10,p = 0.919。 p 值表示兩組在統(tǒng)計上相似的概率為 91.9%。
由于在整個實驗過程中攻擊率保持不變,這些初步結(jié)果表明攻擊成功的假設(shè)與玩家的經(jīng)驗水平無關(guān),盡管需要更多的測試來驗證這一說法。考慮到平移率(0:01 m/s) 和距離(1.9m),到目的地的平均時間進(jìn)一步強(qiáng)化了原始假設(shè)。由于目的地的半徑為 (20 cm),與觀察到的平均到達(dá)目的地的平均時間為 182.4 秒相比,對攻擊的理想反應(yīng)將需要參與者 170 190 秒。兩組的總體和每場比賽時間相似性如下圖所示。 比較每個應(yīng)用程序的時間可能會揭示與玩家響應(yīng)的關(guān)系,但是,這項初步研究對樣本量的限制排除了這種分析。
這些游戲在促進(jìn)攻擊方面有兩個功能。假設(shè)持續(xù)的移動會淡化 VE 中的微小變化,并且游戲的目標(biāo)會吸引用戶。這可以提供必要的分心以防止攻擊被察覺。其次,游戲為用戶提供了移動的動力。通常,玩家被迫服從攻擊以繼續(xù)比賽。上面描述的大幅向前移動偶爾是參與者伸手去拿虛擬對象或與玩家繼續(xù)進(jìn)行所需的菜單項交互的結(jié)果。因此,與 VE 中的特定空間有密切聯(lián)系的游戲?qū)⑵仁雇婕乙苿印T谶@種情況下,攻擊的成功更多地取決于是否保持秘密。另一方面,不為玩家位置提供優(yōu)勢的游戲必須依靠玩家來維持他們的相對位置。本研究中使用的游戲代表了沉浸式 VR 的多種應(yīng)用程序中的一小部分,其中許多旨在讓玩家保持坐姿。由于每種應(yīng)用方式的分心和動機(jī)程度不同,進(jìn)一步調(diào)查可能會得出沉浸程度和對攻擊的易感性之間的關(guān)系。
0x07 Discussion
每次攻擊的技術(shù)普遍成功都?xì)w功于攻擊層 OpenVR。有了合理的確定性,可以得出結(jié)論,所有 OpenVR 兼容系統(tǒng)都容易受到這些類型的攻擊。無論硬件接口如何,都認(rèn)為 VR 系統(tǒng)的各個方面都需要受到保護(hù)。惡意行為的后果被沉浸的物理和生理影響放大。盡管專門針對 OpenVR,但本研究中發(fā)現(xiàn)的潛在漏洞適用于所有 VR 系統(tǒng)。概念驗證攻擊表明,VR 安全和安全功能需要進(jìn)一步開發(fā)和保護(hù)。鑒于所有完全沉浸式 VR 系統(tǒng)都需要某種形式的碰撞檢測,因此應(yīng)優(yōu)先對這些安全功能進(jìn)行全面評估。雖然同意用戶手動調(diào)整他/她的游戲區(qū)域的邊界有一些好處,但需要保護(hù)對這些數(shù)據(jù)的訪問。 SteamVR 以明文形式存儲這些工件提供了一個重大漏洞。建議加密此數(shù)據(jù)并限制其對創(chuàng)建個人和服務(wù)的訪問。由于必須保持安全功能的完整性,同時也是可管理的,建議應(yīng)用Clark-Wilson完整性模型。必須通過 VR 運(yùn)行時進(jìn)行和驗證交易的地方。
Overlay 和 Camera Attacks 展示了該架構(gòu)的許可結(jié)構(gòu)。在測試過程中,使用了超過五個在場景后臺運(yùn)行的額外惡意應(yīng)用程序。同樣,SteamVR 明顯缺乏應(yīng)用程序控制,而 OculusVR 未能檢查無渲染進(jìn)程。 OpenVR 為應(yīng)用程序管理提供了一個 API 接口,然而,疊加攻擊的成功證明了應(yīng)用程序隔離的利用不足。不受監(jiān)管的應(yīng)用程序?qū)е?VR 系統(tǒng)失去控制和數(shù)據(jù)泄露。關(guān)閉或限制 VR 應(yīng)用程序?qū)ζ涓髯原h(huán)境的訪問可能適合防止惡意行為者中斷有效的應(yīng)用程序。因此,建議 VR 應(yīng)用程序管理人員限制對經(jīng)過審查的程序的訪問,并在更大程度上要求用戶批準(zhǔn)第三方應(yīng)用程序。盡管超出了本文的范圍,但發(fā)現(xiàn) Steam 應(yīng)用程序缺乏完整性檢查。建議建立應(yīng)用程序簽名以防止不必要的修改。
另一種解決方案是Arya 框架,用于實施管理 AR 現(xiàn)實輸出的政策。這種策略管理應(yīng)納入現(xiàn)有的沉浸式 VR 系統(tǒng)。相機(jī)攻擊明顯缺乏基于權(quán)限的訪問。盡管 Steam 允許用戶限制相機(jī)的使用,但權(quán)限屬性未加密存儲且易于訪問。這種透明度允許攻擊者克服相機(jī)限制。隨著 VR 的繼續(xù)傳播,其功能和特性也將繼續(xù)傳播。例如,Android 已經(jīng)通過訪問控制列表 (ACL) 實現(xiàn)了基于權(quán)限的安全性。一種具有 VR 系統(tǒng)特殊功能的類似方法,將它們的使用限制在指定的應(yīng)用程序中,可以防止惡意的第三方軟件濫用其訪問權(quán)限。建議擴(kuò)展訪問控制以驗證所有訪問 VR 資源的應(yīng)用程序。如果建立來自受信任的開發(fā)人員的應(yīng)用程序簽名,其中許多可以得到驗證。
0x08 Future Work
盡管攻擊集中在軟件接口層,但在整個分析過程中,發(fā)現(xiàn)了其他領(lǐng)域的漏洞。 OpenVR 提供了為附加硬件開發(fā)驅(qū)動程序的框架。這包括為 Vive 系統(tǒng)重載已有的驅(qū)動程序并創(chuàng)建虛擬控制器。菜單操作和交互覆蓋主要接收來自控制器指針的輸入,并且通過惡意虛擬控制器,攻擊者可以遠(yuǎn)程控制玩家的計算機(jī)系統(tǒng)。一個流行的 VR 應(yīng)用程序,如虛擬桌面,默認(rèn)在啟動時加載,允許用戶在 VR 中訪問他們的桌面。如果存在虛擬控制器,攻擊者可以獲得對客戶端計算機(jī)的完全訪問權(quán)限。虛擬控制器具有透明性的優(yōu)點,其中控制器的 3D 模型表示不會被指定或呈現(xiàn)。應(yīng)該注意的是,驅(qū)動程序的安裝將使有效載荷的交付和執(zhí)行變得越來越復(fù)雜。
HTC Vive 有一個獨特的利用Lighthouse的跟蹤系統(tǒng)。這些Lighthouse使用 IR 為被跟蹤設(shè)備提供絕對定位。為了減少所需傳感器的數(shù)量,跟蹤解決方案由 IMU提供的相對跟蹤補(bǔ)充。僅基于 IMU 數(shù)據(jù)的跟蹤不是很準(zhǔn)確,但有助于在傳感器受阻時填補(bǔ)空白。懷疑禁用絕對跟蹤會導(dǎo)致跟蹤解決方案偏離真實玩家的位置。需要進(jìn)一步測試,但是,Lighthouse Redox HTC Vive 逆向工程項目反轉(zhuǎn)了藍(lán)牙低功耗 (LE) 通信以喚醒并設(shè)置睡眠超時。
Lighthouse有自己的一組配置和日志文件,其中包含位置和正常信息。這些文件也以純文本 JSON 格式存儲。這些工件可能會提供額外的攻擊途徑。迷失方向攻擊很可能是通過操縱Lighthouse本身的位置來進(jìn)行的,攻擊了在房間設(shè)置期間建立的靜態(tài)用戶定義的空間。由于Lighthouse自行配置,這可能不太可行。此外,如果Lighthouse檢測到它們受到干擾,它們將立即關(guān)閉轉(zhuǎn)子。需要進(jìn)一步測試以確定是否可以通過操縱這些偽像來引起 IMU 漂移。社交應(yīng)用程序允許沉浸式 VR 用戶在 VR 中聚集和共享內(nèi)容。 Big Screen Beta 等應(yīng)用程序甚至可以共享用戶的計算機(jī)屏幕、手勢和音頻。初步網(wǎng)絡(luò)層分析表明,這些信息中的大部分都是在未加密的情況下傳遞的。懷疑一種新形式的中間人 (MITM) 攻擊可能允許攻擊者加入聊天室并提取信息,甚至可能操縱客戶端的環(huán)境,將此稱為 Man-In-The-Room (MITR) 攻擊。
譯文聲明
本文是翻譯文章,文章原作者Peter Casey , Ibrahim Baggili , and Ananya Yarramreddy,文章來源:ieeexplore.ieee.org
原文地址:https://ieeexplore.ieee.org/document/8675340
譯文僅供參考,具體內(nèi)容表達(dá)以及含義原文為準(zhǔn)