沙盒 (電腦安全)

为正在执行的程序提供隔离环境的一种安全机制

沙盒(英語:sandbox,又譯為沙箱)是一種安全機制,為執行中的程式提供隔離環境。通常是作為一些來源不可信、具破壞力或無法判定程式意圖的程式提供實驗之用[1]

沙盒通常嚴格控制其中的程式所能訪問的資源,比如,沙盒可以提供用後即回收的磁碟及記憶體空間。在沙盒中,網絡訪問、對真實系統的訪問、對輸入裝置的讀取通常被禁止或是嚴格限制。從這個角度來說,沙盒屬於虛擬化的一種。

沙盒中的所有改動對作業系統不會造成任何損失。通常,這種技術被電腦技術人員廣泛用於測試可能帶毒的程式或是其他的惡意代碼[2]

現在的整合式防火牆常含有雲端沙盒,當本地靜態分析無法辦別時,就會去雲端比對hash值,檢視是否有相關情資,若為未發現過的可疑程式,則送入沙盒測試,並記錄其行為模式。

具體實現 編輯

沙盒將軟件執行於一個受限的系統環境中,控制程式可使用的資源(如檔案描述子、記憶體、磁碟空間等)[3]

以下是一些沙盒的具體實現:

  • 軟件監獄(Jail):限制網絡訪問、受限的檔案系統命名空間。軟件監獄最常用於虛擬主機[4]
  • 基於規則的執行:通過系統安全機制,按照一系列預設規則給用戶及程式分配一定的訪問權限,完全控制程式的啟動、代碼注入及網絡訪問[5]。也可控制程式對於檔案、登錄檔的訪問。在這樣的環境中,病毒木馬感染系統的幾率將會減小。Linux中,安全增強式LinuxAppArmor正使用了這種策略。
  • 虛擬機器模擬一個完整的宿主系統,可以如執行於真實硬件一般執行虛擬的作業系統(客戶系統)。客戶系統只能通過模擬器訪問宿主的資源,因此可算作一種沙盒。
  • 主機本地沙盒:安全研究人員十分依賴沙盒技術來分析惡意軟件的行為。通過建立一個模擬真實桌面的環境,研究人員就能夠觀察惡意軟件是如何感染一台主機的。若干惡意軟件分析服務使用了沙盒技術[6]
  • 線上判題系統:用於編程競賽中的程式測試。
  • 安全計算模式(seccomp)英語seccomp:Linux內核內建的一個沙盒。啟用後,seccomp僅允許write()read()exit()sigreturn()這幾個系統呼叫。

參見 編輯

參考來源 編輯

  1. ^ Ian Goldberg, David Wagner, Randi Thomas, and Eric Brewer. A Secure Environment for Untrusted Helper Applications (Confining the Wily Hacker) (PDF). Proceedings of the Sixth USENIX UNIX Security Symposium. 1996 [25 October 2011]. (原始內容存檔 (PDF)於2010-06-15). 
  2. ^ Geier, Eric. How to Keep Your PC Safe With Sandboxing. TechHive. 2012-01-16 [2014-07-03]. (原始內容存檔於2014-07-12). 
  3. ^ Sandboxing Applications (PDF). 2001 [7 May 2013]. (原始內容存檔 (PDF)於2015-09-23). 
  4. ^ Auto-Sandboxing secure system. [2015-01-30]. (原始內容存檔於2015-02-12). 
  5. ^ Computer System Security and Access Controls. 1991 [17 May 2013]. (原始內容存檔於2013年5月28日). 
  6. ^ Native Client Sandbox – Untrusted x86 Native Code (PDF). [2015-01-03]. (原始內容存檔 (PDF)於2015-02-12).