国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于多安全機制的 Linux 應(yīng)用沙箱的設(shè)計與實現(xiàn)

2014-11-23 06:39涂碧波馮圣中
集成技術(shù) 2014年4期
關(guān)鍵詞:沙箱權(quán)能進(jìn)程

李 晨 涂碧波 孟 丹 馮圣中

1(中國科學(xué)院深圳先進(jìn)技術(shù)研究院 深圳 518055)

2(中國科學(xué)院信息工程研究所 北京 100093)

1 引 言

眾所周知,大多數(shù)病毒會利用應(yīng)用程序這條路徑進(jìn)行傳播。用戶在使用計算機時,對一些應(yīng)用程序的非法操作往往會導(dǎo)致嚴(yán)重的安全問題,給用戶帶來極大的困擾。例如用戶使用的應(yīng)用程序需要訪問網(wǎng)絡(luò)時,有可能會從不安全的站點下載惡意程序,執(zhí)行一些非法操作,如盜取用戶的敏感信息,干擾用戶的日常工作、數(shù)據(jù)安全和個人隱私等[1]。一種有效的保護(hù)計算機安全的方法就是為應(yīng)用程序提供一個隔離的運行空間,而這可以由沙箱來提供[2-4]。本文基于多種資源隔離和安全機制設(shè)計并實現(xiàn)了一種應(yīng)用在 Linux 操作系統(tǒng)上的沙箱。相對于現(xiàn)有的沙箱技術(shù)而言,該沙箱簡化了實現(xiàn)機制,且提供了更高的安全性和隔離性。

2 沙箱的設(shè)計與實現(xiàn)

2.1 現(xiàn)有沙箱技術(shù)分析

現(xiàn)有的沙箱技術(shù)有很多種,如 FreeBSD Jails是 FreeBSD 平臺上一種基于容器的虛擬化技術(shù),它擴展了傳統(tǒng)的 Chroot 機制,為進(jìn)程提供了一個具有獨立的文件系統(tǒng)、進(jìn)程和網(wǎng)絡(luò)空間的環(huán)境。當(dāng)進(jìn)程調(diào)用了 jail 系統(tǒng)調(diào)用后,它就被限定在這個 jail 內(nèi),且不能脫離。該機制的缺點是不能夠隔離物理資源,且不具備安全機制。Seccomp 是Linux-2.6.23 版本之后支持的一種沙箱機制,該機制為進(jìn)程提供了一種“安全”模式。在這種模式下,只允許沙箱內(nèi)的進(jìn)程使用指定的 4 種系統(tǒng)調(diào)用:exit()、sigreturn()、read()和 write()[5],否則進(jìn)程將會被終止,但該機制的實現(xiàn)需要修改內(nèi)核及應(yīng)用程序,且只支持“純計算型”代碼的應(yīng)用程序,安全機制單一。BufferZone 是通過在用戶電腦上指定的目錄中創(chuàng)建一個虛擬區(qū)域,當(dāng)該沙箱在運行程序時,程序下載的所有文件都將存儲在這個虛擬區(qū)中,進(jìn)而使它們與操作系統(tǒng)的其他部分隔離開來,因此惡意軟件只能對虛擬區(qū)造成影響。但這種機制的開銷大,且虛擬機本身存在很多安全問題。DefenseWall 將運行程序分為兩類:系統(tǒng)自帶的文件程序作為可信任程序,而第三方軟件程序作為非信任程序。它還可隨時對非信任程序進(jìn)行跟蹤監(jiān)聽。雖然該機制內(nèi)置一些策略和規(guī)則來限制不可信程序的運行,但它不具備網(wǎng)絡(luò)過濾的功能,且不能實現(xiàn)資源隔離。SELinux 是一種強制訪問控制機制,它首先給系統(tǒng)的主體和客體打上不同的安全標(biāo)記,然后通過定制訪問控制規(guī)則來限制主體對客體的訪問,但這種機制的配置比較復(fù)雜,易用性較差。表 1 為一部分典型的沙箱的特性對比。

綜上所述,現(xiàn)有的沙箱中有一部分需要修改內(nèi)核和應(yīng)用程序本身,易用性差,且使用的隔離和安全策略有限,不能夠很好地防范各種惡意攻擊[6,7]。

