圖1:運(yùn)行沙箱和不運(yùn)行沙箱的計(jì)算機(jī)示例

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

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

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

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

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

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

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

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

例如,當(dāng)Adobe的沙箱運(yùn)行在保護(hù)模式時(shí),一些威脅——如鍵盤監(jiān)視——就可能會(huì)被避免,但其他的風(fēng)險(xiǎn)——如對(duì)受限區(qū)域的訪問(wèn),如注冊(cè)表——可能會(huì)升高。

沙箱的潛在漏洞

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

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

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

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

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

分享到

liukai

相關(guān)推薦