iT邦幫忙

3

Research on CPU Instruction Security論文心得分享

  • 分享至 

  • xImage
  •  

零、論文心得選題由來

首先自己以「CPU」、「RISC」、「IEEE」作為關鍵字搜尋,並挑選出了下述三篇論文,並且提供每個對應的摘要截圖

一、 Research on CPU Instruction Security(2020)

https://ithelp.ithome.com.tw/upload/images/20230112/20151593cAsXjvqtKj.png

二、 A RISC-V ISA Compatible Processor IP(2020)

https://ithelp.ithome.com.tw/upload/images/20230112/20151593e2fTvCS3Ag.png

三、 A RISC-V instruction set processor-micro-architecture design and analysis(2016)

https://ithelp.ithome.com.tw/upload/images/20230112/201515939LtLFNLyWZ.png

由基本的摘要中我們可以看出第一個命題是對CPU架構的硬體安全問題進行探討,這方面是不同於課堂上架構與設計理念的介紹,也是自己第一次看到硬體安全性的相關資料之論文;第二個命題則是對於RISC的branch與cache的對比來比對處理器性能的評估與探討;而第三個命題則對RISC的演變由來、編碼、指令、邏輯、操作、硬體元件進行了詳細的介紹與分析,並且用Xilinx Virtex 6xc6vlx550t-2ff1759 型號的FPGA將其實現於AISC上(客製化IC)進行kernel測試與嘗試提出與修改出更好的硬體使用率策略。

而最後我選擇以第一篇論文作為本次的作業根據,雖然第三篇論文對於自己來說較好書寫、與上課學習的知識也有較高的契合度與可以做為ARM架構和RISC架構比較的好題材,但因為自己最近方認識硬體資安,也想趁本次機會對硬體的安全性維護進行更深的認識與學習,平常接觸的資安領域皆是以軟體為主,有幸找到本篇論文便產生了更深興趣想探究、研習。

壹、Introduction與Background

一、Intel CPU發展時程表(Development timeline of Intel CPU)

https://ithelp.ithome.com.tw/upload/images/20230112/20151593puDACxpy23.png
圖1.Intel CPU發展時程表

本圖表介紹了自1971年至2013年的CPU發展歷程,從CPU的起源、pipeline structure、1995年出現的out-of-order execution(亂序執行,可以達到高度平行化的實現)、branch prediction(分支預測,可以減少stall cycle時間)。由上述的進展我們可以觀察到CPU已逐漸邁向hyperthreading(超線程), virtualize, instruction set extension(指令集擴展)與達到remote management (遠程控制)等目標。

二、主要CPU漏洞問題(Major CPU vulnerabilities)

https://ithelp.ithome.com.tw/upload/images/20230112/201515937vMhxSbgAm.png
圖2. 主要CPU漏洞問題