本文設(shè)計的沙箱可以為不可信應(yīng)用程序提供一個系統(tǒng)資源、物理資源和文件系統(tǒng)隔離的運行環(huán)境,同時還添加了強制訪問控制策略、權(quán)能限制和內(nèi)存保護(hù)功能,在防范應(yīng)用程序漏洞攻擊的同時還可以防止部分系統(tǒng)漏洞攻擊,而且無需修改內(nèi)核及應(yīng)用程序本身。與已有的沙箱對比,本文設(shè)計的沙箱提高了系統(tǒng)的隔離性和安全性,且對性能造成的影響在可控的范圍之內(nèi)。

2.2 沙箱的設(shè)計目標(biāo)

為了保證沙箱的隔離性和安全性,本文為沙箱提出了以下兩個設(shè)計目標(biāo):

(1)實現(xiàn)資源隔離

① 沙箱擁有自己獨立的文件系統(tǒng);

② 實現(xiàn)沙箱間及沙箱與主機間的系統(tǒng)資源和物理資源隔離。

(2)實現(xiàn)多種安全機制

① 使用強制訪問控制策略實現(xiàn)主機的關(guān)鍵文件和目錄不受沙箱影響;

表1 典型沙箱技術(shù)對比Table 1 . Typical sandbox technology contrast

② 限制沙箱可以使用的權(quán)能(Capabilities);

③ 為沙箱添加內(nèi)存保護(hù)安全策略。

2.3 沙箱的實現(xiàn)

2.3.1 資源隔離

首先,利用命名空間(Namespace)機制實現(xiàn)沙箱內(nèi)系統(tǒng)資源的隔離。所有的系統(tǒng)資源都默認(rèn)為全局管理,Linux 系統(tǒng)提供了 PID、IPC 和Internet 等多個 Namespace,而且每個 Namespace的資源相對于其他的 Namespace 均為透明。我們?yōu)槊總€沙箱建立一個獨立的 Namespace,這樣網(wǎng)絡(luò)、PID 和 IPC 等資源就屬于特定的Namespace。這種機制的實現(xiàn)依靠在啟動沙箱進(jìn)程后調(diào)用 clone()系統(tǒng)調(diào)用時,指定相應(yīng)的flags,flags 標(biāo)識的是我們要為沙箱建立的新Namespace 類型。我們將 PID Namespace 和 IPC Namespace 一起使用可以使沙箱中的進(jìn)程彼此不可見、不可通信,實現(xiàn)了進(jìn)程間的隔離;掛載Namespace 和網(wǎng)絡(luò) Namespace 一起使用可以為沙箱虛擬出一個具有獨立主機名和網(wǎng)絡(luò)空間的環(huán)境,對于應(yīng)用程序而言,沙箱就像網(wǎng)絡(luò)上一臺獨立的主機一樣。

其次,隔離沙箱可以使用的物理資源。沙箱利用控制組(Control Groups,Cgroups)子系統(tǒng)來實現(xiàn)這一功能。Cgroups 是一種可以隔離、限制和記錄進(jìn)程組所使用的物理資源(如 CPU、memory 和 IO 等)的機制。例如,內(nèi)存子系統(tǒng)用來限制進(jìn)程組可以使用的內(nèi)存上限,一旦進(jìn)程組使用的內(nèi)存達(dá)到了限額以后還繼續(xù)申請內(nèi)存,系統(tǒng)就會終止該進(jìn)程并報錯。我們將沙箱中的進(jìn)程作為一個進(jìn)程組來進(jìn)行管理,這樣就可以避免沙箱中的惡意程序想要霸占某些物理資源的行為。

此外,我們還為沙箱定制了一個完全獨立的文件系統(tǒng),如圖 1 所示。

圖1 沙箱的獨立文件系統(tǒng)Fig. 1. Rootfs of Sandbox

