世界上有沒有一種安全漏洞,廣泛存在於各種電子設備之中,破壞力極強並且難以被修復?2018年1月,Google Project Zero和一些獨立安全研究人員發現了CPU芯片硬件層面漏洞Spectre和Meltdown,對業界產生了巨大沖擊,似乎讓世界又一次因為安全漏洞而陷入恐慌之中。因此,漏洞一經爆出,芯片廠商便在修復路上,不停與時間賽跑。截止目前,業內公認防禦方案當屬KPTI+SMAP+user-kernel isolation這套組合拳法。

然而,就在3月26日-29日於新加坡召開的Black Hat Asia 2019上,來自百度安全實驗室的Yueqiang Cheng、Zhaofeng Chen、Yulong Zhang、Yu Ding、Tao Wei發表了關於Meltdown新變種創新性研究的議題報告,報告集中闡述了已有的Meltdown和Spectre攻擊是如何被KPTI+SMAP+user-kernel isolation的組合防禦技術所打敗的,以及首度披露新型Meltdown變種,可以完全攻破這套防禦組合。據悉,這也是業內首例能夠完全攻破這套防禦的最新變種。

“最強”防禦組合拳法解析

處理器上有許多運算和執行單元,分別完成運算,邏輯,測試和訪問等等各種功能,是計算機的大腦。為了提高性能,處理器採用了一種叫推測執行(Speculative Execution)的技術。

在分支指令發出後,相比傳統處理器,具有預測性執行能力的處理器則會驗證這些假設,如果假設有效,那麼執行繼續,如果無效,則解除執行,並處理其會根據實際情況開始正確的執行路徑。但需要注意的是,處理器在處理指令時,並不是嚴格按照指令原順序執行的,往往會結合指令的優先性進行排序,這就是說,處理器在指令執行時,會有亂序執行(Out-of-Order Execution)的情況發生。

而由於處理器訪問主存的速度較慢,在處理器內部內置了多級緩存,以緩存最近訪問的主存數據,方便處理器快速訪問,這就是高速緩存技術。

就 Meltdown 而言,這種攻擊方式主要利用的是當代處理器的亂序執行特性,可以在不需要進行系統提權的情況下,就讀取任意內核內存位置,包括敏感數據和密碼,甚至拿下整個內核地址空間。而spectre攻擊,則是利用了處理器的分支猜測及高速緩存技術。

芯片安全依然會“融毀”百度安全披露最新Meltdown攻擊變種 科技 第1張

從理論層面來說,這組漏洞可以影響到 1995 年發布的處理器。由於這個漏洞是架構上的缺陷,無論你使用什麼樣的系統(Windows、IOS、Android)、什麼樣的設備(電腦、手機、服務器)都可能受到影響。而該漏洞嚴重的破壞力也不可小視,其將會造成CPU運作機制上的信息泄露,低權級的攻擊者可以通過漏洞來遠程泄露用戶信息或本地泄露更高權級的內存信息。

本質上 Meltdown 和 Spectre 兩類攻擊方式造成的後果是“讀取”系統任意地址空間的數據,由於大部分操作系統將所有內核數據都映射到了用戶進程空間中,所以到目前為止,業內唯一認可有效的防禦措施是通過強制內核隔離(KPTI)來盡可能避免用戶進程映射內核中的數據,以此來防禦“讀取”內核數據的攻擊。該解決方案在不同的平臺上有不同的名稱:Linux上的內核隔離(KPTI)、Windows上的內核虛擬地址(KVA)陰影和OS X上的雙映射(DM)。

芯片安全依然會“融毀”百度安全披露最新Meltdown攻擊變種 科技 第2張

會議現場,來自百度安全的研究員們集中講解了“組合拳法”的防禦體系。KPTI/KVA/DM方案要求操作系統維護兩個頁表,一個頁表給用戶程序使用,一個給kernel使用,並且確保程序所使用的頁表不會映射高優先級的頁面,即不會映射kernel的頁面。兩個頁表的切換,會導致CR3的重新加載,從而引起TLB刷新,進而降低內存的訪問速度。如果某些應用場景需要大量的內核和用戶空間切換(兩個頁表之間的切換),會造成較高的性能開銷。為了降低這些性能開銷,kernel需要使用充分的利用PCID特性,把TLB的刷新降低。

