Cloudflare:什么是 Meltdown、Spectre?

來源: Cloudflare
作者:Cloudflare
時(shí)間:2021-01-21
16354
Meltdown 和 Spectre 是最近在 Intel、AMD、Apple 和 ARM 處理器芯片中發(fā)現(xiàn)的漏洞。這些漏洞由相關(guān)芯片的嚴(yán)重設(shè)計(jì)缺陷引起,由于發(fā)現(xiàn)了這個(gè)問題,開發(fā)人員不得不重新設(shè)計(jì) Windows、Mac 和 Linux 操作系統(tǒng)軟件,以防護(hù)漏洞并防止攻擊者加以利用。

什么是 Meltdown/Spectre?

Meltdown 和 Spectre 是最近在 Intel、AMD、Apple 和 ARM 處理器芯片中發(fā)現(xiàn)的漏洞。這些漏洞由相關(guān)芯片的嚴(yán)重設(shè)計(jì)缺陷引起,由于發(fā)現(xiàn)了這個(gè)問題,開發(fā)人員不得不重新設(shè)計(jì) Windows、Mac 和 Linux 操作系統(tǒng)軟件,以防護(hù)漏洞并防止攻擊者加以利用。

這些漏洞由 Google Project Zero 的研究人員發(fā)現(xiàn),該團(tuán)隊(duì)致力于及時(shí)發(fā)現(xiàn)安全漏洞,以免遭攻擊者利用。截至目前,尚未發(fā)現(xiàn)有人利用 Meltdown 或 Spectre 漏洞。Apple、Intel 和 Microsoft 等主要技術(shù)公司的安全團(tuán)隊(duì)以及開源 Linux 開發(fā)人員現(xiàn)在都投入了大量資源,試圖確保其處理器和操作系統(tǒng)的安全性,以免遭到惡意利用。

誰會受到 Meltdown 和 Spectre 漏洞的影響?

除了少數(shù)例外,所有 PC 和/或智能手機(jī)所有者都面臨危險(xiǎn)。根據(jù) Google 提供的信息,1995 年以后生產(chǎn)的所有裝有 Intel 處理器芯片的設(shè)備都會受到影響。AMD 和 ARM 更難被利用,但它們同樣有風(fēng)險(xiǎn)。

如何防范 Meltdown/Spectre 漏洞?

除更換 PC 處理器以外,消除漏洞的唯一方法是修補(bǔ)操作系統(tǒng)。蘋果在 12 月初悄悄針對 OSX 推出了 Meltdown 修補(bǔ)程序,微軟在 1 月 3 日發(fā)布了 Windows 修補(bǔ)程序,而 Linux 開發(fā)人員仍在創(chuàng)建修補(bǔ)程序。

很遺憾,這些 Meltdown 修補(bǔ)程序有一個(gè)副作用:由于設(shè)計(jì)原因,計(jì)算機(jī)安裝帶修補(bǔ)程序的操作系統(tǒng)后,其處理速度會減緩。速度減緩會導(dǎo)致性能下降大約 5-30%,這在很大程度上取決于芯片的類型和所執(zhí)行的任務(wù)。

Meltdown 和 Spectre 漏洞的實(shí)際工作方式是怎樣的?

Meltdown 和 Spectre 都是在執(zhí)行稱為“內(nèi)核代碼”的特殊低級代碼時(shí)創(chuàng)建的漏洞,內(nèi)核代碼專門在“推測執(zhí)行”期間運(yùn)行。

什么是推測執(zhí)行?

用比喻來解釋推測執(zhí)行,或許是最簡單的辦法。想象一個(gè)徒步旅行者在樹林里迷了路,他遇到了一個(gè)岔路口,分別通向兩條大致平行的路。其中一條通往她家,另一條則不是。她沒有浪費(fèi)時(shí)間等待其他遠(yuǎn)足者給她指路,而是選擇了她認(rèn)為最有可能通向家中的那條路。在途中某個(gè)地方,她遇到了一個(gè)路標(biāo),如果路標(biāo)告知她走的是正確的路,那么她會繼續(xù)沿著那條路回家。如果路標(biāo)告訴她走錯(cuò)了,她會迅速返回并改走另一條路,這并不比她一直呆在原地尋找方向更差。

speculative-execution.png

許多現(xiàn)代處理器采用一種叫做“推測執(zhí)行”的類似技術(shù):CPU 嘗試猜測下一步需要執(zhí)行什么代碼,在收到請求前即開始執(zhí)行該代碼。如果事實(shí)證明不需要執(zhí)行該代碼,則撤銷更改。這是為了節(jié)省時(shí)間并加快性能。

