圖1:運行沙箱和不運行沙箱的計算機示例

沙箱最初是為開發(fā)和測試程序而設(shè)計,現(xiàn)在已經(jīng)演變?yōu)橐粋€安全工具,能夠?qū)⒒顒拥某绦蚧蜻M程與宿主系統(tǒng)或本地桌面分隔開。因此,安全沙箱已成為保護系統(tǒng)安全的有效方法,能防止未認證或不受信的程序在網(wǎng)絡(luò)上肆意破壞。

普通的計算機用戶每天都可能會遇到多個沙箱。Google公司的Chrome瀏覽器使用沙箱隔離JavaScript的執(zhí)行、HTML的解析以及插件的運行。這是通過讓每個標簽都獨立運行在自己的沙箱中來完成的,從而使得Web應(yīng)用程序與用戶的機器隔離開。然而,在2011年二月初,Google修補了Chrome中的九個錯誤,包括一個沙箱逃逸漏洞。雖然其他漏洞的細節(jié)都公布了,但是Google卻沒有完全透露關(guān)于沙箱漏洞的全部信息。信息的不透明使人們對該款瀏覽器的安全性產(chǎn)生懷疑。如果這個漏洞允許程序突破沙箱進入到宿主系統(tǒng),那么宿主系統(tǒng)就可能被安裝惡意軟件,敏感數(shù)據(jù)就存在危險。

流行的Web服務(wù)貝寶(PayPal)也利用沙箱技術(shù)為商戶提供測試環(huán)境。該沙箱能在實際接受顧客的網(wǎng)絡(luò)交易服務(wù)之前為用戶提供產(chǎn)生和管理模擬賬戶的機會。但這樣仍然存在問題——特別是跨站腳本(cross-site-scripting,XSS)漏洞。

Adobe系統(tǒng)公司在其最近發(fā)行的Flash版本中加入了沙箱安全功能,防止從本地文件系統(tǒng)加載的Flash文件向遠端發(fā)送數(shù)據(jù)。盡管惡意黑客們已經(jīng)盡力打破了Adobe的沙箱,但是沙箱功能還是是一種潛在有用的威脅防御策略。

計算機和網(wǎng)絡(luò)取證偵查員也能從沙箱技術(shù)中獲益。通過讓觀察員檢查惡意執(zhí)行程序在“自然”環(huán)境中解壓和執(zhí)行的情況,沙箱能限制可能的外部因素——如其他的程序或者服務(wù)——影響證據(jù)。理論上,這聽起來很驚人,但實際上,沙箱可能會帶來更多的漏洞。

沙箱:技術(shù)和用戶實例

諸如Adobe和PayPal之類的公司引入沙箱程序,這會使他們的軟件更安全嗎?還是只是帶來了一個潛在的受攻擊層?在IT安全領(lǐng)域,深度防御(defense-in-depth)的目標在于分層次使用不同的安全防護方法,努力提高整體的安全現(xiàn)狀。然而,在這種情況下,增加一個應(yīng)用層意味著加入了另一個可滲透的層,可能導致惡意軟件和黑客穿透沙箱并進入宿主計算機系統(tǒng)。

在部署沙箱之前安全管理員應(yīng)問自己如下四個問題:

例如,當Adobe的沙箱運行在保護模式時,一些威脅——如鍵盤監(jiān)視——就可能會被避免,但其他的風險——如對受限區(qū)域的訪問,如注冊表——可能會升高。

沙箱的潛在漏洞

沙箱可主要分成三個部分:核心語音解釋器、標準函數(shù)庫以及不受信任的應(yīng)用程序代碼。在這三部分中,標準函數(shù)庫包含了執(zhí)行路徑——如網(wǎng)絡(luò)通信和密碼系統(tǒng)的路徑——是最容易受到攻擊的部分。這是使用Java或C#編寫這些庫直接導致的,使得標準庫繼承了這些語言的固有缺陷,如堆棧溢出漏洞。實際上,C#將部分代碼標記為不安全的不僅會弱化系統(tǒng)的安全性,還會輕易允許對主機系統(tǒng)本地庫的訪問。

許多人會把沙箱和虛擬機(VM)混淆,這可能是因為許多公司將虛擬機當做沙箱來使用。在典型的家用計算機上,這么做可能是適宜的,可以增加Web瀏覽時的安全性;但不建議在保存有敏感數(shù)據(jù)的系統(tǒng)上測試可疑程序。

由于在個人電腦上使用越來越廣泛,虛擬機常被用于產(chǎn)生蜜罐或被當做常用的網(wǎng)絡(luò)安全手段,黑帽黑客們正在編寫新的惡意代碼。這種惡意代碼可通過尋找虛擬機在系統(tǒng)內(nèi)存、正在運行的進程、注冊表和文件系統(tǒng)中留下的典型特征來檢測是否有虛擬機正在運行。它甚至會尋找虛擬機硬件和處理指令。因此,使用虛擬機作為沙箱(或其他安全用途)要冒極大的風險,只能嚇走低級的——或機會主義的——黑客。這些黑客往往不具備相應(yīng)的能力或工具來檢測是否有虛擬機在運行。

最后,安全沙箱程序不是萬能的。沙箱的設(shè)計目的在于分隔代碼和主機系統(tǒng);然而,如上所述,沙箱會在無意中帶來各種安全漏洞和問題。因此,正如對待其他安全措施那樣,在決定使用何種安全功能時,風險評估和風險減低是至關(guān)重要的。沙箱技術(shù)的發(fā)展不僅能尋找到新的應(yīng)用場景和提供多種多樣的好處,也可能導致自滿和系統(tǒng)已經(jīng)完全安全的錯覺。盡管深度防御是個好的策略,但同時我們需要謹記,每增加一個應(yīng)用層,可利用的漏洞也會增加。

各種新式的安全措施都有意想不到的后果,沙箱也一樣。因此,單獨依靠沙箱來保證程序的完整性將是一個嚴重的錯誤。正確的應(yīng)用程序安全措施要求多層次的安全防護,這些措施一起工作才能提供堅固的、多方面的應(yīng)用程序防御體系。正確地使用沙箱能帶來好處,但是要意識到危險的存在,否則,那些有效的應(yīng)用程序,可能會像昔日童年的沙礫那樣,從你的指尖滑落到地。

分享到

liukai

相關(guān)推薦