芯片安全依然會“融毀”百度安全披露最新Meltdown攻擊變種 科技 第3張

同時SMAP (Supervisor Mode Access Protection)也使得Spectre的變種(gadget在kernel space)不能成功獲取kernel的數據。SMAP機制不允許內核訪問用戶地址空間。任何非法訪問,都會觸發CPU異常。

面對KPTI+SMAP+user-kernel isolation的最強防禦組合,業內公認還沒有任何攻擊可以允許一個低特權級的應用程序獲取內核數據。

百度安全發現最新Meltdown攻擊變種

在本屆Black Hat Asia 2019,百度安全發表的最新研究成果表明:存在新型變種v3z,允許惡意進程繞過kpti/kva/dm並可靠地讀取任何內核數據。據百度安全介紹,v3z是第一個能夠擊敗kpti/kva/dm的熔毀變型。這也就是說,當前業內唯一認可的有效防禦措施也就此被打破。V3z主要是利用了用戶頁表與內核頁表共存的內存區域,我們在這裏把這個區間取名為bridge。通過對bridge的探測,間接獲取內核其他地方的數據。

V3z攻擊的步驟包括以下步驟:

Offline階段

對共享的內存區間(bridge)進行數據採集。採集的主要目的就是要在後面probe的時候減小時間代價。這一步驟主要利用了一個gadget來使得meltdown的目標數據進入l1d緩存。

Online階段

對目標內核數據與共享內存區間(bridge)之間建立數據依賴。這裏也需要一個特殊的gadget

芯片安全依然會“融毀”百度安全披露最新Meltdown攻擊變種 科技 第4張

對共享的bridge區間,使用meltdown進行probe。優化前,需要256*256次probe。由於已經知道了bridge對應slot的數據,可以大大減少probe的次數,減少到了256次。

芯片安全依然會“融毀”百度安全披露最新Meltdown攻擊變種 科技 第5張

由此,百度安全發現的最新Meltdown變種V3z可以攻破最強防禦組合KPTI+SMAP+user-kernel isolation。攻擊者可以輕易從一個普通用戶程序偷取系統裡面的任務數據,比如內核裡面的保密數據(比如RSA密鑰)或其他敏感服務中的用戶隱私(比如password)。

目前針對這個攻擊還沒有很好的防禦措施,因為bridge區間是無法消除的(這個區間的代碼需要處理異常和中斷以及系統調用等,所以無法徹底移除)。議題最後,百度安全建議內核開發者盡量減小bridge區間的大小,並且可以引入地址隨機化,增加攻擊者發起攻擊的難度。另外一個可行的方法就是消除可以用的gadget,但是內核裡面有大量的第三方代碼(比如設備驅動等),這樣使得這個工作變得異常艱難。總之,要徹底抵禦v3z攻擊,各大操作系統(Linux,MacOS和Windows)廠商需要做大量的升級工作來盡量減緩v3z帶來的危害。

關於Black Hat

Black Hat是由傳奇極客Jeff Moss於 1997 年創辦的全球安全技術大會,每年在亞洲、歐洲、美國舉辦三場,為保證會議內容的技術先進性和客觀性,Black Hat對報告內容有嚴苛的評審機制,報告入選率不足20%。

在3月26日-29日於新加坡召開的Black Hat Asia 2019上,來自百度安全對於深度神經網絡(DNN)模型算法安全性、Rowhammer新型攻擊方法、Meltdown新變種三大創新性研究報告成功入選。此次議題的入選,也充分顯示百度安全在AI安全、系統安全、軟件安全等重要安全領域方面具有世界領先的技術儲備。在大會現場,受到了來自歐洲,澳洲、亞洲和美洲等多個研究學者的高度評價。

同時,百度安全也旨在呼喚全行業加深對安全問題的重視和投入,從底層核心做起,從架構和開發上融入安全,夯實下一代網絡安全的基石。

相關文章