處理器Meltdown與Spectre漏洞修復簡要指南

報告下載: 360: 處理器Meltdown與Spectre漏洞修復簡要指南.pdf

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, iOS, Android等在內的操作系統平台參與了修復;
  • 360安全瀏覽器, Firefox, Chrome, Edge等瀏覽器也發布了相關的安全公告和緩解方案;

漏洞編號

  • Meltdown
    • CVE-2017-5754
  • Spectre漏洞
    • CVE-2017-5715
    • CVE-2017-5753

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等用戶隱私信息;

360CERT和360GearTeam對漏洞進行了研究性質的嘗試。在Linux+Docker的環境下進行的攻擊演示,通過利用Meltdown或Spectre漏洞,模擬在獨立的Docker容器A對同一個宿主中的Docker容器B進行敏感數據(密碼)竊取的嘗試。

聲明:本試驗是360CERT針對CPU的Meltdown和Spectre漏洞作的一個研究性測試,實際的Docker攻擊利用場景中需要滿足特殊和較嚴苛的限制條件。

目前幾大系統廠商各自在操作系統內核中引入了KPTI的技術,旨在和用戶態的頁表隔離,解決」Meltdown」漏洞問題。但根據相關測試信息顯示,修復補丁可能帶來5%到30%性能上的損失,其中個人終端用戶基本感覺不到,部分伺服器的IO場景可能造成較大的性能損耗。

針對」Spectre」漏洞,相關操作系統廠商和晶元廠商積極配合,通過微碼固件更新和操作系統更新的方式進行解決。

0x03 安全建議

360CERT建議相關企業/用戶務必在充分了解相關風險的基礎上作好相關修複評估工作:

  1. 「Meltdown」和」Spectre」漏洞修複流程相對複雜,部分平台上暫時沒有統一的修復工具;
  2. 晶元廠商(如:Intel)的微碼固件補丁需要通過所在硬體OEM廠商獲取(如:Dell,聯想等);
  3. 可能會有部分軟體不兼容問題(如Windows平台下的部分殺毒軟體等);
  4. 在雲平台或特定應用場景中可能造成較大幅度的性能損失,升級前請充分了解相關信息;

具體評估和修復工作,可以參考以下建議和相關廠商的安全公告:

Intel的緩解建議

Intel已經和產業界聯合,包括其它處理器廠商和軟體廠商開發者,來緩解之前提到的三種攻擊類型。緩解策略主要聚焦在適配市面產品和部分在研產品。緩解策略除了解決漏洞本身之外,還需要兼顧到性能影響,實施複雜度等方面。

啟用處理器已有的安全特性(如 Supervisor-Mode Execution Protection 和 Execute Disable Bit )可以有效提高攻擊門檻。這部分的相關信息可以參閱Intel的相關資料。

Intel一直在與操作系統廠商,虛擬化廠商,其它相關軟體開發者進行合作,協同緩解這些攻擊。作為我們的常規研發流程,Intel會積極保證處理器的性能。

來源:

https://newsroom.intel.com/wp-content/uploads/sites/11/2018/01/Intel-Analysis-of-Speculative-Execution-Side-Channels.pdfn

PC終端用戶

PC終端用戶,建議用戶根據各個平台進行如下對應操作:

微軟Windows