關(guān)于 Meltdown/Spectre 漏洞的報(bào)告表明,Intel CPU 可能在無需進(jìn)行重要安全檢查的情況下,對代碼進(jìn)行推測執(zhí)行操作?;蛟S,可以編寫軟件來檢查處理器是否已執(zhí)行通常會被這些安全檢查阻止的指令。

對推測執(zhí)行的不當(dāng)處理會引起 CPU 漏洞,攻擊者可能利用該漏洞訪問內(nèi)核內(nèi)存中的高度敏感數(shù)據(jù),例如密碼、加密密鑰、個(gè)人照片、電子郵件等。

那么,什么是內(nèi)核?

內(nèi)核是位于計(jì)算機(jī)操作系統(tǒng)核心的程序。它具有對操作系統(tǒng)的完全控制權(quán),并負(fù)責(zé)管理啟動、內(nèi)存處理等所有流程。內(nèi)核還負(fù)責(zé)將數(shù)據(jù)處理指令發(fā)送到 CPU(中央處理單元)。大多數(shù) CPU 一直在內(nèi)核模式和用戶模式之間來回切換。

內(nèi)核模式和用戶模式有什么區(qū)別?

在內(nèi)核模式下,CPU 執(zhí)行的代碼可以不受限制地訪問計(jì)算機(jī)的硬件和內(nèi)存。此模式通常專用于最低級別和最受信任的操作。若在 CPU 處于內(nèi)核模式時(shí)發(fā)生崩潰,就可能是災(zāi)難性的;它們可能會使整個(gè)操作系統(tǒng)崩潰。

在用戶模式下,正在執(zhí)行的代碼無法訪問硬件或參考內(nèi)存,相反,必須委托系統(tǒng) API 進(jìn)行訪問(擁有適當(dāng)權(quán)限的用戶模式軟件可以請求某些內(nèi)核模式功能,然后系統(tǒng) API 可以運(yùn)行這些功能)。用戶模式崩潰通常是孤立的,并且可以恢復(fù)。大多數(shù)代碼在用戶模式下執(zhí)行。

為什么 Meltdown 修補(bǔ)程序會降低性能?

Meltdown 修補(bǔ)程序中的修復(fù)功能將內(nèi)核的內(nèi)存與用戶進(jìn)程進(jìn)行更顯著的分離。這是通過稱為內(nèi)核頁表隔離(KPTI)的方法完成的。KPTI 將內(nèi)核模式操作移到與用戶模式操作完全分開的地址空間中。這意味著需要花費(fèi)大量時(shí)間,在內(nèi)核模式和用戶模式之間切換。

為了說明這一點(diǎn),假設(shè)有一輛快餐車,只出售兩種東西:熱狗和冷檸檬水。快餐車內(nèi)的員工可以輕松到達(dá)裝熱狗的蒸鍋和裝冷檸檬水的冷卻器,快速地為顧客服務(wù)?,F(xiàn)在,假設(shè)健康檢查員來了,要求將冷熱食品存放在不同的場所?,F(xiàn)在,員工仍然可以直接拿取熱狗,但必須走出快餐車,然后沿著街邊走到取檸檬水的地方。這樣,等候的隊(duì)列將移動得慢得多,尤其是在顧客訂購大量檸檬水的情況下。KPTI 降低操作系統(tǒng)性能的原理與此類似。

Meltdown 和 Spectre 有什么區(qū)別?

Meltdown 和 Spectre 都是因處理器處理推測執(zhí)行的方式而導(dǎo)致的漏洞,但它們的工作方式及其影響的處理器類型有所不同。

Meltdown 僅影響 Intel 和 Apple 處理器,并可能遭到利用,泄露處理器在推測執(zhí)行期間執(zhí)行代碼時(shí)暴露的信息。Meltdown 比 Spectre 更容易遭到利用,安全專家標(biāo)記其具有更大的風(fēng)險(xiǎn)。值得慶幸的是,Meltdown 可以更容易和更直接地修補(bǔ)。

Spectre 會影響 Intel、Apple、ARM 和 AMD 處理器,攻擊者可以利用該漏洞,真正誘使處理器運(yùn)行其不應(yīng)運(yùn)行的代碼。據(jù) Google 的安全專家稱,Spectre 比 Meltdown 更難利用,但也更難防護(hù)。

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于Cloudflare,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對觀點(diǎn)贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
掃碼登錄
打開掃一掃, 關(guān)注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個(gè)人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家