硬體安全的進階主題與趨勢
關於針對濫用間接分支預測之Spectre變種(分支目標注入)的對策retpoline與IBRS,說明的組合正確的是下列何者?
- Aretpoline是重新設計CPU電路、移除預測器的對策,IBRS是由編譯器把間接分支指令改寫成其他指令序列的對策
- Bretpoline是把間接分支換成不依賴預測器之指令序列的軟體對策,IBRS是限制間接分支預測的CPU功能
- Cretpoline與IBRS都會停止CPU的推測執行功能本身,無論使用哪一個,推測執行帶來的效能提升都會消失
查看答案與解析
正確答案:B. retpoline是把間接分支換成不依賴預測器之指令序列的軟體對策,IBRS是限制間接分支預測的CPU功能
retpoline由編譯器把間接分支指令換成結合call與ret的指令序列,讓CPU使用返回位址的預測,而非可能被濫用的間接分支預測器,並讓推測執行在無害的迴圈中空轉。IBRS是透過微碼更新等加入的CPU控制功能,例如限制核心中的間接分支預測,使其不依循使用者程式所訓練的內容。舊的CPU每次切換IBRS都很耗時,因此retpoline被廣泛使用,新的CPU則提供了可一直保持啟用的改良版(eIBRS)。不過,有些CPU的返回位址預測也會依賴另一個預測器,2022年發表的Retbleed等已顯示只靠retpoline並不足夠的情況。
- A. 正好相反。retpoline是由編譯器進行的軟體對策,IBRS是CPU的功能。
- B. 正確。一個以軟體避開預測器,一個以CPU功能限制預測。
- C. 兩者都不會消除推測執行本身,而是避開或限制可能被濫用的預測。