當前位置:
首頁 > 科技 > Intel CPU 曝大 BUG:迫使重新設計 Linux和Windows

Intel CPU 曝大 BUG:迫使重新設計 Linux和Windows

其他操作系統將需要更新,性能會因此受到影響。TPU稱,亞馬遜、微軟和谷歌是三個受影響最深的雲計算廠商,如果漏洞被利用,那麼在同一物理空間的虛擬用戶A可以任意訪問到另一個虛擬用戶B的數據,包括受保護的密碼、應用程序密匙等。

英特爾處理器晶元爆出了一個根本性的設計缺陷,已迫使業界大刀闊斧地重新設計Linux內核和Windows內核,旨在消除這個晶元層面的安全缺陷。

廣大程序員正競相全面改動開源Linux內核的虛擬內存系統。與此同時,預計微軟會在即將到來的周二補丁日(Patch Tuesday)公開宣布對其Windows操作系統所作的必要改動:這些更新已發給在去年11月和12月運行快速更新通道(fast-ring)的Windows Insider版本的beta測試人員。

至關重要的是,針對Linux和Windows的這些更新將會給英特爾產品的性能帶來影響。實際影響仍在測試當中,不過我們估計性能大概會因此降低5%到30%,這取決於具體的任務和處理器型號。最近面市的英特爾晶元擁有PCID等功能特性,可以緩解性能受影響這個問題。

類似的操作系統(比如蘋果的64位macOS)同樣需要更新;這個缺陷存在於英特爾x86硬體中,微代碼更新似乎解決不了這個缺陷。必須在操作系統層面用軟體來加以修復,或者去購買沒有這個設計失誤的新處理器。

關於英特爾晶元內部這個漏洞的細節秘而不宣:要求對這些細節保密的禁令會在這個月初解除,可能會在下周微軟的周二補丁日前後。的確,針對Linux內核的補丁可供所有人查看,但是源代碼中的注釋已經過編輯,有意對這個問題模糊化處理。

然而,這個缺陷的一些細節已浮出了水面,下面是我們掌握的信息。

影響

據悉,該缺陷存在於過去十年生產的現代英特爾處理器中。它讓普通的用戶程序(從資料庫應用軟體到互聯網瀏覽器中的JavaScript)在一定程度上得以發現受保護內核內存裡面的數據。

解決方法就是,使用所謂的內核頁表隔離(KPTI)功能,將內核的內存與用戶進程完全分離開來。Linux內核開發團隊一度考慮過Forcefully Unmap Complete Kernel With Interrupt Trampolines(又名FUCKWIT),讓你了解這個問題對開發人員來說有多煩人。

只要運行中的程序需要執行任何有用的操作,比如寫入到文件或建立網路連接,它就要暫時將處理器的控制權交給內核以便執行任務。為了儘可能快速而高效地從用戶模式切換到內核模式,再切換回到用戶模式,內核存在於所有進程的虛擬內存地址空間中,不過這些程序看不見內核。需要內核時,程序進行系統調用,處理器切換到內核模式,進入內核。完成後,CPU被告知切換回到用戶模式,重新進入進程。在用戶模式下,內核的代碼和數據依然看不見,但存在於進程的頁表中。

不妨把內核想像成坐在雲上的上帝,俯視地球。上帝就在那裡,芸芸眾生都看不到它,但他們可以向上帝祈禱。

這些KPTI補丁將內核移到一個完全分離開來的地址空間,那樣不僅運行中的進程看不見它,它甚至根本就不在那裡。實際上,不應該需要這個,但英特爾晶元中存在的缺陷顯然讓內核訪問保護機制可以被人以某種方式繞過。

這種分離的缺點在於,針對每次系統調用和來自硬體的每次中斷,不斷地在兩個獨立的地址空間之間來回切換,這從時間方面來看開銷相當大。這種上下文切換不會瞬間發生,並迫使處理器倒出緩存數據,並從內存重新裝入信息。這就增加了內核的開銷,減慢了計算機的運行速度。

因此,你那搭載英特爾晶元的機器運行起來會變慢。

這個安全漏洞會如何被濫用?

輕則,惡意軟體和黑客可能會鑽這個漏洞的空子,更容易利用其他的安全漏洞。

重則,程序和登錄的用戶可能會濫用這個漏洞,讀取內核內存裡面的數據。就一句話,這可不是好事。內核的內存空間隱藏起來,用戶進程和程序看不見,因為它含有各種各樣的秘密信息,比如密碼、登錄密鑰、來自磁碟的緩存文件等等。設想一下,如果瀏覽器中運行的一段JavaScript或者在共享的公共雲伺服器上運行的惡意軟體能夠嗅探內核保護的敏感數據,造成的後果就會不堪設想。

