作者:360CERT 2018-01-04 16:03
0x00 事件描述
2018年1月4日,Jann Horn等安全研究者披露了"Meltdown"(CVE-2017-5754)和"Spectre"(CVE-2017-5753 & CVE-2017-5715)兩組CPU特性漏洞。
據悉,漏洞會造成CPU運作機制上的資訊洩露,低權級的攻擊者可以透過漏洞來遠端洩露(瀏覽器形式)使用者資訊或本地洩露更高權級的記憶體資訊。
實際攻擊場景中,攻擊者在一定條件下可以做到,
• 洩露出本地作業系統底層運作資訊,秘鑰資訊等;
• 透過獲取洩露的資訊,可以繞過核心(Kernel), 虛擬機器超級管理器(HyperVisor)的隔離防護;
• 雲服務中,可以洩露到其它租戶隱私資訊;
• 透過瀏覽器洩露受害者的帳號,密碼,內容,郵箱, cookie等使用者隱私資訊;
目前相關的平臺,廠商,軟體提供商都在積極應對該系列漏洞,部分廠商提供瞭解決方案。
經過360安全團隊評估,"Meltdown"和"Spectre"漏洞影響嚴重,修復流程較複雜,建議相關企業/使用者務必作好相關的修復評估工作。
0x01 事件影響面
影響面
漏洞風險等級嚴重,影響廣泛:
• 近20年的Intel, AMD, Qualcomm廠家和其它ARM的處理器受到影響;
• 因為此次CPU漏洞的特殊性,包括Linux, Windows, OSX等在內的作業系統平臺參與了修復;
• Firefox, Chrome, Edge等瀏覽器也釋出了相關的安全公告和緩解方案;
漏洞編號
• Meltdown
o CVE-2017-5754
• Spectre漏洞
o CVE-2017-5715
o CVE-2017-5753
相關安全公告
• Intel
o https://newsroom.intel.com/news/intel-responds-to-security-research-findings/
o https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00088&languageid=en-fr
• Microsoft
o https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV180002
• Amazon
o https://aws.amazon.com/de/security/security-bulletins/AWS-2018-013/
• ARM
o https://developer.arm.com/support/security-update
• Google
o https://googleprojectzero.blogspot.co.at/2018/01/reading-privileged-memory-with-side.html
o https://www.chromium.org/Home/chromium-security/ssca
• MITRE
o http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2017-5715
o http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2017-5753
o http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2017-5754
• Red Hat
o https://access.redhat.com/security/vulnerabilities/speculativeexecution
• Xen
o http://xenbits.xen.org/xsa/advisory-254.html
• Mozilla
o https://blog.mozilla.org/security/2018/01/03/mitigations-landing-new-class-timing-attack/
• VMware
o https://www.vmware.com/us/security/advisories/VMSA-2018-0002.html
• AMD
o https://www.amd.com/en/corporate/speculative-execution
0x02 漏洞資訊
注: 本段文字中部分引用了相關安全公告,如有異議請聯絡cert@360.cn。
現代處理器(CPU)的運作機制中存在兩個用於加速執行的特性,推測執行(Speculative Execution)和間接分支預測(Indirect Branch Prediction)。
表面上看,處理器是依次順序執行既定的處理器指令。但是,現代處理器為了更好利用處理器資源,已經開始啟用並行執行,這個技術已經應用了20年左右(1995年開始)。假設,基於猜測或機率的角度,在當前的指令或分支還未執行完成前就開始執行可能會被執行的指令或分支,會發生什麼?如果猜對了,直接使用,CPU執行加速了。如果猜測不正確,則取消操作並恢復到原來的現場(暫存器,記憶體等),結果會被忽略。整個過程過程並不會比沒有猜測的時候慢,即CPU的推測執行(Speculative Execution)技術。
不幸的是,儘管架構狀態被回滾了,仍然有些副作用,比如TLB或快取狀態並沒有被回滾。這些副作用隨後可以被駭客透過旁道攻擊(Side Channel Attack)的方式獲取到快取的內容。如果攻擊者能觸發推測執行去訪問指定的敏感資料區域的話,就可能可以讀取到原本是其它使用者或更高特權級的敏感資料。
此外,猜測過程是可以被“汙染”的,攻擊者可以構造出類似ROP攻擊的邏輯去影響推測過程。根據作者提供的思路,主要有三種場景:
1. “邊界檢查繞過”:透過汙染分支預測,來繞過kernel或hypervisor的記憶體物件邊界檢測。比如,攻擊者可以對高權級的程式碼段,或虛擬環境中hypercall,透過構造的惡意程式碼來觸發有越界的資料下標,造成越界訪問。
2. “分支目標註入”: 汙染分支預測。抽象模型比較好的程式碼往往帶有間接函式指標呼叫的情況,CPU在處理時需要會進行必要的記憶體訪問,這個過程有點慢,所以CPU會預測分支。攻擊者可以透過類似的ROP的方式來進行資訊洩露。
3. “流氓資料載入”:部分CPU上,為了速度並不是每次都對指令作許可權檢查的,檢查的條件存在一定的缺陷;
實際攻擊場景中,攻擊者在一定條件下可以做到,
• 洩露出本地作業系統底層運作資訊,秘鑰資訊等;
• 透過獲取洩露的資訊,可以繞過核心(Kernel), 虛擬機器超級管理器(HyperVisor)的隔離防護;
• 雲服務中,可以洩露到其它租戶隱私資訊;
• 透過瀏覽器洩露受害者的帳號,密碼,內容,郵箱, cookie等使用者隱私資訊;
目前幾大系統廠商各自在作業系統核心中引入了KPTI的技術,旨在和使用者態的頁表隔離,這樣一來就可以解決"Meltdown"和"Spectre"漏洞問題。但根據相關的外部資訊,這樣一來可能帶來5%到30%效能上的損失。 360安全團隊會持續關注晶片廠商修復方案的出臺。
0x03 安全建議
"Meltdown"和"Spectre"漏洞修復流程相對複雜,可能會有部分軟體不相容問題(如防毒軟體等)。
360CERT建議相關企業/使用者務必作好相關的修復評估工作。
具體評估和修復工作,可以參考相關廠商的安全公告。
0x04 時間線
2018-01-04 Google的Jann Horn釋出漏洞資訊
2018-01-04 360安全團隊釋出預警通告
0x05 參考資料
• https://meltdownattack.com/meltdown.pdf
• https://spectreattack.com/spectre.pdf
• http://xenbits.xen.org/xsa/advisory-254.html
• https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00088&languageid=en-fr
• https://support.microsoft.com/en-us/help/4073119/windows-client-guidance-for-it-pros-to-protect-against-speculative-exe