瀏覽器沙箱模型


簡介

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

 

背景

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

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

 

原理

  “沙盒”技術與主動防御技術原理截然不同。主動防御是發現程序有可疑行為時立即攔截並終止運行。“沙盒”技術則是發現可疑行為后讓程序繼續運行,當發現的確是病毒時才會終止。“沙盒”技術的實踐運用流程是:讓疑似病毒文件的可疑行為在虛擬的“沙盒”里充分表演,“沙盒”會記下它的每一個動作;當疑似病毒充分暴露了其病毒屬性后,“沙盒”就會執行“回滾”機制:將病毒的痕跡和動作抹去,恢復系統到正常狀態。
 
  如果您還不懂,那說的再簡單一些。想象一下,在一個裝滿了平整細沙的盒子里,我們可以盡情隨意地在上面作畫、塗寫,無論畫的好壞,最后輕輕一抹,沙盒又回到了原來的平整狀態。沙盒的魅力就在於他允許你出錯,還可以給你改正的機會。
 
 
實現  

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

  Google Chrome是第一個采取多進程架構的瀏覽器。Chrome的主要進程氛圍:瀏覽器進程,渲染進程,插件進程、拓展進程。插件進程如flash、pdf等於瀏覽器進程嚴格隔離,因此不會互相影響。

  Chrome的渲染引擎由SandBox隔離,網頁代碼要與瀏覽器內核進程通信、與操作系統通信都需要通過IPC channel,在其中會進行一些安全檢查。

 

  采用SandBox技術,可以讓網頁的渲染在一個獨立的Renderer進程中進行,並且該進程是受限的,如下圖:

  受限環境只能被某些或者很少的系統調用而且不能直接訪問用戶數據。

  以下是Chrome實現的一個相對完整的SandBox:

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

 

參考資料:

  《白帽子講Web安全》 —— 吳翰清


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM