徐 鋒,魏立峰,張國印
(1.哈爾濱工程大學(xué)計算機科學(xué)與技術(shù)學(xué)院,黑龍江哈爾濱150001;2.國防科學(xué)技術(shù)大學(xué)計算機學(xué)院,湖南長沙410073)
計算機信息安全除了要保護信息的機密性外,還要保護信息的完整性。文件的完整性是指文件完好無損,是完整的。一旦一個重要文件被替換或篡改,其危害甚至不亞于機密信息的丟失。
Tripwire是Linux下進行事后完整性檢查的一種手段,但不能實時地對文件完整性進行保護,僅在事后給出提示,顯然不能滿足完整性保護需求。為保護信息完整性,學(xué)者提出了很多完整性模型,包括Biba模型、Clark-Wilson模型、Chinese-Wall模型、LOMAC模型、Lipner完整矩陣模型等[1],并進行了一系列后續(xù)研究[2~7],從完整性訪問控制模型以及如何實施完整性訪問控制等角度進行了研究,但是都不能真正做到利用完整性控制機制保護系統(tǒng)平臺的完整性,防止外來程序的執(zhí)行。
完整性保護是高等級安全操作系統(tǒng)的一項重要要求[8,9]。各安全操作系統(tǒng)基于不同的完整性保護模型進行適應(yīng)性實現(xiàn)。銀河麒麟提出了可信數(shù)據(jù)認(rèn)證技術(shù),定義了兩個簡單完整級,分別表示可信和不可信,通過定義外來數(shù)據(jù)不可信防止惡意程序?qū)ν暾缘钠茐?,同時起到抵御惡意攻擊的效果;紅旗安全操作系統(tǒng)則在Biba嚴(yán)格完整性保護策略的基礎(chǔ)上,實現(xiàn)了動態(tài)的嚴(yán)格完整性保護策略[3];FreeBSD在其強制訪問控制MAC(Mandatory Access Control)框架下實現(xiàn)了保護完整性的mac_lomac策略[10]。Windows 7和Vista的強制完整性控制MIC(Mandatory Integrity Control)策略[11]是Biba模型中Ring策略[1]的一種實現(xiàn)。利用MIC機制,Windows 7和Vista實現(xiàn)了IE保護模式,限制惡意代碼、程序和插件能夠通過瀏覽器獲得的權(quán)限操作。
雖然有很多的完整性模型及策略實現(xiàn),但在實際使用中還是存在一些不足。無論信息完整性的保護需求有多高,總是有進程或用戶可以有意或無意地進行修改、刪除等操作,而在某些情況下,是不允許進行任何修改的,比如操作系統(tǒng)內(nèi)核、重要配置文件以及系統(tǒng)重要命令或應(yīng)用等,一旦這些文件被破壞,甚至可以導(dǎo)致系統(tǒng)癱瘓;較低完整性的文件是可以執(zhí)行較高完整性程序的,因為并不會破壞完整性保護原則;新創(chuàng)建文件的完整性如何確定的問題并不是任何時候都要和進程完整性一致。基于此,本文提出了一種滿足完整性保護需求并兼顧靈活和防止瀏覽器劫持等惡意攻擊的靈活完整性控制策略,稱之為FIC(Flexible Integrity Control)完整性控制策略,并給出了在LSM(Linux Security Module)[11]訪問控制框架下的實現(xiàn)過程。FIC策略引入了輔助完整級,參與新創(chuàng)建文件客體的完整性標(biāo)記確定規(guī)則中,并定義進程執(zhí)行完整性標(biāo)記規(guī)則,使得低完整性進程不能通過執(zhí)行高完整性進程提升權(quán)限,高完整性進程執(zhí)行低完整性進程必須降低權(quán)限,既增加了靈活性又不會對完整性造成破壞。分析表明,F(xiàn)IC策略即能滿足完整性保護目標(biāo),也能有效防止系統(tǒng)重要文件遭到破壞,同時還有防止外來惡意軟件運行和瀏覽器劫持等功能。
Biba模型是最經(jīng)典的完整性模型和正式的計算機安全策略狀態(tài)轉(zhuǎn)換系統(tǒng),由Biba K于20世紀(jì)70年代提出。類似于BLP[1]保密性模型,Biba模型為系統(tǒng)中的主客體定義了完整性等級,并制定了一套確保數(shù)據(jù)不被損壞的訪問控制規(guī)則,提供了分級別的完整性保證。
Biba模型針對完整性保護提出了三種策略:low-water-mark策略、Ring策略和嚴(yán)格完整性策略(Biba模型)。
low-water-mark策略定義了如下三種訪問控制規(guī)則:
(1)主體s能夠?qū)懺L問客體o,當(dāng)且僅當(dāng)客體o的完整級小于或等于主體s的完整級;
(2)如果主體s讀訪問客體o,如果客體o的完整級低于主體s的完整級,那么主體s在讀訪問客體o后,其完整級等于客體o的完整級;
(3)主體s1能夠執(zhí)行主體s2,當(dāng)且僅當(dāng)主體s2的完整級小于或等于主體s1的完整級。
Ring策略定義了如下三種訪問控制規(guī)則:(1)允許任何主體讀任何客體;
(2)主體s允許寫訪問客體o,當(dāng)且僅當(dāng)客體o的完整級小于或等于主體s的完整級;
(3)主體s1能夠執(zhí)行主體s2,當(dāng)且僅當(dāng)主體s2的完整級小于或等于主體s1的完整級。
嚴(yán)格完整性策略也稱之為Biba模型,定義了如下訪問控制規(guī)則:
(1)主體s能夠讀訪問客體o,當(dāng)且僅當(dāng)主體s的完整級小于或等于客體o的完整級;
(2)主體s能夠?qū)懺L問客體o,當(dāng)且僅當(dāng)客體o的完整級小于或等于主體s的完整級;
(3)主體s1能夠執(zhí)行主體s2,當(dāng)且僅當(dāng)主體s2的完整級小于或等于主體s1的完整級。
Biba模型三種完整性策略的區(qū)別僅在于讀訪問時的限制,其目標(biāo)就是對信息流進行限制,在主體訪問客體時,禁止低完整性等級的進程對高完整性等級的客體進行寫訪問,保證信息只會從等級較高的實體傳輸?shù)降燃壍偷膶嶓w。在low-watermark策略中,當(dāng)高完整級的進程讀訪問了低完整級的文件時,進程要降低其完整性等級。也可以描述為具有更高等級的清潔實體受到損壞后,就變成等級低的非清潔等級實體。Biba模型則不允許進程讀更低完整級的客體。
Windows 7或者Vista的MIC機制實際上是Ring策略的一種實現(xiàn)。MIC只定義了簡化的四個完整級,并通過瀏覽器進程運行在最低完整級來限制惡意木馬或病毒通過瀏覽器對系統(tǒng)的破壞。
在Biba模型的三種策略中,低完整級進程不能執(zhí)行高完整級應(yīng)用,因為只要完整級不被提高,允許執(zhí)行并不會對完整性造成破壞,因此靈活性不足。同時,高完整級進程在執(zhí)行低完整級程序后沒有相應(yīng)的完整級變化規(guī)則,可能導(dǎo)致低完整性程序被高完整性進程執(zhí)行后具有高完整性從而破壞完整性。由于缺乏新建客體的完整性標(biāo)記規(guī)則,通常繼承進程的完整性標(biāo)記,但并不是任何時候高完整級進程創(chuàng)建的文件一定是高完整級文件,比如創(chuàng)建的臨時文件,可能需要和其他進程共享,因此其完整級并不需要和進程的完整級一樣高。
對操作系統(tǒng)本身而言,完整性保護的目標(biāo)不只是信息的完整性,操作系統(tǒng)自身的完整性更加重要。如果操作系統(tǒng)內(nèi)核、系統(tǒng)命令等被修改或刪除,可能造成重要安全隱患甚至導(dǎo)致系統(tǒng)癱瘓。因此,對于某些在任何時候都不能被修改的文件,有必要采取特別措施保護其完整性。
為保護信息的完整性,并考慮實用性和靈活性,F(xiàn)IC完整性策略為系統(tǒng)中的主客體定義一個完整性標(biāo)記,包括主完整級IL(Integrity Level)和輔助完整級IAL(Integrity Auxiliary Level)。主完整級IL主要參與訪問控制決策以及客體完整性標(biāo)記的確定;輔助完整級IAL則主要針對系統(tǒng)中的進程主體和目錄客體,并參與到文件客體完整性標(biāo)記確定規(guī)則中,用以確定新生成的文件客體完整性標(biāo)記。
FIC完整性策略缺省定義七個完整級,從高到低分別是NOMOD、CORE、SYSTEM、USER、TMP、LOW以及UNDEF,其各自含義及適用主客體如表1所示。其中主完整級可以取值NOMOD、CORE、SYSTEM、USER、TMP以及LOW,輔助完整級取值范圍則包括全部七個完整級。
一個完整性標(biāo)記A的主完整級IL(A)和輔助完整級IAL(A)必須滿足如下關(guān)系之一:
定義1 當(dāng)且僅當(dāng)完整性標(biāo)記A的主完整級IL(A)大于或等于完整性標(biāo)記B的主完整級IL(B)時,即IL(A)≥IL(B)時,稱完整性標(biāo)記A支配完整性標(biāo)記B。
Table 1 Definition of FIC default integraity level表1 FIC缺省完整級定義
FIC完整性策略與Ring策略相似,但考慮了靈活性,策略規(guī)則定義如下:
(1)讀訪問規(guī)則:由于讀訪問不破壞完整性,缺省允許;
(2)寫訪問規(guī)則:當(dāng)且僅當(dāng)進程主體的完整性標(biāo)記支配客體的完整性標(biāo)記時,才允許該進程對該客體進行寫訪問;
(3)執(zhí)行訪問規(guī)則:任何進程不允許執(zhí)行主完整級為LOW的客體,且進程改變執(zhí)行映像時,即在exec操作時,產(chǎn)生新進程的完整性標(biāo)記為其父進程與被執(zhí)行文件中完整性標(biāo)記較小者。
通過上述完整性策略規(guī)則,F(xiàn)IC完整性策略既滿足Ring策略的要求,又保證了系統(tǒng)運行的靈活性,可保證高完整性標(biāo)記的文件、進程等不會被低完整性標(biāo)記進程破壞。系統(tǒng)運行時,高完整性的進程在執(zhí)行低完整性的文件后會降低其完整性標(biāo)記,而低完整性的進程不可能通過執(zhí)行高完整性的文件提升自己的權(quán)限。
在系統(tǒng)執(zhí)行過程中,進程主體的完整性標(biāo)記應(yīng)隨著其執(zhí)行流的進行而改變,防止進程通過改變執(zhí)行映像提高權(quán)限,并防止低完整性標(biāo)記程序被高完整性標(biāo)記進程執(zhí)行時可能對系統(tǒng)完整性造成破壞。因此,進程在改變執(zhí)行映像時需要根據(jù)進程的原有完整性標(biāo)記和執(zhí)行映像的完整性標(biāo)記重新確定其完整性標(biāo)記。新生成的客體完整性標(biāo)記也是根據(jù)其父進程以及父目錄的完整性標(biāo)記來確定。
當(dāng)進程創(chuàng)建子進程時,子進程缺省繼承父進程的完整性標(biāo)記。當(dāng)進程p改變執(zhí)行映像時,進程p的完整性標(biāo)記按照如下規(guī)則改變:
(1)如果進程的當(dāng)前完整性標(biāo)記支配執(zhí)行映像的完整性標(biāo)記,則進程的主完整級降低為執(zhí)行映像的主完整級;如果執(zhí)行映像的完整性標(biāo)記支配進程的當(dāng)前完整性標(biāo)記,則進程的完整性標(biāo)記保持不變。
(2)如果執(zhí)行映像具有輔助完整級,且輔助完整級不為NOMOD,則:
①如果進程當(dāng)前沒有定義輔助完整級,即輔助完整級為UNDEF,則進程的輔助完整級設(shè)置為執(zhí)行映像的輔助完整級;
②如果進程當(dāng)前有輔助完整級,且映像的輔助完整級高于進程的輔助完整級,則進程的輔助完整級不變;
③如果進程當(dāng)前有輔助完整級,且進程的輔助完整級高于映像的輔助完整級,則進程的輔助完整級設(shè)置為執(zhí)行映像的輔助完整級。
(3)經(jīng)步驟(1)、(2)后,如果進程的輔助完整級IAL(p)高于進程的主完整級IL(p),則進程的輔助完整級IAL(p)設(shè)置得與進程的完整級IL(p)相等。
當(dāng)進程創(chuàng)建文件時,文件客體的完整性標(biāo)記通常要繼承進程的完整性標(biāo)記,但并不是所有新建文件都要和進程保持一致。輔助完整級主要用于文件或目錄客體創(chuàng)建時的完整性標(biāo)記限定。如果進程的輔助完整級不為UNDEF,則輔助完整級表示進程所能創(chuàng)建的文件的最高完整性標(biāo)記;如果目錄的輔助完整級不為UNDEF,則輔助完整級表示在該目錄下新創(chuàng)建的文件的最高完整性標(biāo)記。
新建客體標(biāo)記確定規(guī)則如下:
(1)如果進程具有輔助完整級,則文件客體的主完整級繼承進程的輔助完整級,否則文件客體的主完整級繼承進程的主完整級。如果要創(chuàng)建的文件客體所在的父目錄有輔助完整級,則轉(zhuǎn)2);否則,文件客體的輔助完整級取值為UNDEF,文件客體完整性標(biāo)記確定完畢。
(2)如果步驟(1)確定的文件客體主完整級高于父目錄的主完整級,則繼承父目錄的主完整級。如果創(chuàng)建的文件客體是目錄,則目錄的輔助完整級也繼承父目錄的輔助完整級;否則,輔助完整級取值為UNDEF。轉(zhuǎn)(3)
(3)如果步驟(2)確定的文件客體完整性標(biāo)記支配步驟(1)確定的完整性標(biāo)記,則文件客體的完整級即為步驟(1)確定的完整標(biāo)記;如果文件客體具有輔助完整級,且輔助完整級高于文件客體的主完整級,則輔助完整級設(shè)置得與文件客體的主完整級相同。
LSM是一種輕量級、通用的訪問控制框架,為各種增強的訪問控制策略提供一種底層的通用支持,使得安全模塊開發(fā)者可以專注于安全策略內(nèi)部的細(xì)節(jié)實現(xiàn),而不必關(guān)心整個操作系統(tǒng)的流程。目前,LSM已經(jīng)集成在Linux內(nèi)核中,Linux各主要發(fā)行版本均包括LSM框架。通過LSM框架,可以方便地實現(xiàn)各種安全策略,如SELinux就是掛接在LSM框架下實現(xiàn)對系統(tǒng)的保護。
LSM在內(nèi)核主要的數(shù)據(jù)結(jié)構(gòu)(如inode、task、file等)中均增加了相應(yīng)的安全域,以無類型指針void*security表示,并在內(nèi)核相關(guān)函數(shù)內(nèi)部的關(guān)鍵點插入鉤子函數(shù)。根據(jù)控制對象的不同,LSM將hook函數(shù)進行分類,并定義在一個security_operations安全hook函數(shù)域結(jié)構(gòu)中,各安全策略模塊根據(jù)自身策略需求實現(xiàn)相應(yīng)的部分或全部hook函數(shù)實體。當(dāng)主體訪問客體時,首先進行一系列常規(guī)操作及內(nèi)核一般訪問檢查后,通過鉤子函數(shù)進入掛接在LSM下的各訪問控制策略檢查函數(shù),并根據(jù)各訪問控制策略檢查結(jié)果,決定是否授予訪問權(quán)限。
4.2.1 FIC安全標(biāo)記域
FIC完整性訪問控制策略作為一個安全策略模塊在LSM框架下設(shè)計實現(xiàn),為系統(tǒng)內(nèi)所有主客體定義如下一個fic_label完整性標(biāo)記結(jié)構(gòu),在該結(jié)構(gòu)中,fic_grade表示主完整級,fic_aux表示輔助完整級。
以該標(biāo)記結(jié)構(gòu)為基礎(chǔ),為inode、file、task、bprm等定義相應(yīng)的完整性標(biāo)記結(jié)構(gòu)。
4.2.2 主體函數(shù)設(shè)計
FIC策略主要實現(xiàn)與訪問控制相關(guān)的inode客體標(biāo)記、進程再標(biāo)記等hook函數(shù)。
進程訪問文件的主體函數(shù)fic_inode_perm的邏輯結(jié)構(gòu)如圖1所示。
Figure 1 Logic structure of process access files圖1 進程訪問文件邏輯結(jié)構(gòu)
進程p執(zhí)行b的時候,進程完整性標(biāo)記需要根據(jù)b的完整性標(biāo)記重新確定進程p的主完整級和輔助完整級。主體函數(shù)fic_bprm_apply_creds的邏輯結(jié)構(gòu)如圖2所示。
Figure 2 Logic structure of process tags to determine圖2 進程標(biāo)記再確定邏輯結(jié)構(gòu)
新建文件o的完整性標(biāo)記缺省根據(jù)進程p的完整性標(biāo)記確定,但如果父目錄d下創(chuàng)建的文件完整性標(biāo)記有特殊要求,則新建文件o的完整性標(biāo)記根據(jù)進程p和目錄d二者的完整性標(biāo)記綜合確定。主體函數(shù)fic_inode_init_security的邏輯結(jié)構(gòu)如圖3所示。
FIC策略引入主完整級和輔助完整級,并允許低完整性標(biāo)記的進程可以執(zhí)行高完整性標(biāo)記的程序,高完整性標(biāo)記進程在執(zhí)行低完整性程序后降低其完整性,實現(xiàn)了系統(tǒng)執(zhí)行控制的靈活性。輔助完整級主要文件客體創(chuàng)建時的標(biāo)記限定中,通常用于瀏覽器等進程以及/tmp等臨時目錄。
igure 3 Logic structure of new file tags to determine圖3 新建文件標(biāo)記確定邏輯結(jié)構(gòu)
為保護操作系統(tǒng)內(nèi)核等重要文件,通過安全配置工具ficset為/boot目錄下所有文件設(shè)置完整性標(biāo)記為CORE[NOMOD]。測試表明,任何用戶對這些文件的修改操作都被拒絕,但不影響系統(tǒng)正常運行。
為瀏覽器進程定義TMP[LOW]完整性標(biāo)記,即主完整級為TMP,輔助完整級為LOW,使得瀏覽器進程不能對系統(tǒng)造成破壞,且通過瀏覽器下載的文件或插件主的完整級只能是LOW,因此通過瀏覽器下載的惡意程序或木馬不能運行,進一步保護了系統(tǒng)的安全。測試也驗證了這一點。
本文研究了目前完整性保護機制的現(xiàn)狀,指出了其中存在的缺陷,提出了一種靈活的完整性保護策略FIC,并在LSM框架下設(shè)計實現(xiàn)。FIC策略定義了主完整級和輔助完整級的概念,并通過訪問控制規(guī)則、主體再標(biāo)記規(guī)則和新建客體標(biāo)記規(guī)則,實現(xiàn)了靈活的完整性保護。利用FIC策略,可以做到具有最高完整性保護要求的文件不會被任何用戶或進程修改,并可防止外來惡意程序或木馬的運行。
但是,F(xiàn)IC策略在設(shè)計實現(xiàn)過程中只簡單定義了有限的幾個完整級,在某些情況下,可能不能滿足實際需求。因此,還可以對FIC進行可擴展性研究,管理員根據(jù)需要動態(tài)增加自定義完整級,系統(tǒng)根據(jù)完整級配置文件在內(nèi)核維護完整級鏈表,進一步滿足擴展需求。
[1] Bishop M.Computer security:Art and science[M].Boston:Addison Wesley,2002.
[2] Zhang Jun,Zhou Zheng,Li Jian,et al.Confidentiality and integrity dynamic union model based on MLS policy[J].Computer Engineering and Applications,2008,44(12):19-21.(in Chinese)
[3] Zhang Xiang-feng,Sun Yu-fang.Dynamic enforcement of the strict integrity policy in Biba’s model[J].Journal of Computer Research and Development,2005,42(5):746-754.(in Chinese)
[4] Zhou Zhou-yi,He Ye-ping,Liang Hong-liang.Hybrid mandatory integrity model composed of Biba and clark-wilson policy[J].Journal of Software,2010,21(1):98-106.(in Chinese)
[5] Luo Qin,Wang Xiao-ming,F(xiàn)u zheng-fang.An improvement of clark-wilson integrity model[J].Microelectronics &Computer,2007,24(7):128-131.(in Chinese)
[6] Liu Zun,Wang Tao,Li Wei-h(huán)ua.Role based integrity control model for operating system[J].Computer Science,2010,37(1):87-90.(in Chinese)
[7] Hu Ming,Pan Xue-zeng,Li Wen.Design and implementation of improved multiple-level security model[J].Computer Engineering and Applications,2011,47(4):77-80.(in Chinese)
[8] Galagher P R.A guide to understanding audit in trusted systems[M].US:National Computer Secuirty Center(NCSC),1987.
[9] Common criteria for information technology security evaluation(Version2.3)[S].Common Criteria Recognition Agreement(CCRA),2005.
[10] Wu Xin-song,Zhou Zhou-yi,He Ye-ping,et al.Static analysis of a class of memory leaks in trusted BSD MAC framework[C]∥Proc of ISPEC’09,2009:83-92.
[12] Riley S.Windows Vista system integrity technologies[R].Microsoft,2006:1-62.
[11] Wright C,Cowan C,Morris J,et al.Linux security modules:General security support for the Linux kernel[EB/OL].[2003-05-20].http://lsm.immunix.org.
附中文參考文獻:
[2] 張俊,周正,李建,等.基于MLS策略的機密性和完整性動態(tài)統(tǒng)一模型[J].計算機工程與應(yīng)用,2008,44(12):19-21.
[3] 張相鋒,孫玉芳.Biba模型中嚴(yán)格完整性政策的動態(tài)實施[J].計算機研究與發(fā)展,2005,42(5):746-754.
[4] 周洲儀,賀也平,梁洪亮.基于Biba和Clark-Wilson策略的混合強制完整性模型[J].軟件學(xué)報,2010,21(1):98-106.
[5] 羅琴,王小明,付爭方.一種改進的Clark_Wilson完整性策略模型[J].微電子學(xué)與計算機,2007,24(7):128-131.
[6] 劉尊,王濤,李偉華.基于角色的操作系統(tǒng)完整性控制模型[J].計算機科學(xué),2010,37(1):87-90.
[7] 胡明,潘雪增,李文.改進的多級安全模型的設(shè)計與實現(xiàn)[J].計算機工程與應(yīng)用,2011,47(4):77-80.