您的位置:首頁>正文

英特爾處理器“內核記憶體洩漏”漏洞,全系CPU性能降低30%

英特爾處理器晶片的一個基本設計缺陷已經迫使Linux和Windows重新設計其系統內核, 以解決晶片級的安全性漏洞。

程式師正在爭先恐後地檢查開源Linux內核的虛擬記憶體系統。

與此同時, 微軟預計將在即將到來的補丁週二公開介紹Windows作業系統的必要變更:這些變化是在11月份和12月份運行快速Windows內部版本的beta測試者。

至關重要的是, Linux和Windows的這些更新將會對英特爾系列產品造成衝擊, 缺陷影響效果仍然在基準測試中, 但是我們預見的是:運行任務和處理器型號的不同, CPU性能將降低5%-30%的。 最近的英特爾晶片具有PCID等功能, 可以降低性能。 最近的英特爾晶片都採用了PCID等, 這可以減少性能影響, 但也只是杯水車薪。

英特爾晶片內部的漏洞細節處於封閉狀態:對這些細節的禁令是本月早些時候提出的, 或許是微軟下週二的補丁。 實際上, Linux內核的修補程式可供所有人查看, 但原始程式碼中的注釋已被編輯以混淆該問題。

然而, 這個缺陷的一些細節已經出現, 所以這就是我們所知道的。

碰撞

據瞭解, 該錯誤出現在過去十年中生產的現代英特爾處理器中。 它允許普通的使用者程式(從資料庫應用程式到Web流覽器中的JavaScript)在一定程度上辨別受保護的內核記憶體區域的佈局或內容。

解決方法是使用所謂的內核頁面表隔離(KPTI)將內核的記憶體與使用者進程完全分開。 有一次, Linux內核團隊仔細研究了強制取消內核中斷蹦床(又名FUCKWIT)的內核, 讓你瞭解開發人員是多麼煩人。

只要正在運行的程式需要執行任何有用的操作(如寫入檔或打開網路連接), 就必須暫時將處理器的控制權交給內核來執行。 為了盡可能快速高效地從使用者模式轉換到核心模式並回到使用者模式, 內核存在於所有進程的虛擬記憶體位址空間中, 儘管這些程式是不可見的。 當需要內核時, 程式進行系統調用, 處理器切換到核心模式並進入內核。 完成後, 告知CPU切換回使用者模式,

並重新進入該過程。 在使用者模式下, 內核的代碼和資料保持不見, 但出現在進程的頁表中。

把內核想像成上帝坐在雲上, 俯視地球。 它在那裡, 沒有正常的生物可以看到它, 但他們可以祈禱。

這些KPTI補丁將內核移入一個完全獨立的位址空間, 所以它不僅對運行的進程是不可見的, 甚至根本就不存在。 實際上, 這不應該是需要的, 但顯然英特爾晶片中存在一個缺陷, 允許內核訪問保護以某種方式被繞過。

這種分離的不利之處在於, 在每個系統調用的每個系統調用和每個來自硬體的中斷之間, 在兩個單獨的位址空間之間切換是相對昂貴且時間明智的。 這些上下文切換不會立即發生, 而是強制處理器轉儲緩存的資料並從記憶體中重新載入資訊。

這增加了內核的開銷, 並減慢了電腦的速度。

您的英特爾驅動的機器將因此運行速度較慢。

這個安全性漏洞怎麼會被濫用?

最好的情況下, 惡意軟體和駭客可以利用這個漏洞更容易地利用其他安全性漏洞。

最糟糕的是, 程式和登錄使用者可能會濫用這個漏洞來讀取內核記憶體的內容。 可以這麼說, 這不是很好。 內核的記憶體空間對使用者進程和程式是隱藏的, 因為它可能包含各種各樣的秘密, 比如密碼, 登錄金鑰, 從磁片緩存的檔等等。 想像一下, 在流覽器中運行的一段JavaScript, 或者在共用的公共雲伺服器上運行的惡意軟體, 能夠嗅探受敏感內核保護的資料。

具體而言, 就最好的情況而言, 這個bug可能會被濫用來打敗KASLR :內核位址空間佈局隨機化。 這是各種作業系統使用的防禦機制,將內核元件放置在隨機位置的虛擬記憶體中。 這種機制可以阻止在內核中濫用其他錯誤的嘗試:通常,利用代碼(尤其是面向返回的程式設計漏洞 )依賴於在記憶體中的已知位置重用電腦指令。

