魏小鋒,郭玉東,林鍵
信息工程大學(xué)數(shù)學(xué)工程與先進(jìn)計(jì)算國(guó)家重點(diǎn)實(shí)驗(yàn)室,鄭州450001
基于MNT隨機(jī)化容器文件系統(tǒng)安全性加強(qiáng)技術(shù)
魏小鋒,郭玉東,林鍵
信息工程大學(xué)數(shù)學(xué)工程與先進(jìn)計(jì)算國(guó)家重點(diǎn)實(shí)驗(yàn)室,鄭州450001
CNKI網(wǎng)絡(luò)出版:2017-04-14,http://kns.cnki.net/kcms/detail/11.2127.TP.20170414.1717.004.html
Linux內(nèi)核Namespaces是實(shí)現(xiàn)基于容器的操作系統(tǒng)級(jí)虛擬化的關(guān)鍵技術(shù),提供了資源虛擬化和隔離機(jī)制,將PID、IPC、Network等全局性的系統(tǒng)資源劃分到某個(gè)特定的Namespace。所有容器能夠共享主機(jī)內(nèi)核,所有指令在CPU核心的本地運(yùn)行,提高資源利用率和能快速啟動(dòng)的優(yōu)點(diǎn),但也增加了使用的安全風(fēng)險(xiǎn)。容器的使用風(fēng)險(xiǎn)主要集中在共享內(nèi)核、網(wǎng)絡(luò)、系統(tǒng)調(diào)用、設(shè)備或磁盤(pán)能夠直接訪問(wèn),從而引發(fā)信息泄漏,這些是導(dǎo)致容器安全問(wèn)題的源頭。最近幾年暴露出的漏洞[1]顯示出:文件系統(tǒng)(fielsystem)中的procfs和sysfs等文件系統(tǒng)不支持名字空間,容易導(dǎo)致大量信息泄漏、客戶機(jī)逃離和特權(quán)升級(jí)等問(wèn)題產(chǎn)生。
目前,針對(duì)隔離性不夠徹底的問(wèn)題,容器的典型代表Docker[2-3]采用通過(guò)lxcfs文件系統(tǒng)[4]、copy-on-write[5]機(jī)制和支持MAC等訪問(wèn)控制,達(dá)到保護(hù)文件系統(tǒng)的目的。以上保護(hù)機(jī)制,都沒(méi)有對(duì)文件名/目錄進(jìn)行保護(hù),攻擊者根據(jù)文件名/目錄可以推斷出此文件的性質(zhì),而且容器中默認(rèn)設(shè)置的權(quán)限比較高,某些惡意用戶進(jìn)程可以讀取procfs和sysfs的某些敏感文件。
針對(duì)以上不足,提出了基于MNT名字空間隨機(jī)化的方法,簡(jiǎn)稱(chēng)MNTRand。通過(guò)修改Linux的MNT名字空間創(chuàng)建及工作過(guò)程,即利用MNT名字空間創(chuàng)建時(shí)產(chǎn)生的AES密鑰,對(duì)文件名/目錄使用AES加密算法[6]進(jìn)行處理,在不影響MNT名字空間內(nèi)的用戶進(jìn)程正常運(yùn)行的情況下,使進(jìn)程只能看到模糊的文件目錄樹(shù),實(shí)現(xiàn)了對(duì)目錄的屏蔽,有效防護(hù)掃描軟件針對(duì)枚舉目錄和特定敏感文件的攻擊,進(jìn)而減少信息泄漏的風(fēng)險(xiǎn),增大惡意軟件的漏洞探測(cè)和系統(tǒng)漏洞的利用難度。
容器作為一種操作系統(tǒng)層的虛擬化技術(shù),它為應(yīng)用進(jìn)程提供虛擬的執(zhí)行環(huán)境,一個(gè)虛擬的執(zhí)行環(huán)境就是一個(gè)容器。在容器中,只有一個(gè)操作系統(tǒng)內(nèi)核,所有的用戶進(jìn)程都共享主機(jī)內(nèi)核,不需要指令級(jí)模擬,不需要即時(shí)(Just-in-time)編譯,降低了硬件虛擬化的復(fù)雜性,容器可以實(shí)現(xiàn)進(jìn)程級(jí)別的隔離,大大提升了虛擬化的粒度,提高了系統(tǒng)資源利用的效率;容器其性能損耗降到最低。
Namespaces[7]是Linux內(nèi)核提供的一種操作系統(tǒng)虛擬化(OS-Virtualization)的機(jī)制,它提供一種資源虛擬化和隔離方案:PID、IPC、Network等系統(tǒng)資源不再是全局性的,而是屬于某個(gè)特定的Namespace,每個(gè)進(jìn)程都與一個(gè)名稱(chēng)空間相關(guān)聯(lián),只能看到與該名稱(chēng)空間相關(guān)聯(lián)的資源。這樣每個(gè)進(jìn)程(或組)可以對(duì)資源有一個(gè)獨(dú)特的視角。目前在Linux系統(tǒng)上實(shí)現(xiàn)操作系統(tǒng)虛擬化(OS-Virtualization)系統(tǒng)有Linux VServer、OpenVZ、LXC(Linux Container)、Docker、Rocket/rkt等,以上種種本質(zhì)來(lái)說(shuō)都是使用了Linux Namespace來(lái)進(jìn)行隔離。Linux nameapce使用clone(2)setns(2)和unshare(2)系統(tǒng)調(diào)用,其系統(tǒng)調(diào)用標(biāo)志、隔離內(nèi)部和需要的權(quán)限如表1所示。未來(lái),Linux內(nèi)核可能還將加入Security Namespace、Security KeyNamespace、Device Namespace和Time Namespace等名字空間[8]。
容器共享內(nèi)核的和缺乏完整的內(nèi)核名字空間面臨的危險(xiǎn)性不能夠忽視,Linux許多內(nèi)核特征仍沒(méi)有實(shí)現(xiàn)名字空間隔離[9],例如procfs和sysfs文件系統(tǒng)不支持名字空間,加之設(shè)備等名字空間不完善,這使得攻擊者很容易繞過(guò)檢查保護(hù)特權(quán)容器的需要步驟,形成非法訪問(wèn)和修改,造成大量不同的信息泄漏和其他漏洞。下面以procfs文件系統(tǒng)的信息泄漏的問(wèn)題為例子,來(lái)說(shuō)明容器存在威脅。proc文件系統(tǒng)(procfs),是一個(gè)處于內(nèi)存中的文件系統(tǒng),它用于顯示當(dāng)前進(jìn)程的狀態(tài)信息,如:進(jìn)程處于的狀態(tài),文件打開(kāi)描述符。另外,它還可以用于顯示當(dāng)前系統(tǒng)運(yùn)行的狀態(tài)如CPU信息、內(nèi)存信息、中斷信息,網(wǎng)絡(luò)流量等等重要敏感的信息。因?yàn)槿萜鲝闹鳈C(jī)上繼承此文件系統(tǒng),但由于procfs缺乏名字空間的支持,/proc直接暴露給普通用戶,提供了重要的信息泄漏來(lái)源,這些信息能夠很方便地引導(dǎo)其他攻擊[9-12]。
分析procfs和sysfs等文件系統(tǒng)存在的信息泄漏等方式,例如:CVE-2012-0056[12]是基于特定文件(/proc/pid/mem)信息泄漏進(jìn)行的攻擊,CVE-2015-2925[13]是通過(guò)內(nèi)核prepend_path函數(shù)漏洞繞過(guò)chroot隔離,獲得絕對(duì)路徑名。還有的一些攻擊基于遠(yuǎn)程枚舉目錄(如ls和dir等)針對(duì)此類(lèi)基于文件名/目錄的攻擊,提出MNT名字空間隨機(jī)化的方法,即在MNT名字空間基礎(chǔ)上加入文件名/目錄隨機(jī)化,對(duì)文件名/目錄采用AES加密處理,使名字空間的進(jìn)程所能看到是一個(gè)隨機(jī)化后的目錄樹(shù),即模糊進(jìn)程能看到的目錄樹(shù),而整個(gè)系統(tǒng)的根用戶的進(jìn)程目錄不受任何影響。
Linux VFS(虛擬文件系統(tǒng))實(shí)現(xiàn)了對(duì)文件系統(tǒng)的管理,它包括索引節(jié)點(diǎn)結(jié)構(gòu)inode、目錄項(xiàng)結(jié)構(gòu)dentry等。本文提出基于MNT名字空間隨機(jī)化,是對(duì)文件名/目錄進(jìn)行操作,不改變inode結(jié)構(gòu)和文件實(shí)體間的組織關(guān)系,只改變了文件實(shí)體名稱(chēng),即dentry結(jié)構(gòu)中的d_name,相當(dāng)于給文件名/目錄上加上mask。MNTRand可分為三個(gè)部分:一是MNT名字空間密鑰(keys)的產(chǎn)生,二是利用keys對(duì)文件名/目錄進(jìn)行加密,進(jìn)而形成文件名/目錄隨機(jī)化的MNT名字空間;三是對(duì)路徑名進(jìn)行解析,實(shí)現(xiàn)在文件名/目錄隨機(jī)化的MNT名字空間內(nèi)的進(jìn)程能夠正常訪問(wèn)文件。其整體框架如圖1所示。
表1 Linux實(shí)現(xiàn)的六項(xiàng)Namespace
圖1 MNTRand框架
文件系統(tǒng)注冊(cè)安裝后,安裝點(diǎn)結(jié)構(gòu)vfsmount中的域mnt_ns指向文件系統(tǒng)所屬的名字空間mnt_namespace。在新創(chuàng)建一個(gè)MNT名字空間時(shí)(系統(tǒng)接收到CLONE_NEWNS標(biāo)志),使用mnt_namespace*copy_mnt_ns()進(jìn)行創(chuàng)建new_ns。為方便密鑰的管理,mnt_namespace結(jié)構(gòu)中加入keys結(jié)構(gòu),同時(shí)保證一個(gè)MNT名字空間對(duì)應(yīng)唯一的keys,即重新定義如下:
考慮到同一個(gè)操作系統(tǒng)中會(huì)有多個(gè)操作者,限制只有創(chuàng)建MNT名字空間的根用戶才有權(quán)限決定文件名/目錄是否加密,普通用戶采用授權(quán)方式獲得自動(dòng)加密和解密的權(quán)限,其他普通用戶只有對(duì)文件名/目錄操作的權(quán)限。
為方便普通用戶通過(guò)授權(quán)方式能夠使用正常的文件名/目錄來(lái)操作文件,MNTRand采用白名單技術(shù),即系統(tǒng)管理員將可信用戶的uid和gid保存在白名單文件(WhiteList)中。因?yàn)镸NT名字空間只具有隔離文件系統(tǒng)的功能,并不具備用戶管理功能,故MNT名字空間需要聯(lián)合USER名字空間一起使用。而在mnt_namespace結(jié)構(gòu)內(nèi)嵌有user_namespace*user_ns,在MNT名字空間創(chuàng)建時(shí)同時(shí)創(chuàng)建user名字空間(系統(tǒng)接收到CLONE_NEWUSER標(biāo)志)。如使用絕對(duì)路徑名打開(kāi)文件時(shí),則判斷打開(kāi)進(jìn)程的uid/gid是否WhiteList授權(quán)的用戶uid/gid是否匹配,而授權(quán)普通用戶在創(chuàng)建的名字空間內(nèi)具有正常使用文件名/目錄的權(quán)限。
為了阻止攻擊者獲取正常的文件名/目錄,本文中AES加密所需的密鑰(keys)是由內(nèi)核函數(shù)get_random_int()隨機(jī)產(chǎn)生的,即:new_ns->keys=get_random_int(),并將密鑰與mnt_namespace結(jié)構(gòu)一樣僅保存在內(nèi)存中。如果攻擊者想要成功獲得正常文件名/目錄,要么需要獲取創(chuàng)建MNT名字空間的根用戶權(quán)限,要么需要對(duì)駐留內(nèi)核程序和內(nèi)存中的數(shù)據(jù)進(jìn)行操作,這無(wú)疑增加了攻擊難度。
用戶進(jìn)程查看文件名/目錄時(shí),由各個(gè)fs內(nèi)部的read_dir實(shí)現(xiàn)來(lái)完成目錄遍歷操作,對(duì)于遍歷到的每個(gè)文件或子目錄,調(diào)用函數(shù)filldir()來(lái)填充buf,并把數(shù)據(jù)傳遞給到用戶空間。MNTRand對(duì)文件名/目錄加密,就是對(duì)filldir()函數(shù)遍歷得到文件名/目錄,采用內(nèi)核/crypto/aes_generic.c中aes_encrypt()函數(shù)對(duì)進(jìn)行加密。其流程如圖2所示。其中,本文提出的對(duì)文件名/目錄的加密并不包括‘.’和‘..’,因?yàn)樵贚inux系統(tǒng)中,‘.’表示當(dāng)前目錄,‘..’表示上級(jí)目錄,并且在任何目錄中,都有這樣兩個(gè)子目錄。如果對(duì)‘.’和‘..’加密的話,攻擊者在知道‘.’和‘..’存在的情況下,可使用已知明文的方法進(jìn)行攻擊。進(jìn)而威脅整個(gè)加密系統(tǒng)。在新的MNT名字空間內(nèi)的普通用戶進(jìn)程看到的目錄樹(shù)是經(jīng)過(guò)AES加密過(guò)的隨機(jī)化目錄樹(shù),其可用信息大為減少。
圖2 MNTRand文件名/目錄加密流程
VFS實(shí)現(xiàn)文件管理主要依據(jù)全局目錄樹(shù)[14]。在全局目錄樹(shù)中,任何一個(gè)節(jié)點(diǎn),都有一個(gè)路徑名,并可分為絕對(duì)路徑名和相對(duì)路徑名。在進(jìn)程管理結(jié)構(gòu)task_struct中,fs域指向一個(gè)fs_struct結(jié)構(gòu),其中root是進(jìn)程的主目錄,pwd是進(jìn)程的當(dāng)前工作目錄。絕對(duì)路徑名和相對(duì)路徑名都可用于標(biāo)識(shí)文件和目錄。在訪問(wèn)一個(gè)文件或目錄之前,首要任務(wù)是找到路徑名所標(biāo)識(shí)的實(shí)體,并為其建立索引節(jié)點(diǎn)結(jié)構(gòu)(inode)和目錄項(xiàng)結(jié)構(gòu)(dentry),這一過(guò)程稱(chēng)為路徑名解析。Linux用path結(jié)構(gòu)描述實(shí)體的路徑信息,用path_lookup()系統(tǒng)實(shí)現(xiàn)路徑名解析。
在實(shí)現(xiàn)MNT名字空間文件名/目錄隨機(jī)化后,當(dāng)要訪問(wèn)一個(gè)文件或目錄時(shí),進(jìn)程提供的可以是正常的路徑名,也可以是隨機(jī)化后的路徑名。(1)當(dāng)使用正常路徑名時(shí),需要對(duì)訪問(wèn)文件或目錄的用戶進(jìn)行權(quán)限檢查,只有授權(quán)用戶具有訪問(wèn)權(quán)限,其他用戶均不具備使用正常路徑名訪問(wèn)權(quán)限,然后再進(jìn)行路徑解析。(2)當(dāng)使用隨機(jī)化后路徑名時(shí),為不影響進(jìn)程正常運(yùn)行,需要在解析路徑名時(shí),加入對(duì)已隨機(jī)化的文件名進(jìn)行解密處理(aes_decrypt)。當(dāng)路徑解析時(shí),path指向當(dāng)前目錄,假設(shè)NAME為要解析的子路徑名,首先要對(duì)NAME進(jìn)行解密,得出普通Linux文件系統(tǒng)能夠識(shí)別的name,再根據(jù)當(dāng)前目錄名為name的dentry,進(jìn)行正常的路徑解析,直至路徑名解析完畢。其流程如圖3所示。此過(guò)程是對(duì)進(jìn)程透明的,進(jìn)程并不知道其解密過(guò)程及密鑰位置。
圖3 MNTRand對(duì)文件名/目錄進(jìn)行解密
通過(guò)修改Linux內(nèi)核3.14.70版本實(shí)現(xiàn)了基于MNT名字空間隨機(jī)化的原型系統(tǒng),簡(jiǎn)記為MNTRAND,修改編譯后生成的64位內(nèi)核在Debian GNU/Linux x86_64上正常運(yùn)行。
網(wǎng)絡(luò)攻擊過(guò)程一般分為:系統(tǒng)掃描、目標(biāo)檢測(cè)、系統(tǒng)訪問(wèn)、提升特權(quán)、竊取信息、創(chuàng)建后門(mén)、蹤跡隱藏和損壞系統(tǒng)等。目標(biāo)檢測(cè)、系統(tǒng)訪問(wèn)、提升特權(quán)和竊取信息可重復(fù)多次,其中,目標(biāo)檢測(cè)和信息竊取是攻擊過(guò)程中的關(guān)鍵環(huán)節(jié),它關(guān)系到系統(tǒng)訪問(wèn)和特權(quán)提升的成功與否。
假設(shè)一個(gè)完整的網(wǎng)絡(luò)攻擊形式化過(guò)程有n步,記為序組:<CH1,CH2,CH3,…,CHn-1,CHn>。
網(wǎng)絡(luò)攻擊鏈代表了攻擊者實(shí)施攻擊步驟的狀態(tài)轉(zhuǎn)移,直觀描述為如下:
由于目標(biāo)對(duì)網(wǎng)絡(luò)和系統(tǒng)的防護(hù)以及攻擊者受到自身技術(shù)水平的限制,攻擊者發(fā)起一次網(wǎng)絡(luò)攻擊時(shí),其處于攻擊鏈某個(gè)分量狀態(tài)將依一定的概率成功,如果該概率為零,將視其為攻擊失敗。在此,假設(shè)網(wǎng)絡(luò)攻擊鏈的各個(gè)狀態(tài)是相互獨(dú)立的。
(1)網(wǎng)絡(luò)攻擊鏈CH的成功概率
對(duì)1≤i≤N,設(shè)CH的狀態(tài)CHi成功的概率為pi,即攻擊者完成該步驟的成功概率。由于攻擊鏈各個(gè)狀態(tài)是相互獨(dú)立的,各個(gè)狀態(tài)均成功的總概率為各pi之積,稱(chēng)之為網(wǎng)絡(luò)攻擊鏈CH的成功概率P(CH)=p1p2…pn。若P(CH)=0,稱(chēng)為網(wǎng)絡(luò)攻擊鏈斷裂,此時(shí)必存在某個(gè)1≤k≤n使得pk=0。
(2)文件名/目錄隨機(jī)化后攻擊成功概率
文件名/目錄隨機(jī)化后,其文件名及目錄發(fā)生了隨機(jī)改變,與傳統(tǒng)名字空間內(nèi)的文件及目錄不同,在一定時(shí)間內(nèi)攻擊者獲取發(fā)起攻擊所需的目標(biāo)系統(tǒng)知識(shí)減少或獲取目標(biāo)信息的復(fù)雜度增加,對(duì)1≤i≤N,設(shè)CH的狀態(tài)CHi成功的概率為因此在攻擊鏈中各狀態(tài)的成功概率網(wǎng)絡(luò)攻擊鏈CH的成功概率Pσ(CH)=,則網(wǎng)絡(luò)攻擊鏈CH的成功概率滿足:
因此,基于MNT名字空間的文件名/目錄隨機(jī)化,能有效減少網(wǎng)絡(luò)攻擊的成功率。
本測(cè)試基于Linux kernel 3.14.70,漏洞掃描工具為lynis[15],其中,基于MNTRand系統(tǒng)分為使用授權(quán)普通用戶和非授權(quán)用戶兩種進(jìn)行操作。測(cè)試結(jié)果如表2所示。
表2 lynis測(cè)試結(jié)果
分析其掃描日志文件(lynis.log)可以發(fā)現(xiàn),lynis是使用絕對(duì)路徑或在枚舉目錄找到目標(biāo)文件的。使用授權(quán)用戶的基于MNT名字空間文件名/目錄隨機(jī)化的33個(gè)建議中,4個(gè)是調(diào)用枚舉目錄命令,找不到相應(yīng)的文件而發(fā)生的建議,11個(gè)是基于絕對(duì)路徑的掃描,但權(quán)限拒絕(Permission denied),建議使用根用戶;減少的7個(gè)警告中,4個(gè)是基于絕對(duì)路徑名,權(quán)限拒絕,改為建議,另外3個(gè)雖然也是權(quán)限拒絕,但沒(méi)有報(bào)任何警告或建議?;诜鞘跈?quán)的用戶無(wú)法使用絕對(duì)路徑名而發(fā)生錯(cuò)誤。目前,攻擊者一般都采用絕對(duì)路徑掃描找到相關(guān)敏感文件,而基于MNT名字空間文件名/目錄隨機(jī)化,禁止了非授權(quán)用戶采用固定路徑打開(kāi)文件,截?cái)嗔斯翩?,即所以,基于MNT名字空間文件名/目錄隨機(jī)化可以防御掃描攻擊。
本測(cè)試選用Spec CPU 2006測(cè)試集[16]進(jìn)行測(cè)試,測(cè)試結(jié)果如表3所示。通過(guò)測(cè)試集中的12個(gè)測(cè)試程序可以發(fā)現(xiàn),MNTRand增加的運(yùn)行開(kāi)銷(xiāo)約1.82%,平均只有17 ms,最多只有50 ms,對(duì)程序運(yùn)行有限。分析測(cè)試結(jié)果,其開(kāi)銷(xiāo)主要是集中在AES加解密上。但因Linux文件名/目錄比較少,即需要加密的對(duì)象有限,故增加的性能開(kāi)銷(xiāo)較少。
Linux提出的“一切皆文件”,而某些文件泄露出的信息是危險(xiǎn)的,它將帶來(lái)一些安全問(wèn)題。本文提出的基于MNT名字空間文件名/目錄隨機(jī)化,相當(dāng)于給文件名/目錄上加上mask,有針對(duì)性地加強(qiáng)可能泄露敏感信息的文件名/目錄的防護(hù),能夠有效抵御漏洞掃描工具諸如枚舉目錄命令的攻擊和特定文件攻擊,且只有很低的性能開(kāi)銷(xiāo)?;贛NT名字空間文件名/目錄隨機(jī)化不僅可以用于容器環(huán)境,也可以應(yīng)用于主機(jī)需要隔離進(jìn)程的環(huán)境。未來(lái),將在MNTRand系統(tǒng)上安裝LXC或Docker,根據(jù)近年來(lái)暴漏出的漏洞進(jìn)一步驗(yàn)證其防護(hù)效果。
表3 SPEC測(cè)試集測(cè)試結(jié)果s
[1] Docker.Docker CVE database[EB/OL].(2017).https://www.docker.com/docker-cve-database.
[2] Bui T.Analysis of docker security[J].Computer Science,2015.
[3] Merkel D.Docker:Lightweight Linux containers for consistent development and deployment[J].Linux Journal,2014,2014(239).
[4] LinuxContainers.org.What’s LXCFS?[EB/OL].(2016-12).https://linuxcontainers.org/lxcfs.
[5] Wikipedia.Copy-on-write[EB/OL].(2016-08-14).https://en.wikipedia.org/wiki/Copy-on-write.
[6] 郭俊浩,李海燕.AES加密算法在Linux文件系統(tǒng)中的設(shè)計(jì)與研究[J].信息網(wǎng)絡(luò)安全,2009(3):25-28.
[7] Wikipedia.Linux namespace[EB/OL].(2016-08-02).https://en.wikipedia.org/wiki/Linux_namespaces.
[8] Rosen R.Resource management:Linux kernel namespace and cgroups[EB/OL].(2013).http://www.cs.ucsb.edu/~rich/class/cs293b-cloud/papers/lxc-namespace.pdf.
[9] Grattafiori A.Understanding and hardening Linux containers[R].NCC Group Whitepaper,2016-04-20.
[10] Kulikov V.CVE Request—kernel:sysctl:restrict write access to dmesg_restrict[EB/OL].(2011-10-26).http://seclists.org/oss-sec/2011/q4/155.
[11] Mónica D.Adding sched_debug to the masked paths list[EB/OL].(2016-03-17).https://github.com/docker/docker/pull/21263.
[12] Donenfeld J A.CVE-2012-0056:Linux local privilege escalation via SUID/proc/pid/mem write[EB/OL].(2012-01-21).https://git.zx2c4.com/CVE-2012-0056.
[13] Horn J.CVE-2015-2925:Linux namespaces:It is possible to escape from bind mounts[EB/OL].(2015-04).http://www.openwall.com/lists/oss-security/2015/04/03/7.
[14] 郭玉東,尹青,董衛(wèi)宇.Linux原理與結(jié)構(gòu)[M].西安:西安電子科技大學(xué)出版社,2012-03:282-310.
[15] Boelen M.Lynis[EB/OL].(2016-04-12).https://cisofy.com/lynis/.
[16] Henning J L.SPEC CPU2006 benchmark descriptions[J].ACM Sigarch Computer Architecture News,2006,34(4):1-17.
WEI Xiaofeng,GUO Yudong,LIN Jian.Hardening technology for container file system based on MNT namespace randomization.Computer Engineering andApplications,2018,54(6):81-85.
WEI Xiaofeng,GUO Yudong,LIN Jian
State Key Laboratory of Mathematical Engineering and Advanced Computing,Information Engineering University,Zhengzhou 450001,China
As a virtualization technology of operating system layer,container is widely considered to be the top resources utilization rate virtualization method,MNT name space is an important technology for container file system isolation,but procfs and sysfs file system does not support namespace,there is the risk of information leakage.In view of the insufficiency of MNT name space,this paper puts forward and realizes the randomization of MNT name space.The work process is created by modifying the Linux MNT namespace,AES encryption methods are used for filename/directory processing,using the name space can see the process of fuzzy file directory tree,shielding of the directory.The experimental results show that the method can effective prevent scanning software from attacking on enumeration directory and specific sensitive files,and performance loss is small,only increases about 1.82%of the operating expenses.
container;mount namespace(MNT namespace);filename encryption;randomization
容器作為一種操作系統(tǒng)層的虛擬化技術(shù),被廣泛認(rèn)為是資源使用率最高的虛擬化方法,而MNT名字空間是容器實(shí)現(xiàn)文件系統(tǒng)隔離的重要技術(shù),但procfs和sysfs等文件系統(tǒng)不支持名字空間,存在信息泄漏的風(fēng)險(xiǎn)。針對(duì)MNT名字空間存在的不足,提出并實(shí)現(xiàn)了基于MNT名字空間隨機(jī)化,通過(guò)修改Linux的MNT名字空間創(chuàng)建及工作過(guò)程,對(duì)文件名/目錄使用AES加密方式進(jìn)行處理,使用名字空間內(nèi)的進(jìn)程只能看到模糊的文件目錄樹(shù),實(shí)現(xiàn)對(duì)目錄的屏蔽。實(shí)驗(yàn)結(jié)果表明,該方法能有效防護(hù)掃描軟件針對(duì)枚舉目錄和特定敏感文件的攻擊,而且性能損耗小,只增加約1.82%的運(yùn)行開(kāi)銷(xiāo)。
容器;MNT名字空間;文件名加密;隨機(jī)化
2016-11-02
2017-01-17
1002-8331(2018)06-0081-05
A
TP309.2
10.3778/j.issn.1002-8331.1611-0054
魏小鋒(1985—),男,碩士研究生,主要研究方向:信息安全;郭玉東(1964—),男,教授,主要研究方向:操作系統(tǒng)、虛擬化;林鍵(1989—),男,博士研究生,主要研究方向:信息安全。