而在這樣的發展下,本圖也提供了自CPU發展至今的安全問題。下述分別簡介之:

    1. FDIV bug
      這個問題主要產生於CPU為了加快效能,在對浮點計算時以查表的方式來做為輔助,但該表的程式是錯的導致此有錯誤的表被植入CPU中導致某些除法的數字錯誤。
    1. FOOF bug
      這個漏洞會導致在當時x86 CPU某些情況執行到lock cmpxchg8b eax (F0 0F C7 C8)指令時會產生死當的狀況,唯有重開機可解決。
    1. Ring -3 rootkit
      在處理器系統中區分了運行級別(Ring),且Ring0代表擁有最底層完全的管理功能級別,且逐漸往外至外殼Ring3,幾乎所有指令都需要藉由傳給kernel來決定其是否可執行。而rootkit就是一種藉由竄改指令以達到「越權」的級別行為。使自己可以獲得kernel的訪問權限。而一般是透過api的篡改使得隱藏Rootkit本身的信息致使不被攔截的行為。而這類的漏洞則可以透過CPU同樣以越權的方式,通過繞過api的檢查來清除rootkit程序。
    1. Transactional Synchronization Extensions (TSX) bug
      TSX是x86 對ISA的擴充,原用意是為了透過 lock elision的節省來達到提升工作附載效率的目標,而本問題在於TSX內有錯誤而導致Haswell、Haswell-E、Haswell-EP和早期Broadwell CPU都受其影響。最後是以disabling TSX/TSX-NI的microcode update來解決。
    1. Memory Sinkhole
      此問題可以讓駭客將惡意軟體安裝到System Management Mode(管理模式)中,使其不僅可以控制電腦、就算使用者重灌電腦仍無法解決此問題。而本問題的解決需要透過更新電腦的BIOS與UEFI來解決(但要注意有許多舊型號的版型可能無法被最新的更新所支援)
    1. Intel ME RCE
      此問題主要出現於遠端主機的管理引擎受到遠端的程式碼執行弱點的攻擊。因會受到因不安全讀寫作業所致的遠端程式碼執行弱點所影響,未經驗證的遠端攻擊者可利用此弱點執行任意程式碼。而使用者可以藉由解除intel可管理的SKU 用戶端、停用或移除 Local Manageability Service (LMS)、設定本機管理性組態限制來作為解決方式。
    1. PortSmash
      側信道漏洞,利用定時攻擊從在和啟用 SMT/超線程功能的同樣的 CPU 內核中運行的其它進程中竊取信息。研究人員利用這種攻擊能夠從在同樣內核中運行的 OpenSSL線程中竊取解密私鑰。攻擊者分析某個進程執行某些特定指令的速度有多快,之後利用這一信息找出哪些信息被用作輸入。而本問題可藉由禁用CPU BIOS中的SMT(超線程)功能與藉由安全補丁的發布來解決。
    1. Foreshadow
      是一種針對intel處理器的推測性執行攻擊,本漏洞可以藉由繞過晶片的SGX來允許攻擊者竊取存儲在個人計算機或第三方雲端中的敏感信息。包含兩版本,對於SGX(Secure Guard Extensions,安全警衛擴展) enclave的攻擊和對VMs(虛擬機), VMM(管理程序),OS,SMM(系統管理模式)的攻擊。攻擊者可以獲得如私有密鑰等信息。不但可以訪問SGX所保護的L1緩存,更可以獲取用於SGX完整性檢查的加密金鑰。而證明金鑰的洩漏也會間接導致攻擊會影響到整個生態系統。而這種對於攻擊原意為提升系統資源節省卻導致整體系統被攻擊者控制的風險行為也被研究人員十分為難。因為其主要是針對SGX處理器而較不會影響桌面用戶。而本問題也仰賴軟體修復和microcode update來解決。
    1. TLBbleed
      這是一種加密側道攻擊,用機器學習的方式同步TLB上的timing side-channel的方式來攻擊,獲得CPU上的敏感訊息。而目前intel以禁用處理器上的同步多線程(simultaneous multithreading, SMT)來解決此問題。
    1. Meltdown
      打破了用戶應用程序和操作系統之間最基本的隔離。使得攻擊者可以拿到訪問kernel side的權力並且獲取敏感訊息。而這種攻擊對於桌機、筆電或雲端電腦皆有影響,而其是以meldown的軟體補丁作為解法。
    1. Spectre
      打破了不同應用程序之間的隔離。它允許攻擊者欺騙遵循最佳實踐的無錯誤程序來洩露其秘密。且會使安全檢查反而大大增加受spectre的攻擊。同樣作用於每種系統,而其是以Spectre的軟體補丁作為解法。
    1. RIDL
      RIDL(Rogue In-Flight數據加載)顯示,是一個攻擊者可以利用MDS漏洞,利用CPU pipeline、內部緩衝區(例如線路填充緩衝區和加載端口)來在實際環境中安裝實際攻擊和洩漏敏感數據, 以竊取同一台電腦下其他程序、內核、VM、SGX的數據。
    1. ZombieLoad
      這個問題是因處理器因隱私瀏覽資訊等塊取信息被惡意程序提取,而產生運行的程序處理的機密的洩漏問題,資料包含了瀏覽器歷史紀錄、網站內容、密鑰或密碼、磁盤加密金鑰等。
    1. LVI
      載入注射值(Load Value Injection)漏洞,,LVI是藉由隱藏的處理器緩衝區將駭客資料注入受害者的程序中,挾持其暫態執行以獲取SGX中的資訊,諸如受害者的指紋或密碼等。而雖然可以藉由軟體更新暫時解決本問題,但更完全的解決方式是藉由在未來新處理器的設計來杜絕。
    1. MDS
      微架構資料取樣(Microarchitectural Data Sampling),是先前側道攻擊的一個子類別,可以藉由使攻擊者獲得CPU內部緩存的資訊,也包含沒有在CPU Cache中的資訊。並且這種漏洞也會間接導致資料中心或將使用者資訊洩漏給惡意網站的行為。而值得注意的是,本次的漏洞與先前Meltdown與Spectre不同的地方在於,Intel在漏洞公布前就與安全研究人員合作,將微碼更新與安全防禦加在第八代與第九代的Intel core中作為決措施。且為了同時維護超執行緒(Hyper-Threading,HT),避免用直接對HT的禁用來解決漏洞問題,所帶來的急遽效能提升表現,也進行了安全與效能的雙向研究取捨。

