複製鏈接
請複製以下鏈接發送給好友

Sandbox

(用於安全的運行程序的機制)

鎖定
Sandbox(沙箱)是指一種技術,在這種技術中,軟件運行在操作系統受限制的環境中。由於該軟件在受限制的環境中運行,即使一個闖入該軟件的入侵者也不能無限制訪問操作系統提供設施;獲得該軟件控制權的黑客造成的損失也是有限的。此外,如果攻擊者要獲得對操作系統的完全控制,他們就不得不攻克沙箱限制。Sandbox也提供深度防禦,許多PaaS系統都提供了一個實時運行環境,它的核心就是一個沙箱應用程序,如Azu re和Google App Engine。 [1] 
中文名
沙箱
外文名
Sandbox

Sandbox簡介

在計算機安全領域,沙箱是一種用於安全的運行程序的機制。它常常用來執行那些非可信的程序。非可信程序中的惡意代碼對系統的影響將會被限制在沙箱內而不會影響到系統的其它部分。沙箱技術按照一定的安全策略,通過嚴格限制非可信程序對系統資源的使用來實現隔離。沙箱技術在實際應用中已經有多種實現方案。例如Janus,Chakravyuha,BlueBox,Cerb等系統採用攔截系統調用的方式實現。通過攔截系統調用來限制沙箱中的程序對某些重要資源的使用。這些資源是指那些對系統安全起關鍵作用的資源,一旦被非法使用,便會對系統安全造成嚴重影響。Strata系統通過一種稱之為軟件動態轉換(Software Dynamic Translation)的技術實現沙箱。與攔截系統調用一樣,軟件動態轉換的目的也是通過動態轉換來完成對沙箱中程序的資源使用進行限制。 [2] 
沙箱技術按照安全策略來限制程序對系統資源的使用,進而防止其對系統進行破壞,其有效性依賴於所使用的安全策略的有效性。由於沙箱技術是通過限制非可信程序對某些資源的訪問來防止非可信程序對系統進行破壞的,因此,如果安全策略過於嚴格,對非可信進程的行為限制過多,則會影響到非可信進程的運行。如果安全策略過於簡單,則又無法有效地防範攻擊。 [2] 

Sandbox維護沙箱安全

以Java為例。從安全角度考慮,小應用程序對系統的利用是有範圍限制的,一般通俗地稱之為“沙箱”。意譯過來是指小應用程序不能做某些事情,因為Java不允許它們做。以下是Java小應用程序不能做到的: [3] 
1、除了它們的出處外,建立與其它主機的連接(使它們不能連接其它系統獲取或發送未授權代碼)。 [3] 
2、閲讀所有系統特性(不允許它們進入可能產生危險或受到限制的區域)。 [3] 
3、定義本身方式或調用庫(使它們在運行時間不能更改自身代碼)。 [3] 
4、在運行它們的主機卜讀寫文件(使它們不能傳遞病毒、特洛伊木馬和間諜程序)。 [3] 
這些限制是防止小應用程序危害系統安全和數據的完整性。這種設計最初是為了防止代碼破譯者為達到自己罪惡的目的,使用Java基本功能將代碼從一台計算機轉移到另一台計算機。 [3] 

Sandbox示例內容

通過在受限操作系統環境中執行軟件來實現沙箱,從而控制進程可以使用的資源(例如,文件描述符,存儲器,文件系統空間等)。 [4] 
Sandbox實現的示例包括以下內容: [4] 
  • GoogleSandboxed API 。 [4] 
  • 監獄:網絡訪問限制和受限制的文件系統命名空間。Jails最常用於虛擬主機 [4] 
  • 基於規則的執行使用户能夠完全控制哪些進程被啓動,生成(由其他應用程序生成),或者允許將代碼注入其他應用程序並通過讓系統為用户或程序分配訪問級別來訪問網絡。一套堅定的規則。它還可以控制文件/註冊表安全性(哪些程序可以讀寫文件系統/註冊表)。在這樣的環境中,病毒和特洛伊木馬感染計算機的機會較少。SELinuxApparmor安全框架是Linux的兩個這樣的實現。 [4] 
  • Native Client是一個Sandbox,用於高效安全地在瀏覽器中運行已編譯的C和C ++代碼,與用户的操作系統無關。 [4] 
  • 能力系統可以被認為是一種細粒度的沙盒機制,其中程序在生成時被賦予不透明的令牌,並且能夠根據它們持有的令牌來執行特定的事物。基於功能的實現可以在從內核到用户空間的各個級別上工作。基於功能的用户級Sandbox的示例涉及Web瀏覽器中的HTML呈現。 [4] 
  • 安全計算模式(seccomp)是一個內置在Linux內核中的Sandbox。在嚴格模式下激活時,seccomp僅允許write(),read(),exit()和sigreturn()系統調用。 [4] 
  • HTML5具有用於iframe的“Sandbox”屬性。 [4] 
  • Java虛擬機包括一個Sandbox,用於限制不受信任代碼的操作,例如Java applet。 [4] 
  • .NET公共語言運行時提供代碼訪問安全性以強制限制不受信任的代碼。 [4] 
  • 軟件故障隔離(SFI),允許通過將所有存儲,讀取和跳轉匯編指令打包到隔離的內存段來運行不受信任的本機代碼。 [4] 
  • Windows Vista和更高版本包括運行的“低”模式進程,稱為“用户帳户控制”(UAC),它只允許寫入特定目錄和註冊表項。 [4] 
Sandbox的一些用例包括以下內容: [4] 
  • 在線評判系統,用於在編程競賽中測試程序。 [4] 
  • 新一代的pastebins允許用户在pastebin的服務器上執行粘貼的代碼片段。 [4] 
參考資料
  • 1.    (印度)Dinkar Sitaram,Geeth Manjunath著;程國建,楊曉靜,韓家新等譯.遷移到雲端 在雲計算的新世界中開發應用:國防工業出版社,2015.06:第277頁
  • 2.    馬建峯,沈玉龍編著.信息安全:西安電子科技大學出版社,2013.02:第156頁
  • 3.    紀紅兵等著.經典網頁設計:廣東旅遊出版社,1999年11月第1版:第99頁
  • 4.    R.馬里亞尼, M.博加蒂, S.洛倫茲尼. 在包括多個處理器的用於具有功能安全性的應用的電子系統中運行程序的方法、對應系統和計算機程序產品:.