該文件系統(tǒng)相當(dāng)于主機文件系統(tǒng)的一個簡化副本,其中包含了應(yīng)用程序本身以及它執(zhí)行時需要的配置文件、動態(tài)鏈接庫和特殊設(shè)備等,沙箱中的進(jìn)程只能在這個文件系統(tǒng)中進(jìn)行操作。在沙箱的文件系統(tǒng)中,主機系統(tǒng)中默認(rèn)禁止訪問的敏感目錄文件只是一個拷貝,所以無論惡意應(yīng)用程序在沙箱中做任何操作都不會對主機產(chǎn)生任何影響。該機制的實現(xiàn)利用了系統(tǒng)調(diào)用函數(shù) chdir(),在啟動沙箱時調(diào)用該函數(shù),即可更改當(dāng)前進(jìn)程的工作目錄。

2.3.2 安全策略

除了以上提供的資源隔離策略,我們還為沙箱引入了一些安全策略。首先是強制訪問控制機制,強訪機制就是將系統(tǒng)中的進(jìn)程、文件等對象分為主體和客體兩種,并給主、客體添加相應(yīng)的標(biāo)簽,定制特定的強制訪問控制規(guī)則來限制主體對客體的操作[8]。我們使用簡單的文本標(biāo)簽(如host)標(biāo)記主機上的關(guān)鍵文件和目錄,給沙箱的獨立文件系統(tǒng)以及沙箱進(jìn)程添加沙箱標(biāo)簽(可以用沙箱名作為標(biāo)簽,如 vs 1、vs 2),設(shè)置沙箱使用的訪問控制規(guī)則如表 2 所示。其中,第一列為主體標(biāo)簽,第二列為客體標(biāo)簽,第三列為主體可以對客體執(zhí)行的操作,沙箱對標(biāo)有 host 標(biāo)簽的對象不能做任何操作,沙箱互相之間也不能做任何操作,這樣就可以保證沙箱本身及沙箱中的惡意程序不會對主機的關(guān)鍵文件和目錄產(chǎn)生影響。

表2 沙箱的強制訪問控制規(guī)則Table 2 . MAC rules of sandboc

其次,對沙箱中的進(jìn)程進(jìn)行權(quán)能限制。Linux Kernel 自 2.1 版開始就有了權(quán)能的概念,Linux 支持權(quán)能的主要目的是細(xì)化根用戶的特權(quán),利用這一機制,我們可以根據(jù)實際的安全需要來控制沙箱擁有的權(quán)能范圍,從而防止攻擊者利用惡意應(yīng)用程序趁機獲取控制系統(tǒng)的特權(quán),對系統(tǒng)安全造成威脅。該機制的實現(xiàn)是通過在沙箱中啟動進(jìn)程時,先獲取進(jìn)程擁有的權(quán)能,然后使用 cap_clear_flag()函數(shù)來清除禁止該沙箱使用的權(quán)能。

此外,為沙箱添加了地址隨機化、不可執(zhí)行頁保護(hù)等安全策略,這些安全策略可以防止由緩沖區(qū)溢出漏洞導(dǎo)致的攻擊行為。例如,如果攻擊程序熟悉進(jìn)程的地址空間,從而將程序的執(zhí)行流程跳轉(zhuǎn)到惡意代碼的位置,危害系統(tǒng)安全。而利用地址隨機化策略使程序地址隨機化,使得攻擊者無法將程序執(zhí)行流程跳轉(zhuǎn)到預(yù)期位置,從而阻止攻擊代碼執(zhí)行。這樣不僅可以對已知漏洞進(jìn)行防護(hù),還能對未知漏洞利用攻擊進(jìn)行防御。

3 性能分析及測試

3.1 安全性分析

因為沙箱具有獨立的文件系統(tǒng),所以從沙箱中啟動應(yīng)用程序后,在執(zhí)行過程中所做的操作,如下載的文件以及在網(wǎng)頁上安裝的軟件都被重定向到沙箱獨立的文件系統(tǒng)中,可以隨時刪除且不會對主機系統(tǒng)造成任何影響;此外,沙箱引入了Namespace 機制和 Cgroups 機制,實現(xiàn)了沙箱與系統(tǒng)間系統(tǒng)資源和物理資源的隔離;權(quán)能機制使應(yīng)用程序及沙箱都不可能進(jìn)行除了賦予給它們的權(quán)能之外的任何特權(quán)操作;強訪策略可以限制沙箱程序讀取或修改系統(tǒng)的關(guān)鍵文件和敏感數(shù)據(jù);地址隨機化和不可執(zhí)行頁保護(hù)策略防止了惡意代碼的緩沖區(qū)漏洞攻擊行為。如圖 2 所示為沙箱使用的各種機制及達(dá)到的隔離和安全效果。

