瀏覽器沙箱模型

風靈使發表於2018-06-02

簡介

沙箱模型技術是瀏覽器和其他應用程式中保護安全的一種元件關係設計模式,最初發明人為GreenBorder公司。2007年5月,谷歌公司收購了該公司,也將此項專利應用於chrome瀏覽器的研發中。

背景

一般而言,對於網路上的網頁中的JavaScript程式碼和外掛都是不受信的(除非是經過認證的網站),特別是一些故意設計侵入瀏覽器執行的主機程式碼更是非常危險,通過一些手段或者瀏覽器中的漏洞,這些程式碼可能獲取了主機的管理許可權,這對主機系統來說是非常危險的,所以保證網頁本身之外,還需要保證瀏覽器和瀏覽器所在的系統不存在危險。

對於網路上的網頁,瀏覽器認為他們是不安全的,因為網頁總是存在各種可能性,也許是無意的或有意的攻擊。如果有一種機制,將網頁的執行限制在一個特定的環境中,也就是一個沙箱中,使它只能訪問有限的功能。那麼,即使網頁工作的渲染引擎被攻擊,它也不能夠獲取渲染引擎工作的主機系統中的任何許可權,這一思想就是沙箱模型。

原理

“沙盒”技術與主動防禦技術原理截然不同。主動防禦是發現程式有可疑行為時立即攔截並終止執行。“沙盒”技術則是發現可疑行為後讓程式繼續執行,當發現的確是病毒時才會終止。“沙盒”技術的實踐運用流程是:讓疑似病毒檔案的可疑行為在虛擬的“沙盒”裡充分表演,“沙盒”會記下它的每一個動作;當疑似病毒充分暴露了其病毒屬性後,“沙盒”就會執行“回滾”機制:將病毒的痕跡和動作抹去,恢復系統到正常狀態。

如果您還不懂,那說的再簡單一些。想象一下,在一個裝滿了平整細沙的盒子裡,我們可以盡情隨意地在上面作畫、塗寫,無論畫的好壞,最後輕輕一抹,沙盒又回到了原來的平整狀態。沙盒的魅力就在於他允許你出錯,還可以給你改正的機會。

實現  

Windows系統中,瀏覽器結合了DEPASLRSafeSEH等作業系統提供的保護技術,用於對抗記憶體攻擊。與此同時,瀏覽器開發商還發展出多程式架構,使得安全性又有了很大的提高。(注:由於沙箱模型嚴重依賴作業系統提供的技術,而不同的作業系統提供的安全技術是不一樣的,這就意味著不同作業系統上的實現是不一致的。

Google Chrome是第一個採取多程式架構的瀏覽器。Chrome的主要程式氛圍:瀏覽器程式,渲染程式,外掛程式、擴充程式。外掛程式如flashpdf等於瀏覽器程式嚴格隔離,因此不會互相影響。

Chrome的渲染引擎由SandBox隔離,網頁程式碼要與瀏覽器核心程式通訊、與作業系統通訊都需要通過IPC channel,在其中會進行一些安全檢查。
這裡寫圖片描述
採用SandBox技術,可以讓網頁的渲染在一個獨立的Renderer程式中進行,並且該程式是受限的,如下圖:
這裡寫圖片描述
受限環境只能被某些或者很少的系統呼叫而且不能直接訪問使用者資料。

以下是Chrome實現的一個相對完整的SandBox
這裡寫圖片描述

沙箱模型工作的基本單位就是程式。每一個程式對應一個沙箱。相對於單程式瀏覽器,在發生崩潰時,多程式瀏覽器只會崩潰當前的Tab頁,而單程式瀏覽器則會崩潰整個瀏覽器程式。這對於使用者體驗式很大的提升。

相關文章