修復步驟如下:

    1. 更新對應的瀏覽器,緩解」Spectre」漏洞攻擊;

    瀏覽器緩解措施360安全瀏覽器升級360安全瀏覽器到9.1及以上版本Firefox升級Firefox到57.0.4及以上版本Chrome1. 在地址欄中,輸入 chrome://flags/#enable-site-per-process,然後按 Enter 鍵。

    2.點擊「Strict site isolation」旁邊的啟用。(如果系統沒有顯示「Strict site isolation」,請更新 Chrome。)。

    3. 點擊立即重新啟動Edge/IE補丁集成於Windows補丁中,請參考「更新Windows補丁」

      1. 更新晶元廠商的微碼補丁

      晶元廠商微碼補丁地址Intel微碼補丁發布流程較複雜,請關注並通過OEM提供商渠道更新(如戴爾,聯想,惠普等)。

      如:

        1. 更新Windows補丁

        用戶可直接下載360安全衛士CPU漏洞免疫工具進行更新: down.360safe.com/cpulea

        注意:根據微軟提供的信息,依然存在部分不兼容(如殺毒軟體,部分AMD的CPU)的風險,請充分了解風險後再選擇是否更新:

        • support.microsoft.com/e

        蘋果OSX

        蘋果在Mac OSX High Sierra 10.13.2 及更高版本修復了Meltdown和Spectre漏洞,請直接升級。

        Android & iOS

        蘋果在iOS 11.2.2及更高版本修復了Spectre漏洞;

        Android產品將於近期更新,盡請留意。

        IDC/雲系統管理員

        目前部分IDC/雲基礎架構廠商已經提供了初步解決方案,但是由於補丁帶來的風險和性能損耗暫時沒有明確,權威的結論。

        請系統管理員盡量做到:

        1. 積極聯繫相關的上遊了解相關的風險和解決方案,協同制定解決方案;
        2. 需要重點關注補丁帶來風險和性能損耗評估;
        3. 從宏觀和微觀層面,制定完善,可行的修復和測試流程方案;
        4. 涉及到的微碼固件補丁請聯繫硬體OEM廠商,協同修復,測試,評估;

        以下是相關廠商提供的解決方案:

        Linux-Redhat/CentOS發行版

        Redhat提供了一份產品的修復狀態清單,建議用戶參照該清單進行更新。具體用戶可以參考:

        • access.redhat.com/secur
        • access.redhat.com/artic

        鑒於更新完補丁後,在部分應用場景下會造成性能下降,RedHat方面提供了運行時的解決方案:

        • access.redhat.com/artic

        用戶可以通過以下命令臨時關閉或部分KPTI,Indirect Branch Restricted Speculation (ibrs),Indirect Branch Prediction Barriers (ibpb) 等安全特性。

        # echo 0 > /sys/kernel/debug/x86/pti_enabledn# echo 0 > /sys/kernel/debug/x86/ibpb_enabledn# echo 0 > /sys/kernel/debug/x86/ibrs_enabledn

        該特性需要使用debugfs 文件系統被掛在,RHEL 7默認開啟了。 在RHEL 6中可以通過以下命令開啟:

        # mount -t debugfs nodev /sys/kernel/debugn

        用戶可以通過以下命令查看當前安全特性的開啟狀態:

        # cat /sys/kernel/debug/x86/pti_enabledn# cat /sys/kernel/debug/x86/ibpb_enabledn# cat /sys/kernel/debug/x86/ibrs_enabledn

        Intel晶元在修復前默認如下:

        pti 1 ibrs 1 ibpb 1 -> fix variant#1 #2 #3npti 1 ibrs 0 ibpb 0 -> fix variant#1 #3 (for older Intel systems with no microcode update available)n

        Intel晶元在修復後默認如下:

        pti 0 ibrs 0 ibpb 2 -> fix variant #1 #2 if the microcode update is appliednpti 0 ibrs 2 ibpb 1 -> fix variant #1 #2 on older processors that can disable indirect branch prediction without microcode updatesn

        在沒有微碼固件補丁升級的情況下:

        # cat /sys/kernel/debug/x86/pti_enabledn1n# cat /sys/kernel/debug/x86/ibpb_enabledn0n# cat /sys/kernel/debug/x86/ibrs_enabledn0n

        註:Redhat等廠商並不直接提供晶元廠商的微碼,需要用戶到相關的硬體OEM廠商進行諮詢獲取。

        Linux-Ubuntu發行版

        目前Ubuntu只完成對Meltdown(CVE-2017-5754)漏洞在 x86_64 平台上的更新。

        請關注Ubuntu的更新鏈接:

        • wiki.ubuntu.com/Securit

        Linux-Debian發行版

        目前Debian完成了Meltdown(CVE-2017-5754)漏洞的修復。

        關於 CVE-2017-5715 和 CVE-2017-5753 請關注Debian的更新鏈接:

        • security-tracker.debian.org
        • security-tracker.debian.org

        微軟Windows Server

        建議用戶開啟系統自動更新功能,進行補丁補丁安裝。

        根據微軟提供的信息,依然存在部分軟體不兼容(如殺毒軟體)的風險,請充分了解風險後再選擇是否更新。

        更多信息請查看:

        • support.microsoft.com/e

        Xen虛擬化

        目前Xen團隊針對Meltdown,Spectre漏洞的修復工作依然在進行中,請關注Xen的更新鏈接:

        • xenbits.xen.org/xsa/adv

        目前Xen暫時沒有性能損耗方面的明確評估,請謹慎更新。

        QEMU-KVM虛擬化

        QEMU官方建議通過更新guest和host操作系統的補丁來修復Meltdown漏洞,並表示Meltdown漏洞不會造成guest到host的信息竊取。

        針對Spectre的變種CVE-2017-5715,QEMU方面正在等待KVM更新後再修復,目前KVM在進行相關補丁整合。需要注意的是,熱遷移不能解決CVE-2017-5715漏洞,KVM需要把cpu的新特性expose到guest內核使用,所以guest需要重啟。

        相關信息請查閱:

        • qemu.org/2018/01/04/spe
        • https://marc.info/?l=kvm&m=151543506500957&w=2

        雲平台租戶

        360CERT建議雲平台用戶,

        1. 關注所在雲廠商的安全公告,配合相關雲廠商做好漏洞補丁修復工作;
        2. 充分了解和注意補丁帶來的風險和性能損耗方面的指標;
        3. 更新前可以考慮使用相關快照或備份功能;

        0x04 FAQ 常見問題

        1. 問題: Meltdown和Spectre漏洞具體技術影響。 比如利用這兩個漏洞發動攻擊是否容易,什麼條件下觸發,危害多大?回答: Meltdown和Spectre漏洞在一定的條件下都可以觸發,例如通過本地環境,瀏覽器環境, Xen/QEMU-KVM中惡意租戶Guset的場景來觸發和攻擊,雖然目前尚未發現公開的攻擊代碼,但能夠對用戶造成帳號, 密碼, 內容, 郵箱, cookie等隱私信息泄露潛在危害。從以往情況看,在漏洞暴露後一定時間內,就可能出現可利用的攻擊代碼。對此,我們需要保持高度警惕。Meltdown漏洞主要作用於本地環境,可用于越權讀內核內存。Spectre由於不會觸發trap,可以用於瀏覽器攻擊,以及虛擬機guest/host攻擊,及其它存在代碼注入(如即時編譯JIT)程序的潛在攻擊。具體技術情況需如下:

          類型利用難度本地環境觸發瀏覽器觸發內核數據泄露虛擬化Guest內核攻擊虛擬化Host/HyperVisor攻擊其它JIT程序潛在攻擊Meltdown較難是否是是部分場景可用否Spectre較難是是是是部分場景可用是
        2. 問題:當前對漏洞的處置情況到底怎麼樣了,業界解決情況如何,有沒有比較完善的解決方案。目前能解決到什麼程度,怎麼才能徹底解決?回答:目前大部分的個人終端操作系統(如Windows, MacOS, iOS, Android)都可以通過直接的渠道進行更新解決,其中Windows平台存在部分殺毒軟體不兼容風險。針對IDC或雲廠商相關的系統管理員,除了還需要再繼續評估補丁的兼容性風險外,更需要再進一步評估補丁可能帶來的較大幅度的性能損耗,目前晶元廠商也在積極和大型IDC,雲服務提供商協同制定更完善的解決方案。
        3. 360CERT建議該怎麼解決,後續該怎麼做?回答:360CERT建議,一方面,PC/手機的個人用戶可以直接通過操作系統廠商或第三方安全廠商提供的補丁來解決。另一方面,針對補丁給企業帶來修復難題,大型IDC/企業/雲廠商,晶元廠商,操作系統廠商,信息安全公司要協同起來,在補丁方案,補丁風險評估,補丁導致的性能損耗評估,綜合補丁標準方案,一體化補丁等方面形成合力,在保證業務穩定的情況下逐步或分階段推進補丁的修復工作。

        0x05 時間線

        2018-01-04 Google的Jann Horn發布漏洞信息

        2018-01-04 360安全團隊發布預警通告

        2018-01-09 360安全團隊更新預警通告為版本2

        0x06 相關安全公告

        • Intel
          • newsroom.intel.com/news
          • https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00088&languageid=en-fr
          • intel.com/content/www/u
        • Microsoft
          • portal.msrc.microsoft.com
          • support.microsoft.com/e
        • 聯想
          • support.lenovo.com/us/z
        • 華為
          • huawei.com/en/psirt/sec
        • Amazon
          • aws.amazon.com/de/secur
        • ARM
          • developer.arm.com/suppo
        • Google
          • googleprojectzero.blogspot.co.at
          • chromium.org/Home/chrom
          • security.googleblog.com
        • MITRE
          • cve.mitre.org/cgi-bin/c
          • cve.mitre.org/cgi-bin/c
          • cve.mitre.org/cgi-bin/c
        • Red Hat
          • access.redhat.com/secur
          • access.redhat.com/artic
        • Apple
          • support.apple.com/en-us
        • Xen
          • xenbits.xen.org/xsa/adv
        • Mozilla
          • blog.mozilla.org/securi
        • VMware
          • vmware.com/us/security/
        • AMD
          • amd.com/en/corporate/sp
        • SuSe
          • suse.com/support/kb/doc
        • Ubuntu
          • wiki.ubuntu.com/Securit
        • QEMU-KVM
          • https://marc.info/?l=kvm&m=151543506500957&w=2
          • qemu.org/2018/01/04/spe
        • 漏洞報告
          • meltdownattack.com/melt
          • spectreattack.com/spect
          • googleprojectzero.blogspot.co.uk
        • 360
          • down.360safe.com/cpulea

        登錄安全客 - 有思想的安全新媒體www.anquanke.com/,或下載安全客APP來獲取更多最新資訊吧~

        推薦閱讀:

        三個混淆過狗一句話分析
        用兩分鐘告訴你 我是如何用搞定隔壁老王的 WiFi 密碼
        2017 軟體與移動智能系統安全暑期學校詳細課程介紹

        TAG:互联网 | 网络安全 | 信息安全 |