x86 處理器設計缺陷,Sinkhole 讓惡意程式碼以最高權限執行

x86 處理器設計缺陷,Sinkhole 讓惡意程式碼以最高權限執行

ADVERTISEMENT

世界上的電腦幾乎都採用保護環設計,作業系統核心為 Ring 0、一般使用者的應用程式為 Ring 3,數字大的環須受數字小的掌控,以便增加系統容錯性和安全。近日曝光 x86 的硬體設計缺陷,能夠以系統管理模式 Ring -2 的權限執行程式。

為了系統安全和增加容錯性,目前世界上電腦系統的設計潮流均使用分級保護域(Hierarchical Protection Domains),實作上分成 Ring 0~3,因此口語化也稱為保護環(Protection Rings)。

Ring 0 的權限最高,能夠與電腦硬體互動,Ring 3 的權限最低,一般使用者執行的程式都在這層執行。Ring 1 則是保留給硬體驅動程式,Ring 2 則是給部分具有特權的程式使用。較低層級的程式行為均受到高層級的掌控,低層級程式發生問題也比較不容易拖垮整個系統造成當機。

x86 處理器設計缺陷,Sinkhole 讓惡意程式碼以最高權限執行
▲分級保護域的階層式架構。(取自維基百科,作者 Hertzsprung)

因應電腦發展需求,更高權限的 Ring 被設計出來,譬如 Hypervisor 虛擬化就是建立在作業系統之上的 Ring -1。而與 x86 硬體設計漏洞有關的系統管理模式(System Management Mode),就是位於最高權限 Ring -2 位置。

出問題的為 x86 處理器 LAPIC(Local Advanced Programmable Interrupt Controller)設計,LAPIC 主要負責送往處理器的中斷要求,在現代電腦中已整合進處理器內部,且因為效能和管理的關係,LAPIC 暫存器將映射至某塊處理器記憶體位址,Intel P5 微架構的設計為映射到 1 塊固定的位址,現代處理器所採用的 Intel P6 微架構則是可映射至其它位址。

由於 LAPIC 暫存器可映射到不同的位址,如果與系統管理模式所保留專用的 SMRAM 位址交錯,系統管理模式將錯誤地載入 LAPIC 暫存器資料,而非記憶體資料。處理器的系統管理模式由韌體或硬體呼叫進入,進行電源管理或是硬體控制等,一般來說作業系統管不到這個部分。

x86 處理器設計缺陷,Sinkhole 讓惡意程式碼以最高權限執行
▲Sinkhole 攻擊程式碼原型。

系統管理模式錯誤地載入 LAPIC 暫存器的資料,因此有可能讓系統管理模式跳出自己的 SMRAM 區域,執行特定有害程式碼。且系統管理模式位於權限相當高的 Ring -2,安全軟體可能完全不知道系統已被感染。

本次在美國拉斯維加斯舉辦的黑帽大會,由 Christopher Domas 提出這個 Sinkhole 硬體漏洞,已經在部分特定型號的處理器實作,最糟的狀況有可能涵蓋全部的 x86 處理器(Sandy Bridge 微架構之後的處理器不受影響)。防範方式也很簡單,使用者操作電腦時不要長時間待在管理者模式即可。

資料來源

The Memory Sinkhole

延伸閱讀

利用硬體缺陷攻擊,Rowhammer 讓所有電腦陷入危機

手機到底安不安全?看看Android 和iOS 是如何防禦惡意的APP

R.F.
作者

誤入叢林的小白兔,每天爬樓梯到七樓的白癡,幻想自己很瘦的豬,一放假就睡死的bed potato。

使用 Facebook 留言
發表回應
謹慎發言,尊重彼此。按此展開留言規則