圖片來源: 

Google

Google Project Zero團隊上周發表一研究報告,指出微軟於Windows 10 Creators Update中替Microsoft Edge所部署的「任意程式碼防護」(Arbitrary Code Guard, ACG)機制並不足以防範高明的駭客突破瀏覽器的沙箱,駭客得以透過攻擊Edge中的JIT伺服器而繞過各種安全機制。

當ACG被應用在Edge的內容程序(Content Process)時,便無法於程序中分配新的可執行記憶體或變更現有的可執行記憶體,讓已取得瀏覽器內容程序某些能力的駭客更難展開程式攻擊。Edge中另有一個「代碼完整性防護」( Code Integrity Guard,CIG)機制,規定所有進入內容程序的DLL檔案都必須通過驗證,以及Windows中用來限制應用程式所執行之程式碼來源的「內容流防衛」(Content Flow Guard,CFG)機制,它們共同保障了Edge的安全性。

另一方面,現代瀏覽器仰賴了JavaScript的即時(Just-In-Time,JIT)編譯引擎以達到更好的效能,然而,JIT中的程式碼編譯卻不相容於ACG,因此,當一個客製化解決方案需要啟用Edge中的ACG時,JIT引擎會自Edge內容程序中隔離,自成JIT程序(JIT Process)。

Project Zero團隊在分析了Edge的安全機制之後指出,ACG最脆弱的部份在於JIT伺服器的實現,當中含有許多問題,儘管這類的實現還在襁褓階段,原本就可能出現問題,但更大的問題在於內容程序與JIT程序之間的安全界線並未被充份執行,JIT伺服器在記憶體毀壞與邏輯問題上必須要加強。

此外,ACG的確能夠避免執行記憶體的竄改或分配,但有鑑於ACG、CIG與CFG之間的相依性,再加上CFG的缺陷,光是ACG並無法充份防範高明駭客突破瀏覽器沙箱並執行其它攻擊。

該團隊已釋出相關的檢驗工具與概念性驗證程式,同時強調雖然此一研究是針對Microsoft Edge,但相信其它企圖部署程序外JIT的應用都會遇到類似的問題,至於微軟也已修補了報告中所揭露的部份漏洞。

今年2月Google即曾揭露ACG的安全漏洞,該漏洞允許駭客繞過ACG,將未獲簽章的惡意程式藉由Edge載入Windows。


Advertisement

更多 iThome相關內容