Linux

如何緩解 Linux 系統上的 Spectre 和 Meltdown 漏洞?

  • July 27, 2018

安全研究人員在零項目上發布了一個名為 Spectre and Meltdown 的新漏洞,允許程序從其他程序的記憶體中竊取資訊。它會影響 Intel、AMD 和 ARM 架構。

可以通過訪問 JavaScript 網站遠端利用此漏洞。技術細節可以在redhat 網站上找到,Ubuntu 安全團隊

通過推測執行側通道攻擊(CVE-2017-5715、CVE-2017-5753、CVE-2017-5754 aka Spectre 和 Meltdown)洩露資訊

發現一類新的側通道攻擊會影響大多數處理器,包括來自 Intel、AMD 和 ARM 的處理器。該攻擊允許惡意使用者空間程序讀取核心記憶體和來賓中的惡意程式碼讀取管理程序記憶體。為了解決這個問題,需要更新 Ubuntu 核心和處理器微碼。這些更新一旦可用,將在未來的 Ubuntu 安全通知中公佈。

JavaScript 中的範例實現

作為概念驗證,編寫的 JavaScript 程式碼在 Google Chrome 瀏覽器中執行時允許 JavaScript 從其執行的程序中讀取私有記憶體。

我的系統似乎受到了幽靈漏洞的影響。我已經編譯並執行了這個概念驗證(spectre.c)。

系統資訊:

$ uname -a
4.13.0-0.bpo.1-amd64 #1 SMP Debian 4.13.13-1~bpo9+1 (2017-11-22) x86_64 GNU/Linux

$ cat /proc/cpuinfo
model name  : Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz

$gcc --version
gcc (Debian 6.3.0-18) 6.3.0 20170516

如何緩解 Linux 系統上的 Spectre 和 Meldown 漏洞?

延伸閱讀:使用 Meltdown 實時竊取密碼

更新

在@Carlos Pasqualini 回答之後使用Spectre & Meltdown Checker切換到4.9.0-5核心版本後,因為可以使用安全更新來緩解 debian Stretch 上的 cve-2017-5754:

CVE-2017-5753 [bounds check bypass] aka 'Spectre Variant 1'
* Checking count of LFENCE opcodes in kernel:  NO  (only 31 opcodes found, should be >= 70)
> STATUS:  VULNERABLE  (heuristic to be improved when official patches become available)

CVE-2017-5715 [branch target injection] aka 'Spectre Variant 2'
* Mitigation 1
*   Hardware (CPU microcode) support for mitigation:  NO 
*   Kernel support for IBRS:  NO 
*   IBRS enabled for Kernel space:  NO 
*   IBRS enabled for User space:  NO 
* Mitigation 2
*   Kernel compiled with retpoline option:  NO 
*   Kernel compiled with a retpoline-aware compiler:  NO 
> STATUS:  VULNERABLE  (IBRS hardware + kernel support OR kernel with retpoline are needed to mitigate the vulnerability)

CVE-2017-5754 [rogue data cache load] aka 'Meltdown' aka 'Variant 3'
* Kernel supports Page Table Isolation (PTI):  YES 
* PTI enabled and active:  YES 
> STATUS:  NOT VULNERABLE  (PTI mitigates the vulnerability)

2018 年 1 月 25 日更新

spectre-meltdown-checker腳本由 debian 官方打包,可通過backports 儲存庫、Buster 和 Sid 用於 Debian Stretch。

2018 年 5 月 22 日更新

投機儲存繞過 (SSB) – 也稱為變體 4

具有微處理器的系統在所有先前儲存器寫入的地址已知之前利用儲存器讀取的推測性執行和推測性執行,可能允許未經授權地向具有本地使用者訪問權限的攻擊者披露資訊,通過邊通道分析。

惡意系統寄存器讀取 (RSRE) – 也稱為變體 3a

具有利用推測執行和執行系統寄存器推測讀取的微處理器的系統可能允許未經授權地向具有本地使用者訪問權限的攻擊者披露系統參數,通過邊通道分析。

編輯 2018 年 7 月 27 日

NetSpectre:通過網路讀取任意記憶體

在本文中,我們提出了 NetSpectre,這是一種基於 Spectre 變體 1 的新攻擊,不需要目標設備上的攻擊者控制程式碼,從而影響數十億台設備。與本地 Spectre 攻擊類似,我們的遠端攻擊需要在目標程式碼中存在 Spectre 小工具。我們展示了在暴露的網路介面或 API 中包含所需 Spectre 小工具的系統可以使用我們的通用遠端 Spectre 攻擊進行攻擊,從而允許通過網路讀取任意記憶體。攻擊者只向受害者發送一系列精心設計的請求,並測量響應時間以從受害者的記憶體中洩漏一個秘密值。

Alan Cox 分享了來自 AMD 部落格的連結: https ://www.amd.com/en/corporate/speculative-execution

變體一:邊界檢查繞過

由系統供應商和製造商提供的軟體/作業系統更新解決。預期的性能影響可忽略不計。

變體二:分支目標註入

AMD 架構的差異意味著利用此變體的風險幾乎為零。迄今為止,尚未在 AMD 處理器上證明存在變體 2 的漏洞。

變體三:惡意數據記憶體載入

AMD 架構差異導致的零 AMD 漏洞。

不過,最好讓第三方確認這些 AMD 的聲明。

受影響系統上的“緩解”需要一個新核心並重新啟動,但在許多發行版上還沒有發布包含修復的軟體包:

德比安:

我發現的其他資訊來源:

引用自:https://unix.stackexchange.com/questions/414786