ADVERTISEMENT
為了系統安全和增加容錯性,目前世界上電腦系統的設計潮流均使用分級保護域(Hierarchical Protection Domains),實作上分成 Ring 0~3,因此口語化也稱為保護環(Protection Rings)。
Ring 0 的權限最高,能夠與電腦硬體互動,Ring 3 的權限最低,一般使用者執行的程式都在這層執行。Ring 1 則是保留給硬體驅動程式,Ring 2 則是給部分具有特權的程式使用。較低層級的程式行為均受到高層級的掌控,低層級程式發生問題也比較不容易拖垮整個系統造成當機。
▲分級保護域的階層式架構。(取自維基百科,作者 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 暫存器資料,而非記憶體資料。處理器的系統管理模式由韌體或硬體呼叫進入,進行電源管理或是硬體控制等,一般來說作業系統管不到這個部分。
▲Sinkhole 攻擊程式碼原型。
系統管理模式錯誤地載入 LAPIC 暫存器的資料,因此有可能讓系統管理模式跳出自己的 SMRAM 區域,執行特定有害程式碼。且系統管理模式位於權限相當高的 Ring -2,安全軟體可能完全不知道系統已被感染。
本次在美國拉斯維加斯舉辦的黑帽大會,由 Christopher Domas 提出這個 Sinkhole 硬體漏洞,已經在部分特定型號的處理器實作,最糟的狀況有可能涵蓋全部的 x86 處理器(Sandy Bridge 微架構之後的處理器不受影響)。防範方式也很簡單,使用者操作電腦時不要長時間待在管理者模式即可。
請注意!留言要自負法律責任,相關案例層出不窮,請慎重發文!