具體來說,在最理想的情況下,有人可能利用這個缺陷挫敗KASLR:內核地址空間布局隨機化。諸多操作系統使用這種防禦機制,將內核組件放置在虛擬內存中的隨機位置中。這種機制可以挫敗企圖濫用內核中其他缺陷的陰謀:漏洞代碼(尤其是面向返回的編程漏洞,https://blog.skullsecurity.org/2013/ropasaurusrex-a-primer-on-return-oriented-programming)通常依賴於重複使用放在內存中已知位置的計算機指令。

如果你將內核代碼隨機放置在內存中,攻擊者就找不到全面破壞系統所需要的內部部件或組件。有人可能利用這個處理器漏洞,搞清楚內存中內核如何確定數據和代碼的位置,因而需要快速地推出軟體補丁。

然而,英特爾晶元中的這個漏洞可能比上述的漏洞緩解路過(mitigation bypass)還要糟糕。AMD在聖誕節發給Linux內核郵件列表的電子郵件(https://lkml.org/lkml/2017/12/27/2)中表示,AMD處理器不受影響。不過,這封郵件的措辭還是泄露了秘密,表明底層到底出了什麼岔子:

AMD處理器並不受到內核頁表隔離功能防禦的攻擊類型的影響。AMD微架構不允許在特權級別較低的模式下運行時訪問特權級別較高的數據的內存引用,包括推測性引用(speculative reference);如果出現這種訪問,就會導致頁面錯誤。

這裡的關鍵詞是「推測性」。像英特爾處理器這些現代處理器執行推測性執行。為了保持其內部管道塞有等待執行的指令,CPU內核會儘力猜測接下來要運行的代碼,取出代碼,然後執行代碼。

從AMD的軟體工程師湯姆?蘭達基(Tom Lendacky)在上面給出的建議可以看出,英特爾的CPU可能在沒有執行安全檢查的情況下推測性執行代碼。似乎有可能以這種方式來設計軟體,以便處理器開始執行通常會被阻止的指令(比如從用戶模式讀取內核內存的數據),然後在特權級別檢查進行之前完成該指令。

那將允許ring-3級別的用戶代碼可以讀取ring-0級別的內核數據。而那不是好事。

這個漏洞的具體情況還有待證實,不過考慮這一點:對Linux和Windows所作的改動意義重大,正迅速部署到位。這表明這個漏洞比KASLR旁路來得嚴重。

此外,對Linux上獨立的內核空間和用戶地址空間加以更新離不開一組名為KAISER補丁的修復程序,這些修復程序是由奧地利格拉茨技術大學(Graz University of Technology)的研究人員開發而成的。這些研究人員發現(https://gruss.cc/files/kaiser.pdf),只要針對CPU的虛擬內存系統發動旁路攻擊(side-channel attack),從內核中提取內存布局信息,就可以挫敗KASLR。該研究團隊建議分離內核空間和用戶空間,防止這種信息泄露。安德斯?福戈(Anders Fogh)審核了他們的研究工作,他在去年7月撰寫了這篇饒有趣味的博文(https://cyber.wtf/2017/07/28/negative-result-reading-kernel-memory-from-user-mode/)。

那篇文章描述了他試圖通過鑽推測性執行的空子,從用戶模式讀取內核內存裡面的數據。雖然福戈無法給出任何切實可行的概念證明代碼,不過他特別指出:

我的結果表明,儘管違反了內核模式和用戶模式之間的分離,但推測性執行確實繼續進行。

KAISER這項工作似乎與福戈的研究有關;除了設計一種通過鑽虛擬內存布局的空子來挫敗KASLR的實用方法外,該團隊還證明了福戈是對的,那就是可以鑽英特爾x86晶元上的推測性執行的空子,訪問內核內存裡面的數據。

共享系統

一位博客名為Python Sweetness的軟體開發人員周一發表了一篇競相轉載和轉推的文章,他在文中表示,這個缺陷會影響各大雲計算環境,包括亞馬遜EC2、微軟Azure和谷歌計算引擎。

目前一個被下禁令的安全缺陷在影響顯然所有實現虛擬內存的現代英特爾CPU架構,需要改動硬體才能徹底解決問題。外面正在開展緊急開發軟體緩解措施的工作,這方面的成果最近進入到了Linux內核;去年11月,類似的緩解措施開始出現在NT內核中。在最糟糕的情況下,軟體修復程序會導致典型的工作負載出現大幅減速。

有人暗示,這個攻擊影響常見的虛擬化環境,包括亞馬遜EC2和谷歌計算引擎……

微軟的Azure雲不光運行Windows,還運行大量Linux。Azure雲會在1月10日進行維護和重啟,大概會推出上述修復程序。

亞馬遜網路服務(AWS)也通過電子郵件警告客戶,預計本周五發布重大的安全更新,但沒有透露細節。

虛擬機管理程序爆出嚴重漏洞(可能涉及Xen)的傳聞在2017年年底甚囂塵上。這個硬體缺陷很可能就是那個傳聞中的漏洞:可以通過這個內核內存訪問缺陷,攻擊虛擬機管理程序,因此需要打上補丁,迫使大批啟動來賓虛擬機。

英特爾發言人沒有出面發表評論。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雲頭條 的精彩文章:

萬達雲或將被賣掉,接盤俠或是國資背景企業
Docker 公司已死!
Gartner:2018 年企業用戶的 「錢」 會花在了這些 IT 技術上
王健林旗下萬達網科員工遭集體裁員 超千人接到通知
56000多人被裁:印度IT行業「大屠殺」可能只是開始

TAG:雲頭條 |