3.2 測 試

測試環(huán)境:

Intel(R)Core(TM)i5-3470 CPU 3.20 GHz

Fedora 12 linux-2.6.36

(1)安全性測試

測試1:對存在安全漏洞的應(yīng)用程序直接執(zhí)行與在沙箱中執(zhí)行的結(jié)果進(jìn)行測試。根據(jù)Mozilla 官網(wǎng)安全公告,火狐瀏覽器(Firefox)的某一版本存在高危級別的漏洞 MFSA 2010-65。如果向 document.write()發(fā)送一個超長字符串,可能會導(dǎo)致文字渲染程序出現(xiàn)混亂,堆棧內(nèi)存的一部分被串?dāng)?shù)據(jù)所覆寫。攻擊者可利用此漏洞導(dǎo)致用戶瀏覽器崩潰,并可能執(zhí)行任意代碼。

測試過程如下:

① 向 document.write()發(fā)送超長字符串;

② 打開 Debuggy,直接運行 Firefox,在Debuggy 中多次查看 Call Stack 的內(nèi)容。

Call Stack 被寫入為 41414141,也就意味著在進(jìn)行正常的瀏覽器操作之后,32 位指令寄存器(Extended Instruction Pointer,EIP)就會變?yōu)?1414141,這個地址是不可執(zhí)行的,返回地址被覆蓋,EIP 指向的一段惡意代碼(如盜取系統(tǒng)敏感數(shù)據(jù))就會立刻被執(zhí)行,導(dǎo)致火狐瀏覽器崩潰。圖 3 所示為系統(tǒng)打印的錯誤信息。

圖2 沙箱使用機制及達(dá)到的隔離和安全效果Fig. 2. Isolation and security with sandbox mechanisms

但是,將火狐瀏覽器在沙箱中啟動,執(zhí)行上述操作之后,惡意代碼并不會被執(zhí)行,原因是我們在沙箱中采用了堆棧地址隨機化技術(shù)。此外,即使火狐瀏覽器運行時跳轉(zhuǎn)到惡意代碼的位置,這段代碼也只會在沙箱中運行,它所破壞的僅僅是我們虛擬出來的一個系統(tǒng)副本,并不會對沙箱外的系統(tǒng)造成任何危害,因此,沙箱隔離了存在安全漏洞的應(yīng)用程序?qū)ο到y(tǒng)的危害。

圖3 系統(tǒng)打印的錯誤信息Fig. 3. Error information printed by the system

測試 2:對惡意霸占資源的程序直接執(zhí)行與在沙箱中執(zhí)行的結(jié)果進(jìn)行測試。測試程序關(guān)鍵代碼如下:

該程序處在 while 循環(huán)中,在程序執(zhí)行時,會循環(huán)申請變量,不停地分配內(nèi)存,導(dǎo)致系統(tǒng)可用內(nèi)存的數(shù)量不斷減少。我們測試的結(jié)果在經(jīng)13.5 s 以后,1 G 的可用內(nèi)存幾乎完全被占用,導(dǎo)致其他應(yīng)用程序無法執(zhí)行。之后我們從沙箱中啟動該程序,限制沙箱所能使用的內(nèi)存大小為 100 M。當(dāng)程序執(zhí)行時,系統(tǒng)為該程序分配的內(nèi)存達(dá)到限制值以后,應(yīng)用程序被終止,而其他應(yīng)用程序仍可正常執(zhí)行。由此可見,沙箱防止了惡意程序?qū)τ谫Y源的惡意霸占,保護(hù)了系統(tǒng)的安全。

(2)性能測試

① 應(yīng)用級性能測試

