ARM 計(jì)劃將 SLS 補(bǔ)丁反向移植到 GCC 10 和 GCC 9
6 月份,Google 的 SafeSide 小組在 ARM 處理器的 Armv8-A(Cortex-A)CPU 體系結(jié)構(gòu)中發(fā)現(xiàn)了一個(gè)名為 Straight-Line Speculation(SLS)的新漏洞(CVE-2020-13844),該漏洞可導(dǎo)致攻擊者對(duì)ARM架構(gòu)處理器進(jìn)行側(cè)信道攻擊。彼時(shí),Arm 對(duì)該漏洞進(jìn)行了披露,不過(guò)并未引起公眾太大的關(guān)注。
目前,該 SLS 漏洞似乎已經(jīng)變得愈發(fā)嚴(yán)重起來(lái)。Arm 方面正在著手將 GCC 11 開(kāi)發(fā)代碼中的緩解措施反向移植到 GCC 10 甚至是 GCC 9。Arm 的一位工程師已經(jīng)發(fā)布了一個(gè) SLS 補(bǔ)丁程序,該補(bǔ)丁程序?qū)⒎聪蛞浦驳?GCC 9,而 GCC 10 的補(bǔ)丁則預(yù)計(jì)將在 GCC 10.2 發(fā)布后出現(xiàn)。
Arm 于本月初將其最初的 SLS 緩解措施合并到了 GCC Git 中,涵蓋 RET 和 BR 指令。用戶現(xiàn)下可通過(guò)編譯器在易受攻擊的指令周圍插入 speculation barrier(SB)指令來(lái)緩解 SLS。不過(guò) Arm 方面表示,其不建議默認(rèn)情況下啟用這些基于編譯器的緩解措施,理由是過(guò)度使用 SB 指令會(huì)對(duì)性能造成影響。
可以通過(guò) -mharden-sls= 來(lái)啟用 GCC 的 Arm SLS 緩解。其中值為“all”時(shí),可緩解所有易受攻擊的指令,為“retbr”時(shí)則僅在 RET 和 BR 指令上插入 speculation barrier,而“blr”只用于緩解 BLR usage。當(dāng)前,此 Arm SLS 緩解措施尚不支持 per-function basis 緩解。