該漏洞類似於 Spectre V2,但利用了 CPU 的分支歷史緩衝區,由阿姆斯特丹自由大學的安全研究人員發現。 Spectre-BHB/BHI 於 3 月初披露,並在同一天看到了針對 Arm 和 Intel CPU 的 Linux 內核緩解補丁。

Arm 緩解添加了 MITIGATE_SPECTRE_BRANCH_HISTORY 選項以在構建時控制是否緩解 Spectre-BHB,但沒有任何運行時選項可用於控制啟動時的行為。

既然內核緩解措施已經成為內核的一部分已有幾個月了,並且各種企業用戶開始轉向打補丁的內核,至少阿里巴巴發現緩解措施對性能影響太大了。

通過 ARM64 的 for-next/misc 分支 可以在運行時關閉 Spectre-BHB 緩解措施,同時保持其他 CPU 安全緩解措施處於活動狀態。

Linux 6.1 內核合併窗口之前的排隊補丁允許在啟動時使用 nospectre_bhb 內核選項禁用 Spectre-BHB 緩解。

編寫補丁的阿里巴巴工程師總結了這條提交信息:

在我們的環境中,發現緩解 BHB 對基準性能有很大影響.例如,在 lmbench 測試中,“process fork && exit”測試性能下降了 20%。所以必須有能力通過命令行單獨關閉緩解,從而避免不得不通過調整配置來編譯內核。

只有lmbench影響數被共享,而其他相關的工作負載可能也被共享考慮到阿里巴巴有興趣看到這種運行時選項,這會受到影響,尤其是現實世界的工作。

Arm 工程師 Catalin Marinas 在評論時拿起了這個補丁,“如果人們想禁用這個緩解措施並知道他們在做什麼,我不反對”,並得到了長期 Arm Linux 工程師 Will Deacon 的支持。除了出現在 Linux 6.1 中,隨著時間的推移,該選項也有可能(並且很可能)反過來移植到現有的內核穩定係列。

受影響的 Arm 處理器列表和 Spectre 上的其他詳細信息-BHB 可以在 developer.arm.com 找到。

Categories: IT Info