谷歌揭幕 幾天前 各種漏洞利用原型 證明了利用漏洞的可能性 在瀏覽器中執行JavaScript代碼時的Spectre類的代碼, 無需通過上面添加的安全方法。
漏洞可用於訪問進程的內存 正在處理網頁內容 在當前標籤中。 為了測試該漏洞利用程序的操作,啟動了漏洞頁面的網站,並在GitHub上發布了描述該操作邏輯的代碼。
擬議的原型旨在 攻擊系統 Linux和Chrome 7環境中的Intel Core i6500-88U處理器, 儘管這並不排除可以進行更改以在其他環境中使用該漏洞利用程序。
操作方法不特定於 處理器 英特爾:經過適當的調整, 該漏洞已經被證實可以在帶有第三方CPU的系統上運行,包括基於ARM體系結構的Apple M1。 進行細微調整後,該漏洞利用程序還可在基於Chromium引擎的其他操作系統和其他瀏覽器上運行。
在基於標準Chrome 88和Intel Skylake處理器的環境中,我們從負責在當前Chrome選項卡中渲染Web內容的過程(渲染過程)以每秒1 KB的速度實現了數據洩漏。 此外,還開發了其他原型,例如,一種利用漏洞的漏洞,其使用Performance.now()計時器時,以降低穩定性的代價將洩漏率提高到8kB / s,精度為5微秒(0.005毫秒)。 )。 還準備了一個變種,該變種以60毫秒的計時器精度運行,可用於以約XNUMX字節/秒的速率組織對另一個進程的內存的訪問。
已發布的演示代碼包括三個部分:
- 第一部分 校準計時器以估計運行時間 由於推測執行CPU指令而檢索保留在處理器高速緩存中的數據所必需的操作。
- 第二部分 定義分配JavaScript數組時使用的內存佈局。
- 第三部分 直接利用Spectre漏洞確定內存內容 為某些操作的推測執行創造了條件,從而確定了當前進程的狀態,在確定了失敗的預測後,處理器將丟棄其結果,但是執行跟踪將被保存在共享高速緩存中,並且可以使用以下命令恢復使用第三方渠道確定緩存內容的方法,這些渠道分析了對緩存和非緩存數據的訪問時間的變化。
擬議的開採技術 消除了高精度計時器 可通過performance.now()API獲得,並且不支持SharedArrayBuffer類型,該類型允許您在共享內存中創建數組。
該漏洞利用包括Spectre設備和側邊通道洩漏分析器,Spectre設備導致受控的推測代碼執行,側面通道洩漏分析器確定在推測執行期間緩存了哪些數據。
該小工具是使用JavaScript數組實現的, 在其中 試圖訪問緩衝區限制以外的區域,由於存在編譯器添加的緩衝區大小檢查,影響分支預測塊的狀態(處理器推測性地提前執行訪問,但在檢查後恢復狀態)。
為了在定時器精度不足的情況下分析緩存內容,提出了一種方法,該方法欺騙了處理器中使用的Tree-PLRU緩存數據逐出策略,並通過增加循環數,允許顯著增加返回值時的差值時間。從緩存中獲取並且在緩存中不存在任何值的情況下。
谷歌已經發布了該漏洞利用的原型,以展示攻擊的可行性 使用Spectre類漏洞 並鼓勵Web開發人員使用可最大程度降低此類攻擊風險的技術。
同時,谷歌認為,如果不對擬議的原型進行重大修改,就不可能創造出既可用於演示又可廣泛使用的通用漏洞利用程序。
來源: https://security.googleblog.com