L1D 重新整理¶
隨著圍繞一級資料快取(L1D)資料洩露的漏洞報告日益增多,核心提供了一種可選機制,可在上下文切換時重新整理 L1D 快取。
此機制可用於解決例如 CVE-2020-0550。對於應用程式而言,此機制可使其免受與 L1D 快取資料洩露(竊聽)相關的漏洞的侵害。
使用指南¶
詳情請參閱文件:Documentation/userspace-api/spec_ctrl.rst。
注意:此功能預設停用,應用程式需要特別選擇啟用此功能。
緩解¶
當為任務啟用 PR_SET_L1D_FLUSH 時,在任務被排程出且進入的任務屬於不同的程序,因此屬於不同的地址空間時,將執行 L1D 快取重新整理。
如果底層 CPU 在硬體上支援 L1D 重新整理,則使用硬體機制,不支援軟體回退以進行緩解。
核心命令列上的緩解控制¶
核心命令列允許在啟動時使用選項“l1d_flush=”控制 L1D 重新整理緩解。此選項的有效引數為
on
啟用 prctl 介面,如果未啟用 l1d_flush,嘗試使用 prctl() 的應用程式將失敗並報錯
預設情況下,該機制是停用的。
限制¶
當系統上啟用 SMT 時,該機制無法緩解屬於不同程序且同時在物理 CPU 核心的兄弟執行緒上執行的任務之間的 L1D 資料洩露。
這可以透過控制程序在物理 CPU 核心上的放置或停用 SMT 來解決。請參閱 L1TF 緩解文件中的相關章節:Documentation/admin-guide/hw-vuln/l1tf.rst。
注意:任務對 L1D 重新整理的選擇啟用僅在任務的親和性限於執行在非 SMT 模式下的核心時才有效。如果請求 L1D 重新整理的任務被排程到啟用 SMT 的核心上,核心將向該任務傳送 SIGBUS 訊號。