商用 RISC-V 處理器首度證實可遭多種 Spectre 攻擊,Linux 防護仍有缺口

德國 CISPA 與比利時 KU Leuven 研究團隊在 USENIX Security 2026 發表研究,實測 SiFive P550,以及 T-Head 玄鐵 C910、C920 等商用 RISC-V 處理器,首度確認這些處理器也會受到多種 Spectre 攻擊影響。

研究人員更在 C910 上完成讀取 Linux 核心記憶體的攻擊示範,顯示 RISC-V 處理器採用高效能亂序執行設計後,同樣面臨高階 x86 與 Arm 處理器所遭遇的推測執行安全問題。

13 種攻擊情境中有 12 種成功

Spectre 於 2018 年曝光,利用處理器為提升效能而預測並提前執行指令的機制。即使處理器在預測錯誤後撤銷執行結果,部分操作仍可能在快取等硬體資源留下痕跡,攻擊者便能藉此推測原本無權讀取的資料。

研究團隊測試 13 種攻擊情境,其中 12 種可在 P550 與 C910、C920 兩種處理器設計上成功,涵蓋條件分支、間接跳躍、函式返回預測,以及記憶體讀寫相依性判斷等主要 Spectre 攻擊方式。

不過,涉及分支目標緩衝區(Branch Target Buffer,BTB)的攻擊,是在啟用 BTB 的狀態下進行測試。C910 與 P550 預設停用 BTB,C920 則預設啟用,因此實際風險仍取決於處理器設定與支援的分支預測功能。

研究示範透過 BPF 讀取核心記憶體

這類攻擊的前提是攻擊者已能在目標機器上執行程式。研究人員進一步利用 Linux 核心的 BPF(Berkeley Packet Filter)功能,在 C910 建立任意核心記憶體讀取能力,測得中位洩漏速度為每秒 338 位元組。

完整攻擊示範是在特定 Linux 版本與 BPF 設定下完成,部分攻擊也需要特定處理器分支預測功能。因此,研究結果無法直接推論所有 RISC-V 系統在預設狀態下,都能以完全相同的方式遭到攻擊。

Linux RISC-V 防護機制尚未完整生效

研究也發現,RISC-V 軟體防護尚未完全跟上硬體發展。Linux 的 barrier_nospec() 推測執行屏障在 RISC-V 上會編譯成 no-op,不會執行實際防護;此外,BPF JIT 編譯器遇到驗證器插入的 BPF_NOSPEC 屏障時,也不會產生對應的 RISC-V 指令,導致原本預期存在的防護失效。

另一項問題來自 RISC-V 指令集本身。目前 RISC-V 沒有由指令集明確保證可停止推測執行的專用指令。研究團隊測試現有指令後發現,不同處理器能有效阻止推測執行的方法並不一致,使作業系統難以採用單一通用的防護方式。

Linux 核心已有部分修補併入主線

研究團隊已針對 Linux 核心提出 5 項修補。其中,使用者空間記憶體存取的指標遮罩、系統呼叫表索引遮罩,以及 KVM 索引遮罩等 3 項修補,已併入 Linux 主線。

至於 BPF 推測執行屏障與 futex 指標遮罩修補,在論文完成時仍處於審查階段。研究結果顯示,隨著 RISC-V 處理器逐步採用更複雜的高效能微架構,軟體與指令集層級的推測執行防護也需要同步完善。

Related Articles

Stay Connected

0FansLike
0FollowersFollow
22,800SubscribersSubscribe
- Advertisement -spot_img

Latest Articles