三、本文研究目標

而本篇論文設立一假設:「instruction security(指令安全)是處理器安全的核心問題」。
而指令安全由下述三條件來達到CPU的安全:

    1. 指令不會違反既定描述(will not violate the established description)
    1. 指令不會產生異常問題(will not be utilized to generate abnormal problems)
    1. 指令不會在補丁更新中被劫持和篡改(will not be hijacked and tampered in patch update)

而在本文中則會以「指令違規描述(instruction violation description)」、「執行優化技術(execution optimization technology)」、「劫持指令更新機制(hijacking instruction updating mechanism)」、「未記錄指令和後門(undocumented instruction and backdoor)」四項安全問題來探討,並以補丁修復(patch repair measures)和硬體保會技術(hardware protection technology)作為總結。

參、指令安全問題分析(Instruction security problem analysis)

一、指令違規問題(Instruction violation description)

代表指令在CPU在違反ISA標準時program會產生的問題。此類的問題可以由CPU廠商所提供的勘誤表而得,我們根據CPU的工作機制可以將分為以下六種:

https://ithelp.ithome.com.tw/upload/images/20230112/20151593uZ6jRX2NJj.png
圖3. CPU implementation problem classification table

而由前述提供的漏洞問題,FDIV和FOOF的問題就屬於本類錯誤,也可以由此兩種範例再度證明違反ISA設計會對指令安全造成嚴重的影響。

二、執行優化(The aspect of optimized execution)

由Introduction中我們提及CPU所使用的兩項技術,out-of-order execution(亂序執行)與branch prediction(分支預測)。

    1. 亂序執行技術,只要指令遵循模式的定便可以達到平行(parallel)運行。但這樣卻會由「時序的差異(timing differences)」而洩漏訊息
    1. 分支預測技術,我們使用預測有用信息的方式結合BPU(Branch Prediction Unit),BTB(Branch Target Buffers)來預測程式執行區段以提升行效能。但同時,當預測結果錯誤導致CPU須回到上次狀態時同樣會使敏感訊息洩漏(sensitive information to be leaked)。

https://ithelp.ithome.com.tw/upload/images/20230112/20151593I4IuzFXCsd.png
圖4. 指令執行機制導致的漏洞

舉例而言Meltdown bug便屬於此種問題。而多數的針對CPU的側道問題都是基於此兩種機制,也就是「優化技術的使用」而來。

三、劫持指令更新機制(Hijacking instruction updating mechanism)

在介紹劫持指令更新機制前,我們要先對微碼指令(Micro command),這是一種在CPU一周期內實現一定操作功能的一組微指令組合。通常這種指令會用來檢查控制指令的control unit,而一組指令也是由若干條的微碼所組成。而這樣的機制,卻也可能在更新時產生建構木馬(Trojan)的可能性。而這種由木馬而生的惡意負載而產生的問題就稱為劫持(hijacking),駭客可以由微碼鉤子(microcode hook)來達到遠程控制。我們可以透過供應商發出的勘誤表以補丁的方式來解決,或是利用更新加密機制(encrypted to check)的方式來避免。

四、無證指令和後門(Undocumented instruction and backdoor)

因為現有的指令研究均需參考廠商發表的指令集定義,且相關的安全測試也需要由「具有源代碼(having source code)」作為前提。而這也導致若非CPU廠商很難對其進行安全測試。

因此,當時發展了Sandsifter,結合模糊測試與CPU指令測試來對於未紀錄的指令進行逆向分析(pure reverse analysis)使其成為指令分析(instruction set testing)。而後續又產生了CPU security benchmark,比Sandsifter更能跑在如arm或其餘的架構。

而在Sandsifter的研究上雖以演算法提升了搜索效率與準確性,但也發現目前大部分的處理器中包含了大量的未記錄指令,而因為這些指令的執行結果是未知的,其中也包含了在2018年的BlackHat中提到的VIA C3 processor中的後門問題(backdoor problem),使一般的用戶可透過此指令自行升級為超級用戶權限( super user privileges )。

