CVE編號 | CVE-2017-5753 CVE-2017-5715 CVE-2017-5754 |
---|---|
解決辦法 | 1. Windows 7/8/10與Server 2008/2008R2/2012/2012R2作業系統,適用以下方法確認是否使用的CPU處理器易遭受Meltdown與Spectre漏洞的攻擊: (1)首先透過微軟官方(https://gallery.technet.microsoft.com/scriptcenter/Speculation-Control-e36f0050#content)網址下載檔案,並將「SpeculationControl.zip」檔案解壓縮。 (2)透過搜尋列表搜尋Windows PowerShell,然後以系統管理員權限執行。 (3)在Windows PowerShell視窗切換到檔案解壓縮的位置。 (4)輸入「$SaveExecutionPolicy=Get-ExecutionPolicy」。 (5)輸入「Set-ExecutionPolicy RemoteSigned -Scope Currentuser」→按下Enter→按下Y。 (6)輸入「Import-Module .\SpeculationControl.psm1」→按下Enter→按下R。 (7)輸入「Get-SpeculationControlSettings」→按下Enter。 (8)視窗顯示紅字的部分代表可能易遭受攻擊的方式,綠字的部分則代表不受該攻擊方式的影響。 (9)最後確認完畢後,輸入「Set-ExecutionPolicy $SaveExecutionPolicy -Scope Currentuser」→Enter→按下Y,將PowerShell模式復原。 2. Ubuntu/Debian的Linux作業系統可透過以下方法,確認是否使用的CPU處理器易遭受Meltdown與Spectre漏洞的攻擊,其餘開源或商業Linux系統則請洽詢維運廠商。 (1)首先可至(https://github.com/speed47/spectre-meltdown-checker)網址下載Linux的檢查檔案。 (2)下載方式,打開終端視窗,輸入「git clone https://github.com/speed47/ spectre-meltdown-checker.git」或「wget https://raw.githubusercontent.com/speed47/spectre-meltdown-checker/master/ spectre-meltdown-checker.sh」。 (3)接著切換到下載檔案的位址,並以管理者模式運行檢查檔案「sudo spectre-meltdown-checker.sh」。 (4)可檢視結果中的STATUS狀態(VULNERABLE或NOT VULNERABLE),確認當前是否易遭受Meltdown與Spectre漏洞的影響。 3.目前部分廠商已針對部分產品或設備釋出更新,可參考或持續關注以下各家廠商的專區進行確認: -Microsoft Windows: -APPLE:https://support.apple.com/en-us/HT201222 -iOS: 更新至 iOS 11.2.2。 -VMware: -Ubuntu: -RedHat: -SUSE: -Android:確認Android Security Patch為一月(等候各原廠系統OTA更新檔釋出) 瀏覽器更新: -Edge and IE:同Microsoft Windows作業系統更新項目 -Google:https://support.google.com/faqs/answer/7622138 -Mozilla Firefox:更新版本至57.0.4以上 |
張貼日 | 2018-01-06 |
上稿單位 | TWCERT/CC |
●概述:
全球只要使用CPU的資訊產品,無論行動裝置或個人電腦,幾乎都難免有鬼魅(Spectre)和熔毀(Meltdown)兩類漏洞,基於CPU架構體系,對間接分支(indirect branch)指令有speculatively execute相關設計,讓有益數據在用到前先完成運算,並儲存結果於cache,但經由分析,讓低權限的操作者,能接觸本機其他AP與OS所佔用記憶體,破解記憶體區間該有之保護,從而獲得密碼等隱私資料,部分CPU製造商已公布修補,軟體開發商亦研製相應產品更新,陸續釋放給底層用戶,但改善kernel page-table isolation技術後,CPU效能最多降低30%。
●編註:
(1)漏洞緣起
本文談及Spectre(CVE-2017-5753、CVE-2017-5715)與Meltdown(CVE-2017-5754)兩者,源於CPU結構設計為追求運算效率所衍生之副作用,蓋因在機械語言指令集內,程式控制類指令稱作間接分支(indirect branch),相對也有直接分支(direct branch),direct branch會將下一個待執行指令所在位址先準備好,而indirect branch則是指令執行前,絲毫不知位址何在,端賴記憶體位置參數值,間接分支有助於處理單一輸入多種可能的程式碼,例如C語言的”case”應用方式,偏偏間接分支和資料區域性(data locality)會拖慢運算速度,為改善效率,新型CPU被設計成能預測即將執行的指令碼且預先運作,若是猜對了那就節省時間,旋即派上用場,猜錯就對無用運算結果解除聯繫,以假定為基礎的運算稱為speculatively execute,的確有效提升整體速度,同時也讓提早準備的資料有被觀察的管道。應用到本文主角漏洞Spectre、Meltdown,從硬體缺陷入手,趁著speculatively execute instruction所得之有益資料在記憶體不同位置搬移運用時,從尚未清除過的區段偷取資料,探勘cache訊息的惡意程式能夠利用Race Condition,取得其他程式使用中記憶體區域所有內容,但不能修改。
(2)攻擊模式
按上述原理,CPU cache訊息採集者必然是本機用戶,且具備branch instruction推測性執行的知識,使用惡意工具蒐集data cache,能推論並獲取所望資料,無論是密碼、照片、email還是聊天內容,即使是VM的客體OS用戶,亦能窺伺其他客體OS甚至實體主機的專用記憶體區段,但細部操作仍有區隔。
(2-1)鬼魅Spectre
結合speculative execution和直接、間接分支預測之特性,Spectre突破應用程式間屏障,即便駭客對零缺失AP下手亦能得逞,事實上安全性檢查愈周全,可探勘面愈大,更易受鬼魅危害,尤其是eBPF直譯器或eBPF 即時編譯(Just in Time:JIT)引擎產生的code頗脆弱,只要觸發越界索引錯誤,就能讓VM的客體OS讀取虛擬機管理者專用CPU virtual memory內資料,執行惡意程式碼刻意造成CPU執行推測性間接分支,隨後記憶體內容被寫入CPU cache,再探知cache取得資料。
Spectre不僅侵犯AP間的界限,若用JavaScript code型態,尚能逃過瀏覽器沙箱檢測,除非更換處理器否則無法根除漏洞,難以查知修補的特色形同鬼魅,故以此命名。
(2-2)熔毀Meltdown
Meltdown危害更甚Spectre,能避開核心記憶體隨機配置(Kernel address space layout randomization,KASLR)的保護措施讀取kernel memory,甚至比照作業系統等級閱讀完整記憶體,瓦解AP與OS間基礎隔離,連硬體強制的安全邊界線都被摧毀,如同高熱熔化鐵壁,故稱「熔毀」。
由於執行惡意碼後,促使CPU在非同步許可權檢查發生前,從cache讀資料,特點是駭客僅利用indirect branch prediction事發機會,對cache進行分析。
(3)影響層面
標題所指全球CPU並非危言聳聽,資訊類硬體零件銷售廣、汰換快,無論電腦、行動裝置、雲端設備、網管、錄像等機體,只要內裝CPU俱受影響,目前尚未證實Spectre與Meltdown有攻擊案例,但威脅終究存在,所幸能從軟體面解決,Intel主動公布相關弱點CPU型號,研究指出ARM與AMD也不免遭殃,然AMD表態其產品嚴控記憶體存取權限,保證無恙,不鼓勵AMD處理器使用者安裝任何軟體更新。
至於軟體商,多數已對旗下商品製作更新,實際進度參考各官網,雖然各廠推出多種更新,然其原理相似,主要在改善核心分頁表隔離(kernel page-table isolation,KPTI)技術,畢竟散落的分頁表碎片要組合成整塊才有用,每次kernel開始執行指令都必須清空cache,就因多道工序,CPU效能降低5~30%,不願犧牲硬體效能者,試著強化操作人員管控。
影響產品:
- Intel® Core™ i3, i5, i7, M(45nm and 32nm)
- Intel® Core™ processors 2nd~8th generation
- Intel® Core™ X-series Processor Family for Intel® X99, X299 platforms
- Intel® Xeon ® processor 3400, 3600, 5500, 5600, 6500, 7500 series
- Intel® Xeon ® Processor E3, E5, E7, Scalable Family
- Intel® Xeon Phi™ Processor 3200, 5200, 7200 Series
- Intel® Atom™ Processor C, E, A, x3, Z Series
- Intel® Celeron® Processor J, N Series
- Intel® Pentium® Processor J, N Series
- Intel® Pentium® Processor J, N Series