作者 | 雲之西
新年“禮物”:不敢置信的安全漏洞
當全球各大雲端計算公司不惜用各種黑科技(“水煮”伺服器、水中資料中心等等)榨出 CPU 每一赫茲的效能的時候,2018 年初雲端計算廠商主要依賴的 CPU 供應商 Intel 卻爆出了兩個嚴重高危漏洞:Meltdown 和 Spectre。
下麵是利用漏洞輕鬆地獲得了正在輸入的密碼:
這裡讀取記憶體獲得內容的效果:
不要以為只能作用於字元,圖片照樣可以:
透過上面的演示我們可以很直觀的瞭解到這個漏洞帶來的嚴重後果,因此對於支撐了整個現代網際網路業務的雲端計算行業為了使用者的安全是必須修複這一漏洞的。
現在我們瞭解一下漏洞的具體情況:
由 Meltdown 和 Spectre 這兩個漏洞延伸出三個變體 Spectre Variant 1(CVE-2017-5753)、Spectre Variant 2 (CVE-2017-5715) 和 Meltdown Variant 3(CVE-2017-5754):
Spectre Variant 1(CVE-2017-5753) 影響 AMD、Intel 和 ARM 處理器等高效能處理器,但可以透過軟體的方式修複,剩下的 Spectre Variant 2 和 Meltdown Variant 3 就僅影響 Intel 處理器,且修複只能透過作業系統內核的方式實現。
哭著也要打完的補丁
由於漏洞源自於 CPU 硬體,無法透過微碼的方式修複,必須透過 Windows 核心、Linux Kernel 和 macOS 的 Darwin-XNU 核心等進行修複,不僅修複難度高而且修複後還會帶來明顯的效能下降。這種修複不僅僅影響到了各大作業系統,也從根本上影響到了各個雲服務商的平臺,幾乎是讓雲端計算公司在效能上的努力前功盡棄。
這兩個漏洞是利用現代高效能處理器存在的安全缺陷,即無法透過正確判斷將低許可權的應用程式訪存與核心高許可權的訪問分開,使得攻擊者可以繞過記憶體訪問的安全隔離邊界,在核心中讀取作業系統和其他程式的記憶體資料,造成敏感資訊洩露風險。
目前的修複方式是透過 KPTI(Kernel Page Table Isolation)完全分離系統核心與使用者記憶體,讓系統使用另外一個分割槽表,使得使用者程式無法訪問系統核心。但是,KPTI 會導致 CPU 頻繁地從核心樣式切換到使用者樣式,引發耗時的 TLB 快取掃清,拉低了系統效能。
雲服務商遭遇重擊
不過很多人都透過一定的途徑瞭解到目前漏洞修複帶來的效能損耗對普通人的日常使用,特別是遊戲體驗基本上沒有太大影響,但是對於 CPU 密集型、I/O 密集型以及 CPU 快取依賴的伺服器使用效能,卻帶來了嚴重的效能下降:
在各大社交平臺可以看到雲端計算租戶對效能下降的抱怨,即便是 AWS 和 Azure 也無法避免:
在 AWS 的 EC2 產品交流論壇上使用者抱怨著漏洞修複帶來的效能下降情況:
各大社交媒體上都是關於 KPTI 帶來的效能問題的吐槽:
除了來自使用者的抱怨,雲端計算廠商也在加班加點的修複這個漏洞,但是大規模的修複這三個變體又談何容易,微軟的 Azure 和 AWS 的解決方案都無法避免重啟情況的出現,並且會有部分使用者需要手動進行重啟,重啟也就意味著網路服務將會中斷。
但最慘的恐怕還是修補漏洞打補丁結果還失敗了,Azure 的 Virtual Machines 就在打上 Meltdown 補丁更新後然後癱了~ 大量微軟 Azure 客戶紛紛在社交媒體上抱怨自己的虛擬機器遇到了問題:在 1 月 5 日 的 Meltdown 補丁更新後,自己的虛擬機器無法恢復正常執行。
可見本次嚴重的 CPU 晶片缺陷事故不僅影響巨大後果嚴重,會帶來效能降低問題而且修複也不是一件簡單的事情,雲端計算廠商想要完美的修複且不影響雲上租戶實屬不易,即便是國際頂級的廠商也無法避免。
不過,隨著國內外的雲服務商的解決方案陸續出爐,我們期待雲服務商們、安全廠商們、CPU 廠商們能共同找到最低限度的降低安全風險的前提下,盡可能的減少效能損失的技術手段。