作者 Shoichi Chou | 發布日期 2018 年 03 月 25 日 20:07 | 分類 網路 , 資訊安全 , 軟體、系統 |
自從 1 月 Google Project Zero 團隊揭露 Intel CPU 的 Meltdown 缺陷,以及所有現代 CPU 都有的 Spectre 缺陷以後,影響面之廣人人自危。由於是硬體缺陷,各大廠商也只能努力推出修補更新加以彌補。幾個月過去了,相關資訊似乎不再常見,然而真的沒問題了嗎?解決方案都很理想嗎?該如何精準評量效能的降低程度呢?
目前各系統的安全更新主要是從系統軟體面去做處理,理論上會讓程式有 2% 到 30% 不等的降速狀況。那實際影響到底有多大?知名網路串流影片公司 Netflix 表示,針對 Meltdown 的 Linux 安全修補預估讓串流效能降低了 0.1%~6% 之間,而這還只是做了 4 個 Meltdown patch 修補的其中之一而已。
Netflix 的經驗與評估
布倫丹·格雷格(Brendan Gregg)是 Netflix 工程師,同時也是 dTrace 專家、硬碟領域知名人士,他制定了一個「微標竿」(microbenchmark)來評估針對 Meltdown CPU 設計缺陷的 Linux 核心分頁表隔離(KPTI)修補,並提出精準可管理的執行效能下降預測,格雷格表示他的工作以下列 5 個因素來評估修補所產生的開銷(overhead):
- 系統呼叫率(Syscall rate):數量多到某種程度才會有可觀的明顯影響,一顆 CPU 每秒有 5 萬個系統呼叫的情況下,額外開銷可能有 2%,伴隨著系統呼叫率的增加而這個數字又會再上升。在 Netflix,除了資料庫以外,高系統呼叫率在雲端中不常見。
- 前後文切換(Context switches):這個增加的額外開銷類似系統呼叫率的部分,格雷格認為前後文切換率可以簡單地添加到系統呼叫率裡用於後續的評估。
- 分頁錯誤率(Page fault rate):錯誤率高時,還會增加一點額外開銷。
- 記憶體工作集大小(熱資料):Working set size(hot data),超過 10MB 資料量存取,會因為 TLB(CPU 的頁表快取)沖洗,導致額外開銷。這可以將 1% 的開銷(系統呼叫循環)變成 7%。這個很重的額外開銷可以透過兩個方法降低:1. Linux 4.14 開始的 pcid;2. 使用巨大的分頁。
- 快取存取類型(Cache access pattern):有些存取類型從快取良好到快取不良轉變時,會讓額外開銷遽增,最糟糕可能會額外增加 10% 的額外開銷,例如 7% 的開銷增加到 17%。
格雷格的結論是,在某些情況下,軟體修補所增加的開銷,高達 800%,但如果對系統做精細的調校,對效能的影響不至於讓人那麼無法接受。Gregg 大幅降低修補帶來的新程式碼帶給 Linux 的額外開銷,Netflix 使用的是 AWS 基礎設施 ,格雷格的結論是:基於系統呼叫率,KPTI 的開銷在 0.1%到 6% 之間,他有自信把開銷降到 2%。
他還考慮到他的雇主 Netflix 使用的 AWS 基礎設施的影響,並得出結論「由於我們的系統調用率,KPTI 的開銷在 0.1% 到 6% 之間,我預計我們會把它降低到低於 2% 調整」,這個成績雖然不錯,格雷格還沒有估計進修補對 hypervisors 跟 microcode 對效能損失的影響。
使用 Linux 伺服器的業者(包含一般使用者)可以針對電腦的使用情境重編核心自行調整,降低修補所帶來的效能下降問題,但對於廣大一般 Windows、MacOS X 的電腦使用者而言,就沒這麼幸運了,沒有漏洞的 CPU 才是釜底抽薪的方案 。
Intel 提出分區系統的緩解修補
Intel 在這次的 CPU 漏洞風暴可以說是跌個滿頭包,不斷被動的應付。終於在 3 月 15 日上午,Intel 宣布針對 Meltdown 和 Specter v2 漏洞,提出分區系統的硬體緩解(mitigations)修補,將會實做在 Xeon server/HEDT platform 下一代的 Cascade Lake,以及第 8 代酷睿(Core)處理器裡。
要特別注意的是,Intel 在硬體做出來的改變只能緩解 Meltdown(Intel 稱為「variant 3」)和 Specter v2,是透過新的分區系統減輕了漏洞,同時改善了行程(process)和特權級別(privilege-level)分離,類似「防護牆」的做法。
Intel 2018 的 Meltdown 與 Spectre 緩解計畫如下:
- Meltdown:以硬體解決
- Spectre variant 1:繞過邊界檢查(bounds check bypass)的漏洞,目前只能以軟體解決
- Spectre variant 2:分支目標注入(branch target injection)漏洞,以硬體解決
很不幸的是 Spectre variant 1 目前還只能靠各軟體開發人員來解決,而 Spectre 最被大家擔心的其實一直都是 v1,整個產業的研究人員對 v1 還沒有深度的理解,不知如何處理,好在 Specter v1 只能用於攻擊同級的行程而無法攻擊管理級的行程,也就是說駭客能透過程式穿透進一般使用者等級的程式與資料,而無法穿透進更安全的系統管理層級。
雖然是不全面的緩解,但有總比沒有好。此外,Intel 已經針對過去 5 年發表的所有 CPU 產品提供 microcode 更新,甚至 Core 架構系列,第二代的 Sandy Bridge 以後都有提供,Intel 還計劃繼續處理最久達 2007 的 cpu 產品的 microcode 更新,包含第一代酷睿處理器(Nehalem / Gulftown / Westmere / Lynnfield / Clarksfield / Bloomfield / Arrandale / Clarkdale)和 45nm Core 2 處理器(Penryn / 的 Yorkfield / Wolfdale 處理器 / Hapertown) ,但是 65 奈米 Core 2(Conroe 等)不在內,然而最大的課題應該是:主機板業者願不願意提供採用舊 CPU 的機板 BIOS 更新?品牌電腦業者針對過保固的產品是否願意提供更新呢?
畢竟是硬體有缺陷,總是要修補,但追根究底還是要改良硬體設計來徹底解決 Meltdown 與 Spectre 的漏洞。Intel 最終可能在 2018 末、2019 初發表的第九代酷睿處理器架構 Ice Lake,透過改變設計解決上述問題。在此之前,終端消費者還是要關注好自身的權益,請原購買產品的公司提出解決方案。
没有评论:
发表评论