專(zhuān)家稱(chēng):沙箱技術(shù)改善安全之余 仍有不足
Adobe系統(tǒng)公司和其他軟件廠(chǎng)商已經(jīng)將沙箱(sandboxing)技術(shù)作為其應(yīng)用程序安全策略的重要組成部分,沙箱技術(shù)能夠?qū)⑻囟ǖ倪M(jìn)程與宿主系統(tǒng)的內(nèi)存隔離開(kāi)。采用沙箱技術(shù)的目標(biāo)是阻止攻擊者接觸關(guān)鍵的系統(tǒng)文件,防止攻擊者竊取敏感數(shù)據(jù)。但最近一位安全研究人員指出,部署沙箱技術(shù)的方式存在固有缺陷,精明的黑客能夠繞過(guò)沙箱進(jìn)入保存在用戶(hù)電腦上的Adobe Flash文件。位于弗吉尼亞Fairfax的 Invincea公司創(chuàng)始人兼首席科學(xué)家、網(wǎng)絡(luò)安全專(zhuān)家Anup Ghosh說(shuō),沙箱技術(shù)開(kāi)發(fā)于20世紀(jì)90年代,直到現(xiàn)在才成為主流的應(yīng)用。除了Adobe,智能手機(jī)平臺(tái)制造商使用沙箱技術(shù)隔離應(yīng)用程序與設(shè)備上的不同功能,瀏覽器供應(yīng)商采用沙箱技術(shù)隔離瀏覽器的渲染引擎。在本次采訪(fǎng)中,Ghosh介紹了沙箱技術(shù)的基本知識(shí),解釋了為什么使用沙箱是一個(gè)正確的方向,并指出了目前此種技術(shù)的實(shí)現(xiàn)具有的一些弱點(diǎn)。
問(wèn):什么是沙箱?為提高安全性,軟件供應(yīng)商們以這樣或那樣的方式使用沙箱多長(zhǎng)時(shí)間了?
Anup Ghosh:早在20世紀(jì)90年代后期,美國(guó)國(guó)防高級(jí)研究計(jì)劃局(DARPA)資助了一些項(xiàng)目,發(fā)展了沙箱技術(shù)。沙箱技術(shù)旨在阻止不受信任的代碼執(zhí)行惡意操作。與直接運(yùn)行程序代碼相比,沙箱最重要的屬性是能夠允許不完美的代碼進(jìn)行運(yùn)行和被滲透,同時(shí)不會(huì)對(duì)宿主系統(tǒng)造成損害。這就是沙箱的作用。隔離軟件與操作系統(tǒng)是很重要的概念,因?yàn)閷?duì)于不在沙箱中運(yùn)行的軟件來(lái)說(shuō),一個(gè)缺陷就可能導(dǎo)致桌面系統(tǒng)的全面崩潰。如今我們?cè)谑袌?chǎng)上見(jiàn)到的沙箱都是嵌入到主流的商業(yè)產(chǎn)品中的。谷歌瀏覽器內(nèi)為其渲染引擎部署了一個(gè)沙箱。Adobe Reader X內(nèi)部也有一個(gè)沙箱,當(dāng)你打開(kāi)一個(gè)PDF文件時(shí),Adobe Reader X使用的渲染引擎就會(huì)在沙箱中運(yùn)行。
問(wèn):那我們可以認(rèn)為,軟件制造商正在試著開(kāi)發(fā)獨(dú)立運(yùn)行、不依賴(lài)于操作系統(tǒng)和服務(wù)器的應(yīng)用程序,對(duì)嗎?
Ghosh:這確實(shí)是目前某些沙箱系統(tǒng)的工作,但實(shí)際上這是虛擬化技術(shù)應(yīng)該做的,而非沙箱技術(shù)。Java虛擬機(jī)(JVM)就是這樣一個(gè)例子。例如,利用沙箱,Google可以發(fā)現(xiàn)你將要訪(fǎng)問(wèn)的網(wǎng)頁(yè)(含有JavaScript內(nèi)容)存在的惡意內(nèi)容。Google知道在其JavaScript引擎中會(huì)存在缺陷,而且他們不可能全部發(fā)現(xiàn)這些缺陷,也不可能提前發(fā)現(xiàn)。使用沙箱背后的想法在于,即使JavaScript引擎中存在缺陷,即使有黑客程序能夠利用這個(gè)缺陷,那么鑒于JavaScript引擎運(yùn)行于谷歌瀏覽器的沙箱之內(nèi),黑客行為也不可能成功。簡(jiǎn)單地說(shuō),他們的想法就是將惡意行為包裹在沙箱之內(nèi)。這是朝著正確方向邁進(jìn)的一步,程序員可以不用再苛求完美的代碼——我們知道他們也寫(xiě)不出完美的代碼。但是,應(yīng)用程序級(jí)的沙箱還遠(yuǎn)遠(yuǎn)不夠。沙箱的基本功能設(shè)計(jì)涉及截?cái)嗨斜徽J(rèn)為有可能被黑客利用的系統(tǒng)調(diào)用。舉個(gè)例子,對(duì)Adobe Flash插件的分析表明,該插件會(huì)將所有被Adobe Flash調(diào)用的通信協(xié)議列入黑名單,已知的是他們至少忘記列入某一個(gè)協(xié)議了,誰(shuí)知道未知的還有多少。所以從根本上來(lái)說(shuō),試圖列出所有可能被黑客利用的系統(tǒng)調(diào)用并嘗試截?cái)嗨鼈兊姆椒ㄊ遣粔螋敯簦╮obust)的。對(duì)于隔離用戶(hù)可能從桌面運(yùn)行的未授信代碼,我們做得還遠(yuǎn)遠(yuǎn)不夠。
問(wèn):當(dāng)谷歌瀏覽器推出的時(shí)候它就具有沙箱功能嗎?他們?cè)谏诚渲羞\(yùn)行第三方組件?
Ghosh:實(shí)際上,他們?cè)谏诚渲羞\(yùn)行他們自己的渲染器。至少在推出瀏覽器的時(shí)候,他們沒(méi)有支持在沙箱中運(yùn)行第三方組件。后來(lái),Adobe公司為谷歌瀏覽器的Flash插件加入了沙箱。
問(wèn):我們并沒(méi)有在許多應(yīng)用程序中看到有沙箱。對(duì)程序員來(lái)說(shuō)創(chuàng)建沙箱功能真的很難嗎?
Ghosh:創(chuàng)建沙箱功能確實(shí)需要重新設(shè)計(jì)和重寫(xiě)應(yīng)用程序。如果你分析一下Adobe Reader X,你會(huì)發(fā)現(xiàn)它是與Adobe Reader 9.x不同的全新的代碼庫(kù)。這就是建立沙箱不那么容易的部分原因。因?yàn)槟壳叭藗儾捎玫纳诚鋵?shí)現(xiàn)辦法,要求程序員思考出所有可能被攻擊者用來(lái)攻擊系統(tǒng)的代碼運(yùn)行方式。他們建立了一個(gè)模型,顯示某段代碼可能會(huì)調(diào)用文件系統(tǒng),而我們可能會(huì)要求允許這些文件讀取操作,但不要讓該段代碼獲得任何系統(tǒng)權(quán)限。于是,程序員們不得不編寫(xiě)代碼,繞過(guò)系統(tǒng)權(quán)限。Reader X的沙箱有一個(gè)明顯之處,開(kāi)發(fā)它的程序員決定不試圖阻止程序?qū)ξ募淖x取,而是阻止機(jī)器將這些文件發(fā)送給某些遠(yuǎn)端服務(wù)器。
問(wèn):當(dāng)談?wù)揂ndroid、Apple甚至是Windows的智能手機(jī)時(shí),我們不時(shí)會(huì)聽(tīng)到沙箱。這里所說(shuō)的沙箱與我們前面說(shuō)的是同一個(gè)概念嗎?
Ghosh:是的。Android為運(yùn)行應(yīng)用程序部署了一個(gè)名為Dalvik的JVM。當(dāng)你運(yùn)行Andorid應(yīng)用的時(shí)候,Java虛擬機(jī)就如同沙箱,而且Java虛擬機(jī)很優(yōu)秀,它已經(jīng)使用了很長(zhǎng)一段時(shí)間。問(wèn)題是許多應(yīng)用要求沙箱之外的權(quán)限。作為用戶(hù),當(dāng)你下載這樣一個(gè)應(yīng)用時(shí),你將被要求給予該應(yīng)用程序打破沙箱的權(quán)限。當(dāng)然,作為用戶(hù),你的回答幾乎總會(huì)是“是”,因?yàn)槟阆胧褂迷搼?yīng)用的全部功能。你需要給它GPS、攝像頭、麥克風(fēng)或者電話(huà)的權(quán)限。所有這些操作基本上打破了整個(gè)沙箱。所以,讓用戶(hù)為應(yīng)用程序授權(quán)這樣的模型并不能保護(hù)用戶(hù),因?yàn)榇蠖鄶?shù)時(shí)候用戶(hù)并沒(méi)受到做出良好安全決策的必要訓(xùn)練。
問(wèn):Adobe正在使用的是協(xié)議處理黑名單(protocol handler blacklists),安全研究員Billy Rios指出這是一個(gè)弱點(diǎn)。什么是協(xié)議處理黑名單?還有其他方法可以屏蔽特定的協(xié)議嗎?
Ghosh:他們?yōu)橛脩?hù)從磁盤(pán)加載的所有Flash文件設(shè)定了一個(gè)要求。要求是當(dāng)Flash文件運(yùn)行時(shí),該文件不能夠進(jìn)行任何出站通信。他們擔(dān)心的風(fēng)險(xiǎn)是,F(xiàn)lash文件有可能隱藏著惡意軟件,能在用戶(hù)毫無(wú)察覺(jué)的情況下讀取敏感文件,然后通過(guò)網(wǎng)絡(luò)發(fā)送出去。這是安全性上的要求。他們實(shí)現(xiàn)了一個(gè)沙箱來(lái)防止這種數(shù)據(jù)外泄的發(fā)生。實(shí)現(xiàn)的方法是舉出所有你能夠向外發(fā)送數(shù)據(jù)的方式。他們列舉了不同的網(wǎng)絡(luò)協(xié)議。我們并不知道他們都列出了哪些協(xié)議,但我們知道他們不可能列出所有的。Billy Rios知道這種方法不是完備的,所以,他只需要找到一種不在黑名單上的協(xié)議即可(破解Adobe的沙箱)。他需要的只是一種泄漏桌面上所有數(shù)據(jù)的協(xié)議。