Skip to main content

Windows 10 推出 Microsoft Edge 來強化瀏覽器安全性

Internet Explorer 或許是今日漏洞攻擊最熱門的目標之一,光是 2014 年,Internet Explorer 就被發現及修補了 243 個漏洞。

上網 通用 bookmark

在 Microsoft 每次的定期安全更新 (Patch Tuesday) 當中都會包含一則內含數個 IE 漏洞的安全公告,這就是 Microsoft 所稱的「Internet Explorer 積存安全性更新」,因為 Internet Explorer 的零時差漏洞真是多得不勝枚舉,例如:

正因如此,Internet Explorer 的風評一向不是太好,其安全性不佳的名聲也成了它發展的障礙。所以 Microsoft 決定在 Windows 10 上推出一個「嶄新的」瀏覽器,叫「Microsoft Edge」,而安全性強化當然是其中一個重點。

Microsoft Edge 中的安全性強化

其實,Edge 並非完全砍掉重練,其 HTML 繪製引擎仍算是 Trident 引擎 (也就是 Internet Explorer 所用引擎) 的一個分支版本,現已改名為 Microsoft Edge HTML。不過,其底層移除了大量 IE 專屬的技術和相關程式碼,這些技術在 Edge 當中已不存在。此外,也導入了多項新的瀏覽器功能。

MemGC

MemGC 記憶體管理功能採用「先標記再找機會清除」的記憶體回收機制,如此可減少所謂「使用已釋放記憶體」的漏洞,也就是 UAF (Use-After-Free) 漏洞。Edge 採用 MemGC 來管理其「文件物件模型」(DOM),並支援物件的記憶體管理。

過去兩年,UAF 漏洞一直是  Internet Explorer 的一大罩門。Microsoft 每次的定期安全更新都包含多項有關 UAF 漏洞的修補。為了解決這樣的情況,Microsoft 於 2014 年夏季在 IE 當中加入了兩項防護機制:其一是 Isolated Heap (隔離式 Heap 記憶體),負責管理大多數的 DOM 物件和其相關物件。其二是所謂的 MemoryProtection (記憶體保護)。

Isolated Heap 讓駭客無法輕易地使用已釋放的物件。MemoryProtection 則可避免駭客利用堆疊 (stack) 中已釋放物件的指標來攻擊 UAF 漏洞。在其他情況下,MemoryProtection 可讓 UAF 漏洞的攻擊難度更高。

 

1MemoryProtection 流程示意圖。

這兩項防護機制大大提升了 UAF 漏洞攻擊的難度,但還是有許多方法可以避開這些機制,尤其當已釋放物件的指標並不在堆疊中時。

 

2UAF 漏洞攻擊步驟。

一般來說 UAF 漏洞的攻擊步驟如下:

  1. 配置物件 A 的 Heap 記憶體區塊。
  2. 釋放物件 A。
  3. 駭客在 Heap 區塊當中填入精心設計的資料。
  4. 物件 B 參照到物件 A。這樣一來,駭客就能透過物件 A 來存取其填入記憶體中的資料。

MemGC 的設計正是要避免這類攻擊,當一個 Heap 區塊被釋放時,MemGC 首先會偵測是否有任何指向該區塊的物件參照。若有,該區塊就不會被釋放。如此一來,UAF 漏洞攻擊就無法得逞。

 

 

3MemGC 如何防止 UAF 漏洞攻擊。

Abandonment (棄置) 類別

記憶體內容損毀是一種常見而且需要特別注意的漏洞類型。Microsoft Edge HTML 繪製引擎 (edgehtml.dll) 導入了一個新的類別叫做「Abandonment」(棄置)。

Abandonment 會偵測記憶體內容損毀的情況,並且在偵測到這類情況時發出一個「FAIL_FAST_EXCEPTION」例外錯誤。如此可避免錯誤進一步擴大,防範任何可能的漏洞攻擊。

4Abandonment 類別。

Abandonment 類別可偵測並處理的異常狀況包括:

  • Double Free (重複釋放)
  • Out Of Memory (記憶體耗盡)
  • Overflow (溢位)
  • Invalid Pointer (無效指標)
  • Invalid Arguments (無效參數)
  • Unreachable Code (無法觸及的程式碼)
  • Not Yet Implemented Function (尚未實作的函式)
  • Excepted return value (除外的回傳值)

