藉AVX指令集加速旁路攻擊
該論文提到,當對處理器進行Spectre攻擊的時候,處理器可能需要進行平常不會發生的推測性執行(Speculative Execution),然而當推測性執行被中止後,處理的結果也會一併被捨棄,但有些微架構產生的副作用卻可能殘存下來。
就先前已發表的Spectre攻擊手法中,就有使用這類旁路攻擊的方式,讀取其他程式儲存於憶體中的資料,但是無法透過網路進行遠端攻擊。
格拉茲科技大學的研究人員先是引用Spectre第一型態變種攻擊手法NetSpectre,藉由遠端驅逐(Remote Evict)與重新整理快取(Reload Cache)等手段,每小時可以讀出15bit資料。
而在最新的技術展示中,研究人員不但將這個手法改造為可藉由網路發動遠端攻擊,也將過去藉由快取隱蔽通道攻擊(Cache Covert Channel)的方式,改為使用AVX指令集隱蔽通道攻擊,讓讀取資料的效率提升4倍,來到每小時60bit。
值得注意的是,研究人員不但在區域網路中驗證了NetSpectre,也在Google Cloud的虛擬機器中完成驗證,確認遠端攻擊是可行的,這代表著有更多的電腦與裝置將暴露於Spectre的資安風險之下。
2種小工具分進合擊
在實作NetSpectre時,目標電腦需要具有網路介面,且攻擊者需要在目標電腦上注入洩露工具(Leak Gadget)與傳輸工具(Transmit Gadget),過程中攻擊者也必需傳送大量網路封包。
洩露工具會在攻擊者的控制下存取特定位元流,根據存取的資料改變微架構執行過程,並依快取狀態設立旗標。接著傳輸工具會根據旗標改變自己執行的時間長度,攻擊者就可以分析傳輸工具的執行狀態,來解讀出原始資料的內容。
NetSpectre也與一般攻擊手法一樣,會因惡意程式本身在使用者空間(User Space)或核心空間(Kernel Space)而造成能讀取的資料權限不同,但由於大多數電腦的網路驅動程式都是在核心空間執行,所以NetSpectre通常能取得核心模式權限。
這對攻擊者來說是很強而有力的武器,代表者惡意程式不但能存取核心記憶體映射(Kernel Memory Mapped),還能存取整個實體記憶體。在Linux與macOS等作業系統上,實體記憶體可以透過直接映射(Direct-Physical Map)方式存取,而Windows作業系統則將實體記憶體的一大區塊映射至記憶體池(Memory Pool),所以實質上NetSpectre攻擊能夠竊取任意記憶體中的資料。
由於研究人員事前以先將資訊提報給Intel,Intel也在第一波Spectre更新檔中就修正這個問題,所以目前並未傳出災情。而Intel也將NetSpectre納入《Analyzing potential bounds check bypass vulnerabilities》(PDF)白皮書中,有興趣進一步瞭解的讀者可以下載閱讀。
加入電腦王Facebook粉絲團