以三種典型的桌面應(yīng)用程序 Firefox、Office和 Kaffeine 為例來分析該沙箱性能損耗。對比直接啟動應(yīng)用程序和從沙箱中啟動應(yīng)用程序的啟動時間(以 s 為單位),結(jié)果如圖 4 所示。圖 4 顯示,在沙箱中啟動應(yīng)用程序的時間比直接啟動稍慢一些,但是屬于可接受的范圍。

圖4 三種應(yīng)用程序直接運行和在沙箱中運行時間(s)對比Fig. 4. Time contrast of three apps running directly and in sandbox

② 系統(tǒng)級性能測試

使用工具 Unixbench 對沙箱及主機進(jìn)行系統(tǒng)級的性能對比測試。Unixbench 是一個用于評價系統(tǒng)綜合性能的開源工具,能夠測試包括文檔讀寫、內(nèi)存操作、進(jìn)程創(chuàng)建銷毀開銷和網(wǎng)絡(luò)等性能開銷。正常運行 Unixbench 的測試結(jié)果如圖 5 所示,而在沙箱中運行 Unixbench 的測試結(jié)果如圖6 所示。經(jīng)對比發(fā)現(xiàn),在沙箱中運行時,系統(tǒng)的性能開銷增加了 2.88%,屬于可接受范圍。

圖5 正常運行時的測試結(jié)果Fig. 5. Test results of normal operation

圖6 在沙箱中運行時的測試結(jié)果Fig. 6. Test results in sandbox

4 總 結(jié)

該沙箱利用各種安全策略和隔離機制給不可信任的應(yīng)用程序提供一個安全隔離的運行環(huán)境,配置簡單并且無需修改內(nèi)核和應(yīng)用程序,具有很強的安全性和隔離性,是一種保護(hù) Linux系統(tǒng)安全的有效手段。但是,沙箱對系統(tǒng)的性能會產(chǎn)生一些影響,如何進(jìn)一步降低沙箱性能消耗還是一個亟待解決的問題,這將是我們下一步研究的重點。

[1]程龍, 楊小虎. Linux 系統(tǒng)內(nèi)核的沙箱模塊實現(xiàn)[J]. 計算機應(yīng)用, 2004, 24(1): 79-81.

[2]Acharya A, Raje M. MAPbox: using parameterized behavior classes to confine untrusted applications[C]// Proceedings of the 9th Conference on USENIX Security Symposium, 2000: 1.

[3]Peterson DS, Bishop M, Pandey R. A flexible containment mechanism for executing untrusted code [C]// Proceedings of the 11th USENIX Security Symposium, 2002: 207-225.

[4]Provos N. Improving host security with systemcall policies [C]// Proceedings of the 12th Conference on USENIX Security Symposium, 2003: 257-272.

[5]Bernaschi M, Gabrielli E, Mancini LV. Operating system enhancements to prevent the misuse of system calls [C]// Proceedings of the 7th ACM Conference on Computer and Communications Security, 2000: 174-183.

[6]王洋, 王欽. 沙盒安全技術(shù)的發(fā)展研究 [J]. 軟件導(dǎo)刊, 2009, 8(8): 152-153.

[7]李時惠. 一種增強的基于威脅度的沙箱框架設(shè)計[J]. 計算機技術(shù)與自動化, 2006, 25(3): 123-127.

[8]張愛華, 林園. 一種基于安全標(biāo)簽的訪問控制模型的設(shè)計和實現(xiàn) [J]. 計算機應(yīng)用研究, 2007, 1:183-185.

猜你喜歡
沙箱權(quán)能進(jìn)程
五指成拳 靶向發(fā)力 拓展股權(quán)權(quán)能 助力富民增收
宅基地資格權(quán):原則遵循、性質(zhì)定位和權(quán)能闡述
債券市場對外開放的進(jìn)程與展望
改革開放進(jìn)程中的國際收支統(tǒng)計
Removing a stone
巧用沙箱檢測文件安全
“四荒”土地承包經(jīng)營權(quán)能抵押嗎
文件檢測方法及沙箱
農(nóng)地產(chǎn)權(quán)權(quán)能擴展及管理措施完善研究
基于函數(shù)注入的沙箱攔截識別方法