「幽靈」和「熔斷」,究竟是什麼?(事件匯總)
作者:fec
最近被「幽靈」和「熔斷」刷了屏,雖然已經有各路大牛發布了相關的研究和分析,但依然聽到身邊有不少疑惑和緊張的聲音,於是筆者整理了事件相關的內容匯總,以供大家參考。(僅為整理,歡迎大家討論。)
事件回顧
2018 年 1 月 3 日有消息傳出說,Intel CPU 存在重大 Bug ,幾乎影響所有的英特爾現代的 CPU 。後來經證實,不僅影響 Intel CPU ,其他主流 CPU 也會受到影響。
此次影響的漏洞主要為 2 個:Meltdown(熔斷)對應編號惡意數據緩存載入 CVE-2017-5754 ,Spectre (幽靈)對應編號邊界檢查繞過 CVE-2017-5753 、分支目標註入 CVE-2017-5715 ,Meltdown 影響幾乎所有的 Intel CPU(從1995年起)以及部分 ARM CPU 。而 Spectre 擁有更廣的影響範圍,Intel 、ARM、AMD 都受其影響。在 Meltdown 的情況下,一個惡意程序可以窺探操作系統的內存,並可讀取自身無許可權訪問的數據。利用此漏洞低許可權用戶可以訪問到本身無許可權訪問的內容,例如用戶密碼、加密密鑰。Spectre 可以歸納為計算機上運行的兩個程序可以相互監視,無視自身的安全界限。用戶瀏覽器訪問了含有 Spectre 的惡意利用程序,可能導致用戶的帳號、密碼泄漏。而在公共雲伺服器上,則可能打破界限,從一台虛擬機器獲取到另一個用戶的許可權。
漏洞成因簡單分析
這次漏洞利用了 CPU 執行中對出現故障的處理。由於現在 CPU 為了提供性能,引入了亂序執行和預測執行。
- 亂序執行是指 CPU 並不是嚴格按照指令的順序串列執行,而是根據相關性對指令進行分組並行執行,最後匯總處理各組指令執行的結果。
- 預測執行是 CPU 根據當前掌握的信息預測某個條件判斷的結果,然後選擇對應的分支提前執行。
這兩種執行在遇到異常時,CPU 會丟棄之前執行的結果,將 CPU 的狀態恢復到亂序執行或預測執行前的正確狀態,然後繼續執行正確的指令,從而保證了程序能夠正確連續的執行。但是問題在於,CPU 恢復狀態時並不會清除 CPU 緩存中的內容,而這兩組漏洞正是利用了這一設計上的缺陷進行側信道攻擊。亂序執行對應的利用即為 Meltdown ,而預測執行對應的利用即為 Spectre 。
漏洞驗證
目前 Github 給出的相應驗證 Poc
https://github.com/paboldin/meltdown-exploit/
https://github.com/Eugnis/spectre-attack
https://github.com/feruxmax/meltdown
https://github.com/gkaindl/meltdown-poc
https://github.com/turbo/KPTI-PoC-Collection
漏洞影響
雖然此次漏洞影響範圍較廣,並且在 Github 上已有 Poc 流出,但是目前流出的 Poc 並不能直接對系統造成危害。同時由於 CPU 本身的複雜性,暫未發現有能夠造成嚴重危害的通用穩定的 Poc 流出。同時此次漏洞並不能被單獨進行遠程利用。此次主要影響的為雲服務廠商,對普通用戶的影響主要為瀏覽器方面。養成良好的上網習慣,不點開陌生人發送的連接,同時將瀏覽器更新為最新版本基本不會收到此次漏洞的影響。此外,目前暫未發現野生的針對該漏洞進行的攻擊。
修復建議
具體修復可參照下列各廠商安全公告相關安全公告
CPU 廠商
Intel
https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00088&languageid=en-fr
https://newsroom.intel.com/news/intel-responds-to-security-research-findings/
https://newsroom.intel.com/news-releases/intel-issues-updates-protect-systems-security-exploits/
https://www.intel.com/content/www/us/en/architecture-and-technology/facts-about-side-channel-analysis-and-intel-products.html
ARM
https://developer.arm.com/support/security-update/download-the-whitepaper
https://developer.arm.com/support/security-update
AMD
https://www.amd.com/en/corporate/speculative-execution
操作系統
Microsoft微軟
- 普通用戶:https://support.microsoft.com/help/4073119
- 伺服器用戶:https://support.microsoft.com/help/4072698
- 雲用戶:https://support.microsoft.com/help/4073235
Red Hat
https://access.redhat.com/security/vulnerabilities/speculativeexecution
Linux
https://lkml.org/lkml/2017/12/4/709
Android
https://source.android.com/security/bulletin/2018-01-01
Apple
https://support.apple.com/en-us/HT208394
其他廠商
Amazon
https://aws.amazon.com/de/security/security-bulletins/AWS-2018-013/
https://googleprojectzero.blogspot.co.at/2018/01/reading-privileged-memory-with-side.html
https://www.chromium.org/Home/chromium-security/ssca
MITRE
http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2017-5715
http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2017-5753
http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2017-5754
Xen
http://xenbits.xen.org/xsa/advisory-254.html
Mozilla
https://blog.mozilla.org/security/2018/01/03/mitigations-landing-new-class-timing-attack/
VMware
https://www.vmware.com/us/security/advisories/VMSA-2018-0002.html
參考連接
https://blog.rapid7.com/2018/01/04/meltdown-and-spectre-what-you-need-to-know-cve-2017-5715-cve-2017-5753-cve-2017-5754/
Understanding The Meltdown And Spectre Exploits: Intel, AMD, ARM, And Nvidia
https://meltdownattack.com/meltdown.pdf
推薦閱讀: