隨著每次新的安全機制的發布,研究人員和黑客都會想法設法地找到破解或者通過它的方式,此次CFG也不能例外。
微軟在Win 8.1 Update 3以及Win 10中啟用了一種抵御內存泄露攻擊的新機制,即Control Flow Guard(CFG)——控制流防護。這項技術是為了彌補此前不完美的保護機制,例如地址空間布局隨機化(ASLR)導致了堆噴射的發展,而數據執行保護(DEP)造成了漏洞利用代碼中返回導向編程(ROP)技術的發展。
百科:控制流防護(CFG)
控制流防護(CFG)作為Win 8.1+的新安全保護機制,其實并不知名。它被用于阻止針對可執行文件間接調用的惡意利用。CFG保護十分高效,同時它是一種編譯器和操作系統相結合的防護手段。
影響IE,微軟卻不修?
來自云安全公司Bromium的研究人員Jared DeMott周五將發表一個關于繞過CFG的演說,DeMott告訴記者,早在8月份的Blackhat舉辦之前,公司就將這個發現提交給了微軟公司,但是微軟決定不去修復這個問題,并認為這也不值得發放漏洞獎金。
微軟拒絕對此進行評論。據DeMott介紹,微軟認為這樣的繞過并沒有影響所有系統,并且是個很難被利用的攻擊向量:
“微軟說這僅僅影響到64位系統下的32位程序,因此并不影響整個系統。而我的回答則是,IE就是64位系統下的32位程序,如此一來便可以影響瀏覽器。”
這并不是微軟首次公開表示保護機制被繞過不是漏洞,早在2010年Verizon Business發布了一份報告,詳細列出了他們的發現“逃離微軟IE保護模式”,IE7和IE8的保護模式都可以被繞過,攻擊者能提高其用戶權限。微軟當即表示這份報告中發現的問題并不是一個漏洞,它只是繞過安全防護的一種方法。
研究人員:繞過保護機制的危害也很大
DeMott說這樣的繞過利用了微軟選擇不在CFG中部署Control Flow Integrity(CFI),即控制流完整性。
“當CFI執行時,它在一個函數指針調用以及受到返回地址之前增加了額外檢查,使得這些返回地址都是有效的。而微軟并不認為這樣的完整性是十分必要的,CFG僅僅保護了函數指針,而不檢測返回地址。”
作為一項Visual Studio技術,CFG同時也被內置于微軟的新瀏覽器Edge中。而此前CFG的一個繞過已經由Core Security的研究人員在三月份發布。
微軟在一份報告中描述了Edge瀏覽器的安全特性:
“(CFG)編譯檢測代碼會根據指針地址來進行間接跳轉,這也就使得攻擊者控制系統程序的過程變得更加的困難。”
內存崩潰攻擊:一場捕鼠游戲
DeMott坦言,這種繞過技術的關鍵在于攻擊者是否能夠搞崩潰一個返回地址,并切斷導致返回導向編程技術鏈(ROP)的一系列事件,這是很多內存崩潰攻擊的核心所在。Bromium稱之為Stack Desync,依賴于使用不同的函數調用協議。
“當你調用一個函數指針的時候,系統期望收到的是一個符合標準協議的指針地址,而程序卻返回一個任意的指針地址。如果你不保護返回地址,對應的模塊便會遭到破壞,也就意味著系統所有的操作被暴露出來了,攻擊者便有機會破壞系統堆棧中的數據,并且當系統調用指針地址的時候,返回的就不是一個有效地址了,而這便是攻擊的前奏。”
這樣的繞過技術并非不重要的,更有可能成為國家級情報機構獲取情報的重要手段。攻擊者可以由此入侵網絡,進行二次攻擊,從而進一步盜竊數據并越權操作。
DeMott總結道:
“內存崩潰攻擊一場新型的捕鼠游戲,所有這些實驗成果,盡管聽起來不是好消息,但是它推動了信息安全行業整體的發展,同時也為攻擊者實施攻擊提供了障礙。微軟公司選擇不去修復這個問題,還認為他們已經完成了力所能及的一切。除此之外,因為這樣的技術并非所有人都能夠得到的,微軟認為這個問題造成的安全風險很低。”