如果你將內核的代碼隨機放置在記憶體中,攻擊者就無法找到他們所需的內部小工具來完全破壞系統。 處理器漏洞可能會被利用來找出記憶體中內核定位元其資料和代碼的位置,從而導致軟體修補亂七八糟。

但是,英特爾晶片中的漏洞可能比上述的緩解旁路更糟糕。 AMD在耶誕節發給 Linux內核郵寄清單的電子郵件中表示,它不受影響。 但是,這個資訊的措辭讓我們相當清楚地看到底層的詭計是什麼:

AMD處理器不受內核頁表隔離功能所抵禦的攻擊類型的限制。 AMD微架構不允許記憶體引用(包括推測性引用)在訪問會導致分頁錯誤時以較低特權模式運行時訪問較高特權資料。

這裡的關鍵字是“投機”。 現代處理器,如英特爾,執行投機性執行。 為了保持內部管道的指令符合要求,CPU內核會盡力猜測接下來要運行的代碼,取出並執行它。

從AMD軟體工程師Tom Lendacky在上面提出的建議看來,Intel的CPU可能在沒有執行安全檢查的情況下推測性地執行代碼。 似乎有可能以處理器開始執行通常被阻塞的指令(例如從使用者模式讀取內核記憶體)開始執行軟體,並且在特權級別檢查發生之前完成該指令。

這將允許ring-3級用戶代碼讀取ring-0級內核資料。 那不好。

這個漏洞的細節還沒有得到證實,這個關於它的嚴重性的討論已經足夠了,但是可以這樣認為:Linux和Windows的變化是顯著的,並且正在被高速推出。 這表明它比KASLR旁路更嚴重。

此外,在Linux上分離內核和用戶位址空間的更新是基於一組修補程式,這些修補程式是由奧地利格拉茨技術大學(Graz University of Technology)的eggheads創建的KAISER修補程式。 這些發現的PDF檔可以通過在CPU的虛擬記憶體系統的旁路攻擊中從內核中提取記憶體佈局資訊來擊敗KASLR。 該團隊提出了分裂內核和使用者空間以防止這種資訊洩漏,他們的研究激發了這一輪的修補。

他們的工作由安德斯·福格(Anders Fogh) 在7月份撰寫了這篇有趣的博客文章 。 那篇文章描述了他試圖通過濫用投機執行從使用者模式讀取內核記憶體。 雖然弗格無法提出任何有效的概念驗證碼,但他指出:

我的結果表明,推測執行確實繼續,儘管違反了核心模式和使用者模式之間的隔離。

看起來KAISER的工作與Fogh的研究有關,而且也正在開發一種通過濫用虛擬記憶體佈局來打破KASLR的實際手段,這個團隊可能會以某種方式證明Fogh是正確的 - 在Intel x86晶片上的投機性執行可以被利用來訪問內核記憶。

共用系統

該軟體發展人員在週一發表的一篇重磅分享和推特文章中稱,這個bug將會影響包括Amazon EC2,Microsoft Azure和Google Compute Engine在內的大牌雲計算環境,

目前存在一個禁用的安全性錯誤,顯然影響所有實現虛擬記憶體的當代[Intel] CPU體系結構,需要硬體更改才能完全解決。 軟體緩解的緊急開發正在公開進行,最近在Linux內核中進行,類似的緩解在11月份開始出現在NT內核中。 在最糟糕的情況下,軟體修復會導致典型工作負載的巨大減速。

這種攻擊會影響常見的虛擬化環境,包括Amazon EC2和Google Compute Engine。

微軟的Azure雲(運行大量Linux和Windows)將在1月10日進行維護和重啟 ,大概推出了上述修復程式。

亞馬遜網路服務公司還通過電子郵件警告客戶,預計本週五將有重大安全更新登陸,而不會涉及細節。

有傳言說,一個嚴重的虛擬機器管理程式錯誤 - 可能在Xen中 - 在2017年末輪到。可能是這個硬體缺陷是傳說中的錯誤:虛擬機器管理程式可以通過這個內核記憶體訪問cockup攻擊,因此需要修補,強制重新開機來賓虛擬機器。