而在2008年的另一項研究也以在ARM架構中添加流氓模式(rogue mode)使其可以任意使用rootkits 來隱藏不受OS security policies 所限制的指令。同樣在2009年也發現一個可以利用qemu virtual machine內置CPU後門的驗證方式。兩種案例都說明了backdoor problem所產生的極大危害。且因為這種內置後門(built-in backdoors)其實很難被開發者所發現,因此對於未記錄指令的研究也是很重要的一環。

肆、指令安全措施

前述在解決各類漏洞問題時我們常會以廠商定期發布的勘誤表和補丁(Patch)作為解法。

一、補丁緩解措施(Patch mitigation measures)

通常我們可以利用微碼補丁(microcode patch)的方式解決許多漏洞處理,其中以實現間接分支限制推測(Indirect Branch Restricted Speculation ,IBRS)、單線程間接分支預測器(Single Thread Indirect Branch Predictors ,STIBP)和間接分支預測器屏障(Indirect Branch Predictor Barrier ,IBPB)。而我們也會再加上如RSA等加密措施來防止前面提及的側道攻擊行為。但這些還不足以防止漏洞被利用的行為。

而微碼補丁也會有因需要等到漏洞出現才可校正與因加入了檢查措施導致的效能降低等缺陷。

二、硬體保護技術(Hardware protection technologies)

硬體方面的保護包含了像是緩存分配技術指令集擴展(cache allocation technology ,CAT),可以透過支持軟體控制數據分析來分配last-level cache來隔離critical applications 與限制緩存。

而同時也可以藉由結合其他的硬體保護,像是Intel TSX便是希望能達成程序實現細粒度的鎖定性能,幫助檢測惡意行為並恢復與防止雲端服務的側道攻擊行為。

目前對於虛擬化技術與可信度平台(trusted computing technology)模塊的計算等系統安全的保護也得到了廣泛應用,但其中仍有許多不足,如虛擬化技術使用特權軟體(privileged software)來進行資源分配,而這也有可能導致潛在漏洞會破壞整個系統的隱憂。而對應措施也包含Intel推出安全指令集擴展(Software Guard Extensions ,SGX) 來以特殊的內存訪問控制技術,以保護應用程序被更高權限的訪問行為。

伍、Outlook

一、未記錄的指令集的搜索和分析(Search and analysis of undocumented instruction sets)

像前述提到的微碼木馬、VIA C3 processor God mode的後門問題以及無證指令(undocumented instruction)異常都會是未來的CPU安全重點。

二、指令語義歧義研究(Research on semantic ambiguity of instructions)

對於各家廠商所公開的文檔時常會出現語意不同與真實行為與使用手冊不一致的行為,而因為很多的漏洞都需要藉由官方文檔來進行安全測試,那麼這些不一致的問題就會時常產生不符預期的延宕與死機狀態。若我們有更全面的語意分析與勘誤的研究也會視後續的研究重點。

三、CPU內部機制逆向分析(Reverse analysis of CPU internal mechanism)

在許多非CPU廠商的安全研究者的關注下,指令分析時常無法與逆向分析離開關係(像是前面提到的Sandsifter),也因為廠商不會公開完整的CPU內部結構與設計,因且這方面也會是未來研究的重要面向。

陸、心得

在本次的要求下,因緣際會自己得到了對於硬體資安的研究素材,從前看到的資安教材總是以軟體、網路層面講述問題,較少出現詳細介紹硬體層面資安維護的資料。加上上週末自己在iThome鐵人賽的頒獎典禮上與影片組冠軍的得主聊了許多資安資料,恰好在當時第一次接觸了「硬體資安」這個名詞,因為從前總認為資安都需要數學能力超群的人才可以接觸,而經過那次的談論也才開闊了自己的視野,因緣際會下,在搜尋資料時便被此篇論文吸引了目光。而在進行論文的分析與背景知識的搜索下,也認識了許多原本不曾想過的問題與知識,尤其是在introduction與conclusion中的兩句話也十分吸引自己的目光:” The booming development of CPU also brought many security problems”, ”characteristics are vulnerabilities.” 有別於上課專注於效能提升或架構介紹的角度,首次,自己跟著作者的闡述由安全層面來思考這些在科技發展下所產生的相對問題與其解法,也格外地收穫良多!

柒、參考資料


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言