預設採用「加強的受保護模式」沙盒環境以及 64 位元模式

Windows 在 Vista 時首次導入強制的一致性控管。Vista 的 Internet Explorer 7 率先在瀏覽器中導入一個稱為「受保護模式」(Protected Mode,簡稱 PM) 的沙盒環境。不過,受保護模式提供的防護有限。

Windows 8 再導入所謂的 App 容器,且 Windows 8 的 IE 10 在這項技術上提供了一種叫做「加強的受保護模式」(Enhanced Protected Mode,簡稱 EPM) 的沙盒環境。

但這有個問題:IE 外掛程式必須重新改寫才能支援 EPM,因為原本的外掛程式並不支援 App 容器。為了維持相容性,EPM 沙盒環境在預設情況下是關閉的。基於類似理由,在 64 位元系統下,IE 的繪圖處理程序是在 32 位元模式下執行,即使瀏覽器是在 64 位元模式下執行。

由於 Edge 是新的瀏覽器,因此不像 IE 那樣有著向下相容的沈重包袱,其 EPM 沙盒環境預設就是開啟狀態。此外,其繪圖處理程序也是以 64 位元模式執行 (只要系統可以支援)。

拋開老舊功能

正如前面所言,Edge 消除了一些 Microsoft 認為今日瀏覽器再也不需要支援的功能。其中之一就是支援舊的 IE 擴充架構,例如:瀏覽器協助程式物件 (Browser Helper Object,簡稱 BHO) 以及工具列,這是過去 IE 經常遭到攻擊的其中兩個途徑。這兩項功能在 Edge 當中皆已去除,Microsoft 已經表明 Edge 將採用類似 Google Chrome 和 Mozilla Firefox 的擴充架構,不過此架構今年稍晚才會推出。

除此之外,未來也不再支援某些程序碼語言 (scripting language)。從 IE 3 時代 (將近 20 年前) 開始導入的 ActiveX,一直是 IE 瀏覽器用來執行原生程式碼的方式之一。傳統上,Internet Explorer 的外掛程式 (如 Flash 和 Java) 都需要對應的 ActiveX 來支援。

VBScript 是另一個程序碼語言,但其他瀏覽器從未支援該語言。IE的VBScript支援一直是漏洞的來源,如:CVE-2014-6332。此外還有 VML (Vector Markup Language) 向量標記語言,這是一種用來顯示向量圖形的標記語言 (不過,現在 HTML5 也能達到同樣功能),在支援該語言的程式碼當中也存在著漏洞,如 CVE-2013-2551。

在 Microsoft 眼中,以上這些都已經是過時的技術,因此 Edge 未來將不再支援這些語言,這樣就能大幅減少 Edge 遭到攻擊的機會。但少了 ActiveX 之後的最大影響就是暫時完全失去 Java 的支援,當然也消除了潛在的威脅。

另一個 Edge 將不再支援的舊技術是 X-UA 相容檔案標頭。這是一種用來讓網站以向下相容於舊版瀏覽器的方式繪製網頁的模式,但卻也成了各種漏洞的來源,例如:

拋開上述所有功能的目標只有一個,那就是藉由去除今日使用環境不再需要的功能 (以及對應的程式碼) 來縮小潛在的攻擊面。

總而言之,與 Internet Explorer 相比,Microsoft 確實在 Edge 底層下了很大的功夫。這一點有助於提升未來 Windows 預設瀏覽器的安全性,畢竟它將來會有很多使用者。只不過,Edge 所做的某些變更,必定也將引來一些新的潛在攻擊,這一點我們將在後續的文章當中繼續討論。

原文出處: Windows 10 Sharpens Browser Security With Microsoft Edge  作者:Henry Li (威脅分析師)
想了解更多關於網路安全的秘訣和建議,只要到趨勢科技粉絲網頁 或下面的按鈕按讚

《提醒》將滑鼠游標移動到右上方的「已說讚」欄位,勾選「搶先看」選項。建議也可同時選擇接收通知新增到興趣主題清單,最新貼文就會優先顯示在動態消息頂端,讓你不會錯過任何更新。

 

推薦】防毒軟體大評比: 惡意程式防禦力 PC- cillin雲端版榮獲第一名!

【推薦】PC-cillin 雲端版 榮獲世界著名防毒評鑑機構高度評比

 

540x90