這個bug可能會被濫用來打敗KASLR :內核位址空間佈局隨機化。 這是各種作業系統使用的防禦機制,將內核元件放置在隨機位置的虛擬記憶體中。 這種機制可以阻止在內核中濫用其他錯誤的嘗試:通常,利用代碼(尤其是面向返回的程式設計漏洞 )依賴於在記憶體中的已知位置重用電腦指令。

如果你將內核的代碼隨機放置在記憶體中,攻擊者就無法找到他們所需的內部小工具來完全破壞系統。 處理器漏洞可能會被利用來找出記憶體中內核定位元其資料和代碼的位置,從而導致軟體修補亂七八糟。

但是,英特爾晶片中的漏洞可能比上述的緩解旁路更糟糕。 AMD在耶誕節發給 Linux內核郵寄清單的電子郵件中表示,它不受影響。 但是,這個資訊的措辭讓我們相當清楚地看到底層的詭計是什麼:

AMD處理器不受內核頁表隔離功能所抵禦的攻擊類型的限制。 AMD微架構不允許記憶體引用(包括推測性引用)在訪問會導致分頁錯誤時以較低特權模式運行時訪問較高特權資料。

這裡的關鍵字是“投機”。 現代處理器,如英特爾,執行投機性執行。 為了保持內部管道的指令符合要求,CPU內核會盡力猜測接下來要運行的代碼,取出並執行它。

從AMD軟體工程師Tom Lendacky在上面提出的建議看來,Intel的CPU可能在沒有執行安全檢查的情況下推測性地執行代碼。 似乎有可能以處理器開始執行通常被阻塞的指令(例如從使用者模式讀取內核記憶體)開始執行軟體,並且在特權級別檢查發生之前完成該指令。

這將允許ring-3級用戶代碼讀取ring-0級內核資料。 那不好。

這個漏洞的細節還沒有得到證實,這個關於它的嚴重性的討論已經足夠了,但是可以這樣認為:Linux和Windows的變化是顯著的,並且正在被高速推出。 這表明它比KASLR旁路更嚴重。

此外,在Linux上分離內核和用戶位址空間的更新是基於一組修補程式,這些修補程式是由奧地利格拉茨技術大學(Graz University of Technology)的eggheads創建的KAISER修補程式。 這些發現的PDF檔可以通過在CPU的虛擬記憶體系統的旁路攻擊中從內核中提取記憶體佈局資訊來擊敗KASLR。 該團隊提出了分裂內核和使用者空間以防止這種資訊洩漏,他們的研究激發了這一輪的修補。

他們的工作由安德斯·福格(Anders Fogh) 在7月份撰寫了這篇有趣的博客文章 。 那篇文章描述了他試圖通過濫用投機執行從使用者模式讀取內核記憶體。 雖然弗格無法提出任何有效的概念驗證碼,但他指出:

我的結果表明,推測執行確實繼續,儘管違反了核心模式和使用者模式之間的隔離。

看起來KAISER的工作與Fogh的研究有關,而且也正在開發一種通過濫用虛擬記憶體佈局來打破KASLR的實際手段,這個團隊可能會以某種方式證明Fogh是正確的 - 在Intel x86晶片上的投機性執行可以被利用來訪問內核記憶。

共用系統

該軟體發展人員在週一發表的一篇重磅分享和推特文章中稱,這個bug將會影響包括Amazon EC2,Microsoft Azure和Google Compute Engine在內的大牌雲計算環境,

目前存在一個禁用的安全性錯誤,顯然影響所有實現虛擬記憶體的當代[Intel] CPU體系結構,需要硬體更改才能完全解決。 軟體緩解的緊急開發正在公開進行,最近在Linux內核中進行,類似的緩解在11月份開始出現在NT內核中。 在最糟糕的情況下,軟體修復會導致典型工作負載的巨大減速。

這種攻擊會影響常見的虛擬化環境,包括Amazon EC2和Google Compute Engine。

微軟的Azure雲(運行大量Linux和Windows)將在1月10日進行維護和重啟 ,大概推出了上述修復程式。

亞馬遜網路服務公司還通過電子郵件警告客戶,預計本週五將有重大安全更新登陸,而不會涉及細節。

有傳言說,一個嚴重的虛擬機器管理程式錯誤 - 可能在Xen中 - 在2017年末輪到。可能是這個硬體缺陷是傳說中的錯誤:虛擬機器管理程式可以通過這個內核記憶體訪問cockup攻擊,因此需要修補,強制重新開機來賓虛擬機器。

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示