樊佩茹,趙波,倪明濤,陳治宏
(武漢大學(xué)國(guó)家網(wǎng)絡(luò)安全學(xué)院空天信息安全與可信計(jì)算教育部重點(diǎn)實(shí)驗(yàn)室,湖北 武漢430072)
IaaS(infrastructure as a service)平臺(tái)為用戶(hù)提供高度集中、可動(dòng)態(tài)擴(kuò)展的計(jì)算存儲(chǔ)資源,是支撐云平臺(tái)上層服務(wù)PaaS(platform as a service)和SaaS(software as a service)的基礎(chǔ)。用戶(hù)通過(guò)按需租用降低業(yè)務(wù)部署與管理成本,但該云服務(wù)模式中用戶(hù)喪失了對(duì)存儲(chǔ)和運(yùn)行在云端數(shù)據(jù)及應(yīng)用的物理可見(jiàn)性與可控性,需要依賴(lài)IaaS平臺(tái)提供商(IPP,IaaS platform provider)部署安全防護(hù)措施[1]。然而,為避免遭到針對(duì)性攻擊,IPP提供商一般不愿意公開(kāi)IaaS節(jié)點(diǎn)的具體配置與安全信息,導(dǎo)致用戶(hù)對(duì)平臺(tái)缺乏信任,這已成為近年來(lái)云計(jì)算發(fā)展過(guò)程中遇到的一大阻礙。
對(duì)IaaS平臺(tái)做測(cè)試,衡量其能否達(dá)到用戶(hù)的性能或可信性需求,是增強(qiáng)用戶(hù)對(duì)平臺(tái)信心的一種有效方法。業(yè)界對(duì)IaaS平臺(tái)的需求進(jìn)行了一些研究和探討,也有服務(wù)等級(jí)協(xié)議SLA等用于定義平臺(tái)質(zhì)量或性能指標(biāo),但由于目前缺乏綜合統(tǒng)一的云測(cè)試或評(píng)估標(biāo)準(zhǔn)[2,3],在對(duì) IaaS平臺(tái)信任或可信性的理解上仍然存有分歧[4,5]。文獻(xiàn)[6]在綜合考慮可用性、可靠性與安全性等多項(xiàng)屬性的基礎(chǔ)上,給出一種云平臺(tái)可信性的定義,認(rèn)為云平臺(tái)的各項(xiàng)可信屬性均是在其提供服務(wù)過(guò)程中不同組件動(dòng)態(tài)執(zhí)行的表現(xiàn)。因此,對(duì)IaaS平臺(tái)執(zhí)行可信性測(cè)試任務(wù)時(shí),可分解為對(duì)該平臺(tái)各項(xiàng)可信屬性的測(cè)試。應(yīng)用基于可信第三方 TTP(trusted third party)的云測(cè)試模型[7~10]到IaaS平臺(tái)中時(shí),在IaaS平臺(tái)上收集數(shù)據(jù)的測(cè)試代理程序(agent)由TTP與IPP聯(lián)合部署。在整個(gè)測(cè)試過(guò)程中,IaaS平臺(tái)為支撐上層PaaS或SaaS服務(wù)運(yùn)行的用戶(hù)虛擬機(jī)將正常工作,該測(cè)試過(guò)程對(duì)用戶(hù)虛擬機(jī)而言是透明的。針對(duì)這種IaaS平臺(tái)測(cè)試環(huán)境,考慮 agent運(yùn)行在 IaaS節(jié)點(diǎn)虛擬化軟件棧層的場(chǎng)景,agent負(fù)責(zé)從節(jié)點(diǎn)上收集可反映測(cè)試指標(biāo)的測(cè)試數(shù)據(jù)并傳輸?shù)絋TP做進(jìn)一步分析。在這個(gè)測(cè)試過(guò)程中,agent自身的可信性是產(chǎn)生真實(shí)有效測(cè)試數(shù)據(jù)的基礎(chǔ),直接關(guān)系到 IaaS平臺(tái)測(cè)評(píng)結(jié)果的正確性?,F(xiàn)有工作主要關(guān)注如何從IaaS平臺(tái)獲取測(cè)試數(shù)據(jù)和如何基于平臺(tái)各項(xiàng)指標(biāo)的測(cè)試數(shù)據(jù)給出綜合評(píng)估,并已有部分成果[11],但總體來(lái)看,在IaaS平臺(tái)上部署測(cè)試代理程序agent時(shí)仍存在以下問(wèn)題和挑戰(zhàn)。
1) 在IaaS節(jié)點(diǎn)上執(zhí)行測(cè)試任務(wù)的agent缺乏有效的保護(hù)機(jī)制。這就導(dǎo)致agent在不可信運(yùn)行狀態(tài)下產(chǎn)生的錯(cuò)誤或虛假測(cè)試數(shù)據(jù)仍能被 TTP接受,IaaS平臺(tái)最終的測(cè)試評(píng)估結(jié)果將受到干擾,使TTP無(wú)法對(duì) IaaS平臺(tái)存在的問(wèn)題采取及時(shí)的應(yīng)對(duì)措施以止損,也無(wú)法為用戶(hù)提供公平公正的選擇依據(jù)。
2) 現(xiàn)有虛擬化環(huán)境中的軟件保護(hù)技術(shù)無(wú)法直接應(yīng)用到IaaS平臺(tái)的agent保護(hù)場(chǎng)景中。IaaS平臺(tái)支持著上層PaaS和SaaS的用戶(hù)服務(wù),在上線(xiàn)運(yùn)行后其可用性與可靠性是IPP非常重視的要素,但當(dāng)前虛擬化環(huán)境中的軟件保護(hù)技術(shù)需要被保護(hù)軟件所在主機(jī)提供額外的硬件或軟件支持,這將大幅增加建立IaaS平臺(tái)測(cè)試環(huán)境的成本,在實(shí)際生產(chǎn)環(huán)境中并不容易實(shí)現(xiàn)。
實(shí)際上,考慮到agent將運(yùn)行在不受TTP控制的IaaS節(jié)點(diǎn)上,IPP可能不得不假設(shè)一個(gè)強(qiáng)攻擊模型,即僅信任IaaS平臺(tái)的一小部分,并希望該平臺(tái)中被信任的部分越小越好。之前的研究表明,僅僅假設(shè)一個(gè)抗篡改的 CPU芯片可信是合理的[12],因此,在該假設(shè)下,本文提出一種適用于IaaS平臺(tái)的測(cè)試代理保護(hù)機(jī)制。結(jié)合IaaS平臺(tái)的特點(diǎn),首先,給出實(shí)現(xiàn)agent保護(hù)時(shí)應(yīng)達(dá)到的設(shè)計(jì)目標(biāo),明確其包括的具體內(nèi)容,以明確本文的技術(shù)依據(jù);然后,設(shè)計(jì)一個(gè) agent內(nèi)核態(tài)保護(hù)模塊(APKM,agent protection kernel module),作為在IaaS節(jié)點(diǎn)上實(shí)施agent完整性與命令正確性驗(yàn)證組件的宿主,對(duì)agent進(jìn)行保護(hù),并制作可信性狀態(tài)報(bào)告作為T(mén)TP判斷 agent可信性的依據(jù),APKM自身的完整性由現(xiàn)代x86計(jì)算機(jī)架構(gòu)可形成的內(nèi)存鎖機(jī)制提供保護(hù),不需要TTP提供額外硬件或軟件組件的支持;最后,設(shè)計(jì)一種基于質(zhì)詢(xún)的 APM 有效性驗(yàn)證方法,可及時(shí)發(fā)現(xiàn)失效APM所在的IaaS節(jié)點(diǎn)以止損,盡可能減少不可信 agent產(chǎn)生錯(cuò)誤虛假數(shù)據(jù)混淆TTP分析判斷的可能,提高IaaS平臺(tái)測(cè)試結(jié)果的可靠性。
本文的貢獻(xiàn)在于提出了適用于現(xiàn)有 IaaS平臺(tái)的測(cè)試代理agent保護(hù)技術(shù),在兼顧平臺(tái)可用性和可靠性需求的基礎(chǔ)上,不需要TTP與IaaS平臺(tái)提供額外軟硬件組件支持即可達(dá)到保護(hù)agent可信性的目標(biāo),解決了IaaS平臺(tái)中不可信agent產(chǎn)生錯(cuò)誤虛假數(shù)據(jù)干擾測(cè)試評(píng)估結(jié)果的問(wèn)題。
業(yè)界及相關(guān)機(jī)構(gòu)在云平臺(tái)測(cè)試方面開(kāi)展了部分研究工作,King 等[7]針對(duì)云服務(wù)開(kāi)發(fā)測(cè)試腳本,對(duì)云平臺(tái)的自動(dòng)化自檢測(cè)試進(jìn)行研究。Zech等[8]將風(fēng)險(xiǎn)分析結(jié)果與安全測(cè)試相結(jié)合,提出一種基于模型驅(qū)動(dòng)的云環(huán)境安全測(cè)試方法。Khan等[9]設(shè)計(jì)部署一個(gè)基于可信第三方的完整性驗(yàn)證端TIV,驗(yàn)證云平臺(tái)中物理節(jié)點(diǎn)的可信性。Pham 等[10]提出了一個(gè)軟件測(cè)試框架CloudVal,驗(yàn)證云平臺(tái)虛擬化環(huán)境的可信性。謝亞龍等[13]分析了云取證技術(shù)所面臨的挑戰(zhàn),并提出一種IaaS云模型下的取證框架ICFF。此外,也有一些項(xiàng)目組研究云平臺(tái)可信屬性的測(cè)試與認(rèn)證。ASSERT4SOA項(xiàng)目[14]針對(duì)面向服務(wù)的分布式應(yīng)用程序提供新工具和技術(shù),可評(píng)估、認(rèn)證它們的安全屬性。CUMMULUS項(xiàng)目[15]擴(kuò)展了ASSERT4SOA的工作,為云平臺(tái)安全認(rèn)證提供一個(gè)包含可信第三方的新框架,以在云用戶(hù)、云平臺(tái)提供商、云服務(wù)提供商和認(rèn)證機(jī)構(gòu)的合作下確保云平臺(tái)中各項(xiàng)安全屬性認(rèn)證結(jié)果的有效性。CloudSec項(xiàng)目[16]提出一個(gè)包含云平臺(tái)提供商安全需求的校驗(yàn)表,并根據(jù)該校驗(yàn)表對(duì)云平臺(tái)各項(xiàng)安全屬性進(jìn)行審計(jì)。但上述云平臺(tái)可信性認(rèn)證或測(cè)試方案中,重點(diǎn)關(guān)注了如何獲取反映云平臺(tái)可信性狀態(tài)的測(cè)試數(shù)據(jù)和對(duì)云平臺(tái)計(jì)算出合理的可信性評(píng)估結(jié)果,這些研究為進(jìn)一步增強(qiáng)用戶(hù)對(duì)云平臺(tái)提供了理論指導(dǎo)和現(xiàn)實(shí)基礎(chǔ),但對(duì)如何保護(hù) agent的可信性討論較少。
在基于TTP的IaaS平臺(tái)測(cè)試環(huán)境中,agent本質(zhì)上是由TTP與IPP聯(lián)合部署在IaaS節(jié)點(diǎn)虛擬化軟件棧層(hypervisor)的測(cè)試軟件。目前,針對(duì)該類(lèi)軟件的保護(hù)方法可分為2類(lèi)。1) 硬件輔助實(shí)現(xiàn)軟件保護(hù)。文獻(xiàn)[17,18]基于可信硬件 TPM 保護(hù)軟件的可信性。文獻(xiàn)[19]基于TPCM設(shè)計(jì)了針對(duì)云平臺(tái)的可信證據(jù)收集方案。TapCon[20]提出一種基于可信第三方的云服務(wù)可信性驗(yàn)證方法,利用 SGX技術(shù)保證軟件的可信執(zhí)行。Royan[21]提出一種分布式沙箱,使運(yùn)行在 SGX中的應(yīng)用程序不會(huì)遭受來(lái)自云平臺(tái)的攻擊。將這類(lèi)硬件輔助實(shí)現(xiàn)的軟件保護(hù)技術(shù)應(yīng)用于agent可信性保護(hù)時(shí),需要IPP為接受測(cè)試的IaaS節(jié)點(diǎn)提供額外的可信硬件,并需要TTP對(duì)agent進(jìn)行相應(yīng)修改以適應(yīng)該硬件,這會(huì)同時(shí)增加建立IaaS平臺(tái)測(cè)試環(huán)境時(shí)IPP與TTP的部署成本,在實(shí)際生產(chǎn)環(huán)境中并不容易實(shí)現(xiàn)。2) 基于可信虛擬化軟件棧提供保護(hù)。文獻(xiàn)[22,23]通過(guò)修改hypervisor軟件代碼設(shè)計(jì)程序隔離方案,保證agent代碼的完整性。HyperSafe[24]針對(duì)hypervisor控制流完整性提出全生命周期的自保護(hù)方案,但該方案需要修改hypervisor代碼并重啟主機(jī),會(huì)對(duì)云平臺(tái)服務(wù)造成經(jīng)濟(jì)損失。HyperCheck[25]和 HyperSentry[26]通過(guò)驗(yàn)證完整性實(shí)時(shí)保證hypervisor不被篡改,防范rootkit等攻擊,但該類(lèi)方案利用了 SMM 機(jī)制,而 SMM機(jī)制自身存在局限性,需在操作時(shí)凍結(jié)所有 CPU核,會(huì)為IaaS平臺(tái)帶來(lái)巨大的性能損耗??尚艈?dòng)[27]能夠保證hypervisor啟動(dòng)時(shí)的安全性,但無(wú)法解決hypervisor運(yùn)行時(shí)的安全問(wèn)題。文獻(xiàn)[28]為安全敏感型應(yīng)用提供了一個(gè)安全執(zhí)行環(huán)境 APPSec,根據(jù)應(yīng)用程序的意圖保護(hù)用戶(hù)的私有數(shù)據(jù)和人機(jī)交互數(shù)據(jù),但它需要一個(gè)特定隔離專(zhuān)用操作系統(tǒng)的支持。CQSTR[29]針對(duì) IaaS平臺(tái)上的虛擬機(jī)集群提出一種可運(yùn)行服務(wù)的云容器,以利于TTP判斷運(yùn)行在該容器中服務(wù)的安全性。對(duì)第2類(lèi)技術(shù),考慮到當(dāng)前虛擬化軟件棧隨著功能的增強(qiáng),其代碼量越來(lái)越大,要對(duì)硬件資源進(jìn)行管理和分配,也有與虛擬機(jī)進(jìn)行頻繁交互,擁有著巨大的攻擊面,且虛擬化軟件棧自身存著在許多已知或未知的漏洞,在被攻擊者利用時(shí),該類(lèi)保護(hù)技術(shù)就會(huì)失效。因此,當(dāng)構(gòu)建基于TTP的IaaS平臺(tái)測(cè)試環(huán)境時(shí),現(xiàn)有技術(shù)無(wú)法直接應(yīng)用到agent的可信性保護(hù)中。
基于TTP的IaaS平臺(tái)測(cè)試環(huán)境中,運(yùn)行在IaaS節(jié)點(diǎn)虛擬化軟件棧層的agent面臨著極大的安全威脅。攻擊者可以借助受控虛擬機(jī)發(fā)起逃逸攻擊,獲取物理節(jié)點(diǎn)虛擬化軟件棧的控制權(quán)限,進(jìn)而篡改測(cè)試代理程序agent并偽造測(cè)試數(shù)據(jù)以欺騙TTP,隱瞞該節(jié)點(diǎn)已遭到破壞的事實(shí)。因此,本文假設(shè)一種強(qiáng)攻擊模型,攻擊者可以利用IaaS平臺(tái)虛擬化軟件棧的漏洞或虛擬機(jī)的錯(cuò)誤配置嘗試寫(xiě)入物理節(jié)點(diǎn)內(nèi)存的任意位置,但為了成功發(fā)起一次攻擊,攻擊者不得不注入惡意代碼或錯(cuò)誤利用已有代碼,如ROP或 JOP攻擊[30]。注意本文威脅模型不考慮側(cè)信道攻擊,如緩存?zhèn)刃诺馈r(shí)間側(cè)信道或內(nèi)存總線(xiàn)側(cè)信道等,因?yàn)楫?dāng)前該類(lèi)攻擊在IaaS平臺(tái)的復(fù)雜計(jì)算環(huán)境下實(shí)現(xiàn)極其困難[31];也不考慮對(duì)IaaS節(jié)點(diǎn)擁有物理權(quán)限而采取的攻擊,如 BIOS木馬[32]或冷啟動(dòng)攻擊[33]等,因?yàn)樵趯?shí)際運(yùn)營(yíng)時(shí),IPP不會(huì)分配這種具備所有權(quán)限的管理員,并會(huì)采取嚴(yán)格的訪(fǎng)問(wèn)控制策略保護(hù)平臺(tái)物理設(shè)備[34]??紤]到攻擊發(fā)生在基于TTP的IaaS平臺(tái)測(cè)試環(huán)境中,攻擊的隱蔽性是攻擊者考慮的第一要素,攻擊者最希望達(dá)成的目標(biāo)是,控制IaaS節(jié)點(diǎn),破壞agent并篡改測(cè)試數(shù)據(jù),欺騙TTP為一個(gè)已經(jīng)遭到破壞的平臺(tái)給出正常的測(cè)試評(píng)估結(jié)果,而在整個(gè)過(guò)程中,TTP與IPP均無(wú)法察覺(jué)到該攻擊。因此,本文不考慮攻擊者采用拒絕服務(wù)等容易被檢測(cè)到的手段進(jìn)行破壞的情況。
在基于TTP的IaaS平臺(tái)測(cè)試中,考慮到以上攻擊模型時(shí),所提agent可信性保護(hù)機(jī)制APM應(yīng)滿(mǎn)足以下4個(gè)設(shè)計(jì)目標(biāo)。
1) 支持agent的完整性保護(hù)。支持在agent啟動(dòng)時(shí)和運(yùn)行過(guò)程中的完整性驗(yàn)證,在發(fā)現(xiàn)agent完整性被破壞時(shí)及時(shí)通知TTP與IPP采取應(yīng)對(duì)措施。
2) 確保agent執(zhí)行命令的正確性。在agent運(yùn)行過(guò)程中能驗(yàn)證其執(zhí)行命令的正確性,只有通過(guò)正確性驗(yàn)證的命令才會(huì)被執(zhí)行。
3) 支持agent的更新與擴(kuò)展。APM應(yīng)在不依賴(lài)其他任何特殊軟硬件支持的情況下達(dá)到保護(hù) agent可信性的目的,同時(shí)最小化對(duì)節(jié)點(diǎn)虛擬化軟件棧的修改,并最小化對(duì)平臺(tái)運(yùn)行的影響。對(duì)IaaS平臺(tái)做測(cè)試時(shí),一般采用多個(gè)指標(biāo)進(jìn)行評(píng)估,且出于對(duì)軟件可維護(hù)性的考慮,部署到節(jié)點(diǎn)上的agent可能要進(jìn)行不定時(shí)更新,因此,需要保證APM支持agent的更新與擴(kuò)展。
4) 支持APM的有效性驗(yàn)證。TTP與IPP應(yīng)能在任意時(shí)刻發(fā)起質(zhì)詢(xún)并驗(yàn)證APM的有效性以及時(shí)發(fā)現(xiàn)APM被破壞的情形,并采取應(yīng)對(duì)措施。
將基于TTP的云測(cè)試模型應(yīng)用到IaaS平臺(tái)測(cè)試時(shí),APM通過(guò)在IaaS節(jié)點(diǎn)內(nèi)核空間增加一個(gè)APKM為其提供保護(hù),具體APM的結(jié)構(gòu)如圖1所示。
圖1中實(shí)線(xiàn)箭頭表示傳統(tǒng)基于TTP的IaaS平臺(tái)測(cè)試執(zhí)行流程①~③。Agent從測(cè)試對(duì)象集合收集測(cè)試數(shù)據(jù)并發(fā)送到TTP,TTP對(duì)測(cè)試數(shù)據(jù)進(jìn)行綜合分析給出評(píng)估結(jié)果,其中,測(cè)試對(duì)象是IaaS節(jié)點(diǎn)上影響平臺(tái)指標(biāo)的資源。由于本文重點(diǎn)不在于研究如何從被測(cè)對(duì)象上獲取反映指標(biāo)的測(cè)試數(shù)據(jù),所以這里不對(duì)測(cè)試對(duì)象集合及測(cè)試指標(biāo)做詳細(xì)討論。
圖1 APM結(jié)構(gòu)示意
圖1 中點(diǎn)線(xiàn)箭頭表示引入本文APM后新增的執(zhí)行流程①~④。利用APKM對(duì)agent實(shí)施保護(hù),APKM自身的完整性由x86計(jì)算機(jī)架構(gòu)可形成的內(nèi)存鎖機(jī)制提供保護(hù),內(nèi)存鎖機(jī)制的有效性依賴(lài)于IaaS節(jié)點(diǎn)控制寄存器CR0中寫(xiě)保護(hù)位WP狀態(tài)的正確性,然后以WP的置位正確性為起點(diǎn),將信任關(guān)系擴(kuò)展到 APKM,再到 agent,從而保證從節(jié)點(diǎn)上獲取測(cè)試數(shù)據(jù)的可信性。由于部署在節(jié)點(diǎn)上負(fù)責(zé)具體測(cè)試任務(wù)的agent會(huì)根據(jù)被測(cè)指標(biāo)的不同而變化,保存在A(yíng)PKM中與agent相關(guān)的預(yù)存數(shù)據(jù)也需要隨之進(jìn)行更新,這就要求存在一種APKM數(shù)據(jù)的動(dòng)態(tài)更新機(jī)制④,使其支持 agent的更新與擴(kuò)展。圖 1只展示了一個(gè)IaaS節(jié)點(diǎn)上的APM結(jié)構(gòu),實(shí)際在構(gòu)建IaaS平臺(tái)測(cè)試環(huán)境時(shí),TTP與IPP每個(gè)IaaS節(jié)點(diǎn)上都將部署APM。APKM驗(yàn)證agent的完整性和執(zhí)行命令的正確性后,將該驗(yàn)證結(jié)果記錄到 agent可信性狀態(tài)報(bào)告中;TTP與IPP也將周期性地或在任意時(shí)刻發(fā)起對(duì)節(jié)點(diǎn)控制寄存器CR0中WP置位狀態(tài)的質(zhì)詢(xún),獲得WP狀態(tài)質(zhì)詢(xún)結(jié)果。該質(zhì)詢(xún)結(jié)果和agent可信性狀態(tài)報(bào)告都將作為T(mén)TP判斷測(cè)試數(shù)據(jù)可信性的依據(jù)。
接下來(lái),分別對(duì)APM架構(gòu)中涉及的關(guān)鍵方法進(jìn)行做進(jìn)一步描述。
內(nèi)核態(tài)模塊APKM 的完整性依賴(lài)于現(xiàn)代 Intel x86架構(gòu)可形成的內(nèi)存鎖機(jī)制[35]提供保護(hù),關(guān)鍵在于實(shí)現(xiàn)APKM的正確初始化,本文假設(shè)TTP與IPP在IaaS節(jié)點(diǎn)上聯(lián)合加載APKM時(shí),其初始環(huán)境可信,一切攻擊都發(fā)生在A(yíng)PKM加載完成后的任意時(shí)刻。APKM被載入IaaS節(jié)點(diǎn)內(nèi)核內(nèi)存空間后,首先標(biāo)記 APKM 代碼與靜態(tài)數(shù)據(jù)所在的內(nèi)存頁(yè)面為只讀的寫(xiě)保護(hù)屬性,標(biāo)記APKM內(nèi)存頁(yè)的頁(yè)表項(xiàng)所在頁(yè)表頁(yè)為只讀的寫(xiě)保護(hù)屬性,然后打開(kāi)IaaS節(jié)點(diǎn)控制寄存器CR0中的寫(xiě)保護(hù)位WP(將WP位置1),此時(shí),完成了APKM的初始化工作,基于內(nèi)存鎖機(jī)制的APKM保護(hù)技術(shù)開(kāi)始生效。在此后的任意運(yùn)行時(shí)刻,只要WP位保持打開(kāi)狀態(tài),任何對(duì)APKM代碼與靜態(tài)數(shù)據(jù)的寫(xiě)操作都將遭到拒絕,這就保護(hù)了APKM的完整性不會(huì)被破壞。
APKM 負(fù)責(zé)度量和校驗(yàn) agent啟動(dòng)時(shí)與運(yùn)行時(shí)的完整性,它必然擁有預(yù)先記錄的 agent在可信環(huán)境中啟動(dòng)與運(yùn)行時(shí)的完整性度量結(jié)果作為基準(zhǔn)值。但根據(jù)IaaS平臺(tái)測(cè)試指標(biāo)的不同,負(fù)責(zé)具體測(cè)試任務(wù)的 agent時(shí)常面臨升級(jí)或變更情形,這就要求同時(shí)對(duì)APKM中agent的基準(zhǔn)值進(jìn)行更新;此外,隨著時(shí)間的推移,TTP也可能存在升級(jí) APKM 的需求。但受到內(nèi)存鎖機(jī)制保護(hù)的APKM 將拒絕任何對(duì)其受保護(hù)內(nèi)存頁(yè)面的寫(xiě)操作,無(wú)論這個(gè)寫(xiě)操作是正常請(qǐng)求還是惡意篡改,也無(wú)論發(fā)起該操作的是普通用戶(hù)或是系統(tǒng)管理員,這就為APKM的正常更新造成困難。本文采用原子更新操作解決該問(wèn)題,當(dāng)修改APKM中的代碼與數(shù)據(jù)時(shí),先短暫將 WP位置 0,待完成寫(xiě)操作后,將 WP重新置 1,同時(shí)確保這整個(gè)更新操作是原子性的(不可被中斷),以避免攻擊者通過(guò)對(duì)該更新操作發(fā)起攻擊使 WP位永久置 0,導(dǎo)致APM失效。由于A(yíng)PKM代碼與靜態(tài)數(shù)據(jù)所在的內(nèi)存頁(yè)被設(shè)置為只讀的寫(xiě)保護(hù)屬性,任何對(duì)該頁(yè)面的寫(xiě)操作都將引發(fā)頁(yè)錯(cuò)誤中斷,因此,將APKM的原子更新操作寫(xiě)在頁(yè)錯(cuò)誤中斷函數(shù)內(nèi),同時(shí)將該函數(shù)所在內(nèi)存頁(yè)也設(shè)置寫(xiě)保護(hù)屬性。
根據(jù)上述解決思路,提出APKM初始化方法,實(shí)現(xiàn)部署APM的第一步,一旦完成APKM的初始化后,所有對(duì)APKM的操作都將被納入到內(nèi)存鎖機(jī)制的保護(hù)范疇,攻擊者無(wú)法通過(guò)攻擊APKM破壞APM機(jī)制,因而解決了APKM的完整性保護(hù)問(wèn)題。為更好地描述APKM完整性保護(hù)方法,使用符號(hào)表達(dá)其中涉及的操作,如表 1、算法 1和算法2所示。
表1 符號(hào)釋義1
算法1 APKM的初始化
1) 加載APKM模塊到系統(tǒng)內(nèi)核空間
2) LOCK[PT(APKM)]
3) LOCK[M(APKM)]
4) LOCK[M(Update)]
5) 置WP位為1
6) 啟動(dòng)APKM模塊使其正常工作
算法2 APKM的原子更新
1) 發(fā)送更新APKM模塊中的數(shù)據(jù)的命令
2) 觸發(fā)頁(yè)錯(cuò)誤處理函數(shù)
3) 調(diào)用更新函數(shù) M(Update)
4) 置WP位為0
5) 將數(shù)據(jù)寫(xiě)入 APKM模塊
6) 置WP位為1,重啟APKM模塊
算法2的步驟4)~步驟6)是對(duì)APKM的寫(xiě)保護(hù)操作,該過(guò)程被寫(xiě)入到修改APKM內(nèi)存頁(yè)時(shí)會(huì)觸發(fā)的頁(yè)錯(cuò)誤中斷函數(shù)中去,并被設(shè)置為不可中斷,以此防止任何針對(duì)該更新操作的攻擊。
TTP與IPP在IaaS節(jié)點(diǎn)上聯(lián)合部署APM時(shí),只要完成了APKM的正確初始化且保證WP位的置1狀態(tài),APKM的代碼與靜態(tài)數(shù)據(jù)就無(wú)法被隨意修改,它自身的完整性得到了保護(hù),因此,以APKM為信任基礎(chǔ),對(duì)agent實(shí)施保護(hù)是可行的。TCG組織[5]在可信規(guī)范中通過(guò)實(shí)體的完整性判斷其可信性,但采用完整性度量?jī)H能保證agent的完整性不被篡改,無(wú)法阻止agent執(zhí)行錯(cuò)誤命令,為解決這個(gè)問(wèn)題,本文還采用執(zhí)行命令的正確性驗(yàn)證方法校驗(yàn)agent行為的正確性,只有正確的命令將被允許執(zhí)行,錯(cuò)誤的命令將被拒絕。由于agent一般由TTP與IPP協(xié)商設(shè)計(jì)或選擇,很容易獲得它們?cè)诳尚怒h(huán)境中啟動(dòng)與運(yùn)行時(shí)的完整性度量值和命令正確執(zhí)行時(shí)的上下文數(shù)據(jù),這些將被事先計(jì)算獲得并作為靜態(tài)數(shù)據(jù)保存在A(yíng)PKM中,作為之后驗(yàn)證時(shí)調(diào)用的基準(zhǔn)值。
對(duì)agent的完整性驗(yàn)證采用APKM主動(dòng)發(fā)起周期性度量和響應(yīng)TTP與IPP的完整性度量請(qǐng)求2種方式,將計(jì)算獲得的完整性度量值與事先保存的完整性基準(zhǔn)值作比對(duì),相同則表示agent未受到破壞,不同則表示agent已遭到篡改,記錄該異常信息到agent的可信性狀態(tài)報(bào)告中,并及時(shí)通知TTP與IPP采取進(jìn)一步應(yīng)對(duì)措施;對(duì)agent的命令正確性驗(yàn)證采用檢查agent執(zhí)行命令時(shí)上下文數(shù)據(jù)(包括寄存器值、調(diào)用該命令的函數(shù)地址和該命令調(diào)用的函數(shù)地址等)的正確與否來(lái)完成,首先,提取agent在可信環(huán)境執(zhí)行某一命令時(shí)的上下文數(shù)據(jù);然后,當(dāng)agent在IaaS節(jié)點(diǎn)上執(zhí)行該命令時(shí),讀取運(yùn)行時(shí)IaaS節(jié)點(diǎn)的該類(lèi)數(shù)據(jù),并與事先保存的基準(zhǔn)值作比對(duì),相同則表示該命令正確,允許執(zhí)行,不同則表示該次執(zhí)行將被拒絕,這就確保了agent無(wú)法執(zhí)行除預(yù)定義正確命令之外的非法行為,保證了它運(yùn)行時(shí)的正確性。
APKM驗(yàn)證了agent的完整性和命令正確性后,將驗(yàn)證結(jié)果記錄到agent可信性狀態(tài)報(bào)告中并匯報(bào)給TTP與IPP,使二者可以及時(shí)了解agent的可信性狀態(tài)。agent可信性報(bào)告中包含 APKM 對(duì) agent的驗(yàn)證信息,包括驗(yàn)證類(lèi)型(完整性或命令正確性驗(yàn)證)、驗(yàn)證發(fā)起者(APKM或相應(yīng)TTP與IPP的驗(yàn)證請(qǐng)求)、驗(yàn)證起止時(shí)刻、驗(yàn)證對(duì)象信息、驗(yàn)證結(jié)果等。
根據(jù)以上解決思路,提出agent完整性和命令正確性驗(yàn)證方法,防止遭到破壞的agent生成虛假測(cè)試數(shù)據(jù)混淆TTP對(duì)IaaS節(jié)點(diǎn)的測(cè)試結(jié)果,攻擊者也無(wú)法通過(guò)操縱agent代碼執(zhí)行非法命令來(lái)為自己謀得好處,因而實(shí)現(xiàn)了基于A(yíng)PKM對(duì)agent的保護(hù)。為更好地描述agent完整性和命令正確性驗(yàn)證方法,使用符號(hào)表達(dá)其中涉及的操作,如表 2、算法3和算法4所示。
表2 符號(hào)釋義2
算法3 Agent的完整性驗(yàn)證
1) 從TTP上下載agent程序
2) 計(jì)算agent靜態(tài)度量值StaticM(agent)
3) if (StaticM(agent)==StaticM-base)agent完好,跳轉(zhuǎn)步驟4)
else agent被破壞,跳轉(zhuǎn)步驟9)
4) 安裝agent到節(jié)點(diǎn)
5) 啟動(dòng)agent并運(yùn)行
6) 經(jīng)過(guò)時(shí)間周期T或收到來(lái)自TTP/IIP的度量請(qǐng)求后,對(duì)agent進(jìn)行動(dòng)態(tài)度量
7) 計(jì)算agent運(yùn)行時(shí)度量值 DynamicM(agent)
8) if (DynamicM(agent)=Dynamic-base)agent完好,跳轉(zhuǎn)步驟5)
else agent被破壞,跳轉(zhuǎn)步驟9)
9) 記錄agent異常狀態(tài)到Tlog中,警示 TTP和IIP
算法4 Agent的命令正確性驗(yàn)證
1) agent處于正常運(yùn)行狀態(tài)
2) 發(fā)送執(zhí)行命令到agent
3) 提取該時(shí)刻agent環(huán)境數(shù)據(jù)Env(command)
4) if (Env(command) ==Env-base)命令正常,跳轉(zhuǎn)步驟1)
else命令異常,跳轉(zhuǎn)步驟6)
5) 正常執(zhí)行該命令后,跳轉(zhuǎn)步驟1)
6) 記錄該異常命令到Tlog,警示TTP和IIP
本文采用agent完整性與命令正確性驗(yàn)證方法保護(hù)agent,實(shí)際上,當(dāng)對(duì)agent施加保護(hù)時(shí),還可以考慮采用其他軟件靜態(tài)或動(dòng)態(tài)度量技術(shù)[36~39]等,TTP與IPP可根據(jù)具體應(yīng)用場(chǎng)景在A(yíng)PM中添加更適合實(shí)際情況的agent可信性保護(hù)技術(shù)。
APM的有效性和保護(hù)APKM完整性的內(nèi)存鎖機(jī)制的正確性直接相關(guān),只有當(dāng)IaaS節(jié)點(diǎn)控制寄存器CR0中的WP置1時(shí),APM才能正確生效。在基于TTP的IaaS平臺(tái)測(cè)試環(huán)境中,部署APM后,APKM可以確保攻擊者無(wú)法在TTP與IPP毫無(wú)察覺(jué)的情況下破壞agent,也無(wú)法利用agent對(duì)IaaS節(jié)點(diǎn)造成進(jìn)一步破壞,但若攻擊者利用IaaS節(jié)點(diǎn)虛擬化軟件棧中的其他漏洞提取到ring0,將WP置0后破壞 APKM,APM 也無(wú)能為力。實(shí)際上,在這種攻擊場(chǎng)景中,一旦APM失效,即可認(rèn)為該IaaS節(jié)點(diǎn)已不再可信,因?yàn)橄到y(tǒng)中如果已經(jīng)存在有非TTP與IPP的用戶(hù)發(fā)送特權(quán)指令改變了CR0中WP的置位狀態(tài),那么可以推斷出該系統(tǒng)中一定已經(jīng)存在有攻擊者獲得了執(zhí)行該敏感特權(quán)指令的權(quán)限。
根據(jù)以上描述,本文提出一種基于質(zhì)詢(xún)的APM有效性驗(yàn)證方法,由TTP與IPP對(duì)APM所在IaaS節(jié)點(diǎn)發(fā)起周期性和隨機(jī)時(shí)刻的質(zhì)詢(xún),以獲得該節(jié)點(diǎn)上CR0中WP的置位狀態(tài);TTP也分析從上個(gè)質(zhì)詢(xún)時(shí)刻起到當(dāng)前質(zhì)詢(xún)時(shí)刻之間時(shí)段內(nèi)TTP與IPP所發(fā)送指令對(duì)WP置位狀態(tài)的影響,將質(zhì)詢(xún)結(jié)果與分析結(jié)果進(jìn)行對(duì)比,若一致,則認(rèn)為APM當(dāng)前正常生效;否則,認(rèn)為該節(jié)點(diǎn)上WP已發(fā)生異常反轉(zhuǎn),已存在有獲得了系統(tǒng)控制特權(quán)的未知用戶(hù),因此,有理由認(rèn)為該節(jié)點(diǎn)已經(jīng)受損,該異常情況將被及時(shí)匯報(bào)給TTP與IPP,以采取進(jìn)一步應(yīng)對(duì)措施。為更好地描述APM有效性驗(yàn)證方法,使用符號(hào)表達(dá)該技術(shù)中涉及的操作,如表3和算法5所示。
表3 符號(hào)釋義3
算法5 APM的有效性驗(yàn)證
1) APM機(jī)制正常運(yùn)行時(shí),在時(shí)刻Time(current)發(fā)起一次WP位狀態(tài)查詢(xún)
2) 讀取 WPbit的當(dāng)前狀態(tài)
3) TTP分析從上次運(yùn)行時(shí)刻Time(last) 到當(dāng)前時(shí)刻 Time(current)的所有命令,給出正確的WP置位狀態(tài)分析結(jié)果WPanalysis
4) if (WPbit=WPanalysis)
APM運(yùn)行完好,跳轉(zhuǎn)步驟1)
else
系統(tǒng)中存在有未知用戶(hù)執(zhí)行特權(quán)指令,該節(jié)點(diǎn)有很大概率已經(jīng)被破壞,跳轉(zhuǎn)步驟5)
5) 記錄該異常命令到Tlog,警示TTP和IIP
通過(guò)TTP和IPP發(fā)起的基于質(zhì)詢(xún)的APM有效性驗(yàn)證方法,能及時(shí)發(fā)現(xiàn)失效APM所在節(jié)點(diǎn)并止損,盡量減少不可信agent產(chǎn)生錯(cuò)誤虛假數(shù)據(jù)混淆TTP分析判斷的可能性,可有效提高IaaS平臺(tái)測(cè)試結(jié)果的準(zhǔn)確性。
Bell-LaPadula模型[40](BLP模型)是一種計(jì)算機(jī)安全模型,形式化定義了系統(tǒng)、系統(tǒng)狀態(tài)及狀態(tài)間的轉(zhuǎn)換規(guī)則,可以證明一個(gè)安全系統(tǒng),經(jīng)過(guò)一系列規(guī)則轉(zhuǎn)換后,仍是安全的。本文利用BLP模型對(duì)APM機(jī)制進(jìn)行建模,分析其安全性。APM機(jī)制中涉及的元素有:主體、客體、訪(fǎng)問(wèn)屬性、權(quán)限、請(qǐng)求、決定和系統(tǒng)狀態(tài),具體含義描述如下。
1) 主體集S= {s1,s2},其中,s1表示TTP或IIP,s2表示潛在攻擊者。
2) 客體集O={o1,o2},其中,o1表示APKM,o2表示用于執(zhí)行具體測(cè)試任務(wù)的應(yīng)用軟件。
3) 訪(fǎng)問(wèn)屬性集A={r,w,e},其中,r表示可讀,w表示可寫(xiě),e表示可執(zhí)行。
4) 權(quán)限集F= {f1,f2},其中,f1是主體權(quán)限函數(shù),f1(s)越大,s的訪(fǎng)問(wèn)權(quán)限越高,f2是客體權(quán)限函數(shù),f2(o)越大,o越不容易被訪(fǎng)問(wèn)。
5) 請(qǐng)求元素集RA={c,d},
由c(change,create),d(delete)組成,表示主體對(duì)客體可以執(zhí)行的操作請(qǐng)求。
6) 決定集D= {yes,no,error},表示APM機(jī)制對(duì)主體對(duì)客體所發(fā)起的一個(gè)操作請(qǐng)求的判斷結(jié)果。
7) 系統(tǒng)狀態(tài)集V= {v|v=(b,f)}=P(S×O×A×F),由所有狀態(tài)v=(b,f)組成,其中,b?(S× O ×A) ,f∈F。
8) 狀態(tài)轉(zhuǎn)移關(guān)系表示為W?R×D×V×V,一個(gè)系統(tǒng)由狀態(tài)轉(zhuǎn)移關(guān)系及初始狀態(tài)v0決定,其中,W表示主體對(duì)客體發(fā)起的一個(gè)操作請(qǐng)求被APM機(jī)制接受后系統(tǒng)安全狀態(tài)的變化, v0表示APM機(jī)制中系統(tǒng)的初始狀態(tài),即APKM進(jìn)行正確初始化后對(duì)M(APKM),PT(APKM)和M(Update)加鎖,且WP位置1的狀態(tài)。
根據(jù)BLP模型,得知APM機(jī)制滿(mǎn)足以下定義。
定義1 由狀態(tài)轉(zhuǎn)移關(guān)系W及初始狀態(tài) v0決定的系統(tǒng)是指集合
定義3 稱(chēng)(s,o,x)∈ S×O×A 滿(mǎn)足相對(duì)于F的安全性條件,當(dāng)且僅當(dāng)x =r 或x =w 且 f1(s)≥f2(o)時(shí),稱(chēng)(s,o,x)滿(mǎn)足 s c| F,否則,稱(chēng)(s,o,x)不滿(mǎn)足 s c| F。
定義4 當(dāng)狀態(tài) v=(b,F)為安全狀態(tài)時(shí),等價(jià)于所有的(s,o,x)∈b都滿(mǎn)足sc| F。
根據(jù)以上定義,可證明APM機(jī)制中存在以下3個(gè)定理。
定理1 APKM的完整性保護(hù)。當(dāng)且僅當(dāng)下列條件成立時(shí),內(nèi)核態(tài)模塊 APKM 的完整性得到保護(hù),任何主體對(duì)APKM的操作請(qǐng)求都將被拒絕。條件1) 系統(tǒng)正確初始化為 v0狀態(tài);條件2) WP=1。
證明 由條件1)可知,M(APKM),PT(APKM),M(Update)已加鎖,系統(tǒng)在該初始狀態(tài)下是安全的。
定理2 Agent的完整性和命令執(zhí)行正確性保護(hù)。當(dāng)且僅當(dāng)定理1成立時(shí),agent的完整性和命令正確性得到保護(hù),任何主體對(duì)agent的操作請(qǐng)求都將被拒絕。
定理3 APM的有效性驗(yàn)證。當(dāng)且僅當(dāng)下列條件成立時(shí),APM機(jī)制是有效的。條件1) 系統(tǒng)正確初始化為 v0狀態(tài);條件2) WPbit=WPanalysis。
證明 由條件1)可知,M(APKM),PT(APKM),M(Update)已加鎖,系統(tǒng)在該初始狀態(tài)下是安全的。
記當(dāng)前質(zhì)詢(xún)時(shí)刻為t,上一個(gè)質(zhì)詢(xún)時(shí)刻為 t -1,WPbit是 s1對(duì)IaaS節(jié)點(diǎn)控制寄存器CR0中WP實(shí)際置位狀態(tài)的質(zhì)詢(xún)結(jié)果,表示為 vt= (bt,F);WPanalysis是TTP分析 s1操作指令后得到的WP安全置位狀態(tài),表示為當(dāng)條件 2)成立時(shí),有 vt*= vt-1,根據(jù)定義 4知,狀態(tài) vt為安全狀態(tài),所有的(s,o1,x)∈b都滿(mǎn)足sc| F,決策結(jié)果是yes,因此,在以上條件下,APM機(jī)制是正確生效的,即定理3成立,證畢。
經(jīng)過(guò)以上安全性分析,證明本文提出的APM機(jī)制可有效保證基于TTP的IaaS平臺(tái)中agent的完整性和命令執(zhí)行的正確性,解決其完整性被破壞及代碼被攻擊者濫用執(zhí)行非法操作的問(wèn)題,達(dá)成了第3節(jié)提出的設(shè)計(jì)目標(biāo) 1)和目標(biāo) 2);APM 機(jī)制還支持在 agent升級(jí)或更換時(shí)基準(zhǔn)值的動(dòng)態(tài)更新,支持對(duì)多種測(cè)試軟件的保護(hù),達(dá)成了設(shè)計(jì)目標(biāo)3);此外,提出的APM有效性驗(yàn)證方法可以及時(shí)發(fā)現(xiàn)APM失效的問(wèn)題并通知TTP與IPP,防止TTP在評(píng)估IaaS平臺(tái)性能時(shí)受到偽造測(cè)試數(shù)據(jù)的混淆,達(dá)成了設(shè)計(jì)目標(biāo)4)。
基于KVM技術(shù)模擬搭建單節(jié)點(diǎn)和多節(jié)點(diǎn)2類(lèi)IaaS平臺(tái)對(duì)本文方法的有效性和性能進(jìn)行評(píng)價(jià),具體實(shí)驗(yàn)場(chǎng)景中涉及的軟硬件配置信息如表4所示。
采用Linux系統(tǒng)中流行的分析軟件Tripwire作為agent對(duì)IaaS平臺(tái)中部分文件進(jìn)行完整性測(cè)試,生成的測(cè)試報(bào)告作為對(duì)應(yīng)數(shù)據(jù)完整性指標(biāo)的測(cè)試數(shù)據(jù)。實(shí)現(xiàn)一個(gè)自定義的 APKM 模塊,用于驗(yàn)證Tripwire的完整性和命令執(zhí)行的正確性,采用SHA-1算法計(jì)算Tripwire的散列值作為其完整性度量值,通過(guò)檢查T(mén)ripwire運(yùn)行時(shí)內(nèi)存中的關(guān)鍵數(shù)據(jù)驗(yàn)證其命令執(zhí)行的正確性。為簡(jiǎn)化實(shí)驗(yàn)環(huán)境,在實(shí)驗(yàn)過(guò)程中關(guān)閉系統(tǒng)中的地址隨機(jī)化ASLR功能進(jìn)行分析。
表4 軟硬件配置信息
本節(jié)從功能和性能這2個(gè)方面對(duì)IaaS平臺(tái)上的agent保護(hù)機(jī)制APM進(jìn)行測(cè)試,功能測(cè)試用于驗(yàn)證APM的有效性;性能測(cè)試用于評(píng)估APM引入的開(kāi)銷(xiāo)。
5.2.1 有效性實(shí)驗(yàn)及分析
設(shè)計(jì)2個(gè)對(duì)Tripwire軟件的攻擊實(shí)驗(yàn)驗(yàn)證agent保護(hù)機(jī)制的有效性,模擬實(shí)現(xiàn)IaaS節(jié)點(diǎn)控制寄存器CR0中WP位的不同攻擊場(chǎng)景并給出APM有效性質(zhì)詢(xún)方法的表現(xiàn)。
1) Tripwire篡改
攻擊者通過(guò)篡改Tripwire的代碼達(dá)到偽造度量報(bào)告的目的。本文利用軟件010Editor修改Tripwire的二進(jìn)制文件,將偏移地址 0x00262628-0026263C處的警告數(shù)據(jù)“No Errors”修改為錯(cuò)誤提示數(shù)據(jù)“22 Errors”,使Tripwire無(wú)法將檢測(cè)結(jié)果正確記錄到度量報(bào)告中,以欺騙TTP與IPP。
計(jì)算正確 Tripwire二進(jìn)制文件的散列值為orgin_hash = dd89b440818b374fb4d9d944f5adc3979 e5dafc1,篡改后 Tripwire二進(jìn)制文件的散列值為new_hash = 8e3633b36ed5072998e3912917a8a72105 89f00c,二者存在明顯差異,可以看出,對(duì)該程序進(jìn)行手動(dòng)修改實(shí)現(xiàn)模擬攻擊后,APKM可以通過(guò)完整性驗(yàn)證方法檢測(cè)到該攻擊。
2) Tripwire命令異常
攻擊者通過(guò)修改Tripwire運(yùn)行時(shí)函數(shù)返回地址中的數(shù)據(jù)達(dá)到扭曲程序正常執(zhí)行流程的目的。Tripwire執(zhí)行文件完整性度量命令check時(shí)觀(guān)察發(fā)現(xiàn),被調(diào)用 cIntegrityCheck 類(lèi)函數(shù) CompareFCOs返回地址中保存的數(shù)據(jù)一直以十六進(jìn)制顯示為0x3800,因此,通過(guò)修改該數(shù)據(jù)模擬攻擊。
修改Tripwire編譯文件的源代碼,使之在執(zhí)行Tripwire-check命令時(shí)能打印出CompareFCOs返回地址中所保存的數(shù)據(jù)。編寫(xiě)腳本循環(huán)執(zhí)行以上命令時(shí),修改該數(shù)據(jù)模擬攻擊,可以看出攻擊前后該地址的輸出數(shù)據(jù)有明顯改變。因此,將該地址數(shù)據(jù)作為命令執(zhí)行正確性檢測(cè)的環(huán)境數(shù)據(jù)之一時(shí),可以檢測(cè)到該軟件命令異常執(zhí)行的問(wèn)題。這里對(duì)該地址數(shù)據(jù)的修改只是一個(gè)示例,實(shí)際應(yīng)用時(shí)可增加環(huán)境數(shù)據(jù)的種類(lèi)。
3) APM有效性質(zhì)詢(xún)
APM 機(jī)制中,APKM 的完整性受到內(nèi)存鎖機(jī)制的保護(hù),已有學(xué)者驗(yàn)證了該方案的有效性[20],因此,本文沒(méi)有討論APKM遭受攻擊的情形。這里考慮APM部署完畢后,IPP不再向IaaS節(jié)點(diǎn)發(fā)送任何可能改變WP置位狀態(tài)操作指令的場(chǎng)景。這時(shí),只要WP位的狀態(tài)是1,就認(rèn)為APM機(jī)制是正確生效的;一旦檢測(cè)到WP位被置0,就認(rèn)為該節(jié)點(diǎn)上已存在有非IPP用戶(hù)執(zhí)行了ring0級(jí)特權(quán)指令,內(nèi)存鎖機(jī)制已失效,APM機(jī)制已不再可信,需及時(shí)向TTP與IPP示警。
實(shí)驗(yàn)通過(guò)對(duì)一個(gè)標(biāo)志位狀態(tài)的變更模擬攻擊者對(duì)IaaS節(jié)點(diǎn)控制寄存器CR0的WP位進(jìn)行的操作,研究APM失效檢測(cè)機(jī)制中不同質(zhì)詢(xún)周期Tinquire對(duì)不同攻擊周期Tattack及不同攻擊延續(xù)時(shí)長(zhǎng)Tadelay的檢測(cè)率,記一次攻擊為標(biāo)志位初始狀態(tài)為 1(表示APM機(jī)制正確生效),經(jīng)過(guò)Tattack時(shí)間后攻擊者發(fā)起延續(xù)時(shí)長(zhǎng)為T(mén)adelay的攻擊,此時(shí),標(biāo)志位被置0(表示APM 機(jī)制處于失效狀態(tài)),攻擊結(jié)束后,該標(biāo)志位被再次置 1。在該攻擊發(fā)生時(shí)間內(nèi),TTP以Tinquire為周期查詢(xún)?cè)摌?biāo)志位的置位狀態(tài),以檢測(cè)是否發(fā)生了攻擊。攻擊檢測(cè)率是成功檢測(cè)到的攻擊次數(shù)對(duì)攻擊總次數(shù)的百分比值。具體APM失效檢測(cè)結(jié)果如表5所示,時(shí)間的單位是s。
分析可知,基于周期性質(zhì)詢(xún)的APM失效檢測(cè)方法的有效性與Tattack、Tadelay及Tinquire密切相關(guān)。以上檢測(cè)中存在發(fā)生了攻擊但未被檢測(cè)到的情況,這是由于攻擊延續(xù)時(shí)長(zhǎng)較短,整個(gè)攻擊流程發(fā)生在2次質(zhì)詢(xún)之間,因此,無(wú)法發(fā)現(xiàn)該攻擊?;陔S機(jī)時(shí)刻的質(zhì)詢(xún)可在一定程度上提高該方法的檢測(cè)率,它可用于對(duì)周期性質(zhì)詢(xún)結(jié)果的補(bǔ)充。
表5 APM失效檢測(cè)結(jié)果
5.2.2 性能實(shí)驗(yàn)及分析
本節(jié)通過(guò)計(jì)算開(kāi)啟 APM 機(jī)制后執(zhí)行 Tripwire命令增加的時(shí)延分析APM引入的性能開(kāi)銷(xiāo)。完整性度量時(shí)延是指APKM對(duì)agent進(jìn)行完整性度量時(shí)引入的時(shí)間開(kāi)銷(xiāo),命令執(zhí)行時(shí)延是指 APKM 檢驗(yàn)Tripwire函數(shù)返回地址中數(shù)據(jù)的正確性時(shí)引入的時(shí)間開(kāi)銷(xiāo)。
1) 完整性度量時(shí)延
取5個(gè)Tripwire命令包括策略更新(twadmin)、數(shù)據(jù)庫(kù)初始化(init)、完整性檢查(check)、版本查詢(xún)(version)和主程序測(cè)試(test)進(jìn)行實(shí)驗(yàn),為提高時(shí)間測(cè)量結(jié)果的精確性和科學(xué)性,每個(gè)命令重復(fù)執(zhí)行1 000次,取1 000次執(zhí)行結(jié)果的平均值,單位為μs。計(jì)算開(kāi)啟APM機(jī)制前后的完整性度量時(shí)延比值,定義該比值為具體實(shí)驗(yàn)數(shù)據(jù)記錄在表6中,時(shí)間單位為μs。
將表6中3個(gè)節(jié)點(diǎn)對(duì)5個(gè)測(cè)試命令的時(shí)延開(kāi)銷(xiāo)數(shù)值表示為圖2。
從表6和圖2中可以看出,開(kāi)啟APM后命令執(zhí)行時(shí)間比原始執(zhí)行時(shí)間有所增加,其完整性度量時(shí)延最大增幅為1.613 5‰(在C1上執(zhí)行命令test),最小增幅為0.344%(在C3上執(zhí)行命令twadmin)。分析APM機(jī)制可知,在命令執(zhí)行過(guò)程中增加時(shí)延的主要操作在于計(jì)算Tripwire二進(jìn)制文件的完整性度量值及與 APKM 中預(yù)保存基準(zhǔn)值的對(duì)比??紤]到開(kāi)啟APM機(jī)制前后命令執(zhí)行時(shí)間的差值很小,在本文實(shí)驗(yàn)環(huán)境中最大相差時(shí)間在100 μs以下,因此,對(duì)用戶(hù)實(shí)際使用造成的影響是很微小的。
表6 完整性度量時(shí)延
圖2 完整性度量時(shí)延開(kāi)銷(xiāo)
2) 命令執(zhí)行時(shí)延
取Tripwire執(zhí)行文件完整性度量check命令時(shí)調(diào)用的 cIntegrityCheck 類(lèi)中函數(shù) Execute、CompareFCOs、ProcessDir和 ProcessChangedFCO進(jìn)行實(shí)驗(yàn),分別將之記為 func1、func2、func3和func4,觀(guān)察發(fā)現(xiàn),func1與 func2返回地址中保存有固定數(shù)據(jù),而func3與func4返回地址中保存有相等數(shù)據(jù),根據(jù)該規(guī)律,討論執(zhí)行一個(gè)命令時(shí)檢查不同數(shù)目函數(shù)引入的時(shí)延開(kāi)銷(xiāo)。為提高時(shí)間測(cè)量結(jié)果的精確性和科學(xué)性,每個(gè)命令重復(fù)執(zhí)行1 000次,取1 000次執(zhí)行結(jié)果的平均值,單位為μs。具體實(shí)驗(yàn)數(shù)據(jù)記錄在表7中,并用圖3表示該數(shù)據(jù)。
從表7和圖3可以看出,開(kāi)啟APM后執(zhí)行命令時(shí)間有所增加。分析可知,增加耗時(shí)的主要操作為APKM讀取Tripwire運(yùn)行時(shí)內(nèi)存數(shù)據(jù)及與其預(yù)存正確數(shù)值的比對(duì)工作。雖然開(kāi)啟APM后對(duì)命令的執(zhí)行引入了一定時(shí)延,且該時(shí)延隨 APM 所檢查T(mén)ripwire命令中函數(shù)數(shù)目的增加而增加,但該開(kāi)銷(xiāo)在μs級(jí),而命令執(zhí)行時(shí)間在s級(jí),考慮到對(duì)IaaS平臺(tái)測(cè)試環(huán)境中agent安全性的增加,該時(shí)間開(kāi)銷(xiāo)在可接受范圍內(nèi)。在實(shí)際部署agent時(shí),需精心選擇命令中需接受檢查的函數(shù),以在agent的安全性與性能之間取得平衡。
表7 命令執(zhí)行時(shí)延
基于TTP的IaaS平臺(tái)測(cè)試主要依賴(lài)代理程序agent收集測(cè)試數(shù)據(jù),但當(dāng)前對(duì)agent保護(hù)技術(shù)的研究較少,現(xiàn)有虛擬化環(huán)境中的軟件保護(hù)技術(shù)也無(wú)法直接應(yīng)用到該場(chǎng)景中。針對(duì)這些問(wèn)題,本文提出一種適用于IaaS平臺(tái)的測(cè)試代理agent保護(hù)機(jī)制APM,結(jié)合平臺(tái)特點(diǎn),首先提出實(shí)現(xiàn)APM應(yīng)達(dá)到的設(shè)計(jì)目標(biāo),給出本文的技術(shù)依據(jù);然后解決在現(xiàn)有條件下TTP與IPP不提供額外硬件或軟件組件支持時(shí)保護(hù)agent需解決的問(wèn)題,設(shè)計(jì)一個(gè)內(nèi)核態(tài)保護(hù)模塊APKM,作為保護(hù)IaaS節(jié)點(diǎn)agent工作組件的宿主,實(shí)現(xiàn)對(duì)agent完整性與命令執(zhí)行正確性的驗(yàn)證和保護(hù),并生成 agent可信性狀態(tài)報(bào)告作為 TTP判斷agent可信狀態(tài)的依據(jù);最后為解決APM失效問(wèn)題,設(shè)計(jì)一種基于質(zhì)詢(xún)的 APM 有效性驗(yàn)證方法,及時(shí)發(fā)現(xiàn)失效APM所在的IaaS節(jié)點(diǎn)以止損,盡可能減少不可信 agent產(chǎn)生錯(cuò)誤虛假數(shù)據(jù)混淆 TTP分析判斷的可能,提高 IaaS平臺(tái)測(cè)試結(jié)果的準(zhǔn)確性。通過(guò)實(shí)驗(yàn)研究與分析,APM可以有效保證agent的完整性和命令執(zhí)行的正確性,時(shí)間開(kāi)銷(xiāo)保持在μs數(shù)量級(jí),對(duì)系統(tǒng)的負(fù)擔(dān)影響很小,與APM對(duì)agent的安全性提升而言,這個(gè)代價(jià)是可接受的。
圖3 命令執(zhí)行時(shí)延開(kāi)銷(xiāo)
參考文獻(xiàn):
[1]RIDDLE A R,CHUNG S M. A survey on the security of hypervisors in cloud computing[C]//International Conference on Distributed Computing Systems Workshops. 2015:100-104.
[2]SHAHZAD F. State-of-the-art survey on cloud computing security challenges,approaches and solutions[J]. Procedia Computer Science,2014,37:357-362.
[3]SARAVANAKUMAR C,ARUN C. Survey on interoperability,security,trust,privacy standardization of cloud computing[C]// International Conference on Contemporary Computing and Informatics.2015:977-982.
[4]Common Criteria Project Sponsoring Organizations. Common criteria for information technology security evaluation: Version 2.1[S]. 2004.
[5]Trusted Computing Platform Alliance. Main specification: Version 1.1[S]. 2002.
[6]趙波,戴忠華,向騻,等. 一種云平臺(tái)可信性分析模型建立方法[J].軟件學(xué)報(bào),2016,27(6):1349-1365.ZHAO B,DAI Z H,XIANG S,et al. Model constructing method for analyzing the trusty of cloud[J]. Journal of Software,2016,27(6):1349-1365.
[7]KING T M,GANTI A S. Migrating autonomic self-testing to the cloud[C]//2010 Third International Conference on Software Testing,Verification,and Validation Workshops (ICSTW). 2010: 438-443.
[8]ZECH P. Risk-based security testing in cloud computing environments[C]//IEEE International Conference on Software Testing. IEEE Computer Society,2011:411-414.
[9]KHAN I,REHMAN H,ZAHID A. Design and deployment of a trusted eucalyptus cloud[C]// 2011 IEEE International Conference on Cloud Computing (CLOUD). 2011: 380-387.
[10]PHAM C,CHEN D,KALBARCZYK Z,et al. CloudVal: a framework for validation of virtualization environment in cloud Infrastructure[C]//International Conference on Dependable Systems & Networks.2011:189-196.
[11]SHAIKH R,SASIKUMAR M. Trust model for measuring security strength of cloud computing service[J]. Procedia Computer Science,2015,45:380-389.
[12]CARBONE M,CUI W,LU L,et al. Mapping kernel objects to enable systematic integrity checking[C]// ACM Conference on Computer and Communications Security. 2009:555-565.
[13]謝亞龍,丁麗萍,林渝淇,等. ICFF: 一種 IaaS 模式下的云取證框架[J].通信學(xué)報(bào),2013,34(5):200-206.XIE Y L,DING,L P,LIN Y Q,et al. ICFF: a cloud forensics framework under the IaaS model[J]. Journal of Communications,2013,34(5): 200-206.
[14]PAZZAGLIA J C,LOTZ V,CERDA V C,et al. Advanced security service certificate for SOA: certified services go digital[M]. Vieweg Teubner,2011.
[15]ARJONA M,HARHANI R,MUNOZ A. An engineering process to address security challenges in cloud computing[C]//ASE Bigdata/ Social Com/Cybersecurity Conference. 2014:1-12.
[16]JAATUN M G,MELAND P H,BERNSMED K,et al. A briefing on cloud security challenges and opportunities[R]. Cloud Security Whitepaper,2013.
[17]MCCUNE J M,LI Y,QU N,et al. TrustVisor: efficient TCB reduction and attestation[C]//Security and Privacy. 2010:143-158.
[18]MUNOZ A,MAFIA A. Software and hardware certification techniques in a combined certification model[C]//11th International Conference on Security and Cryptography (SECRYPT). 2014: 1-6.
[19]WU L,ZHAN J,ZHAO Y,et al. A trusted evidence collection method based on the trusted third party for cloud platform[J]. International Journal of Distributed Sensor Networks,2015,501: 984964.
[20]ZHAI Y,CAO Q,CHASE J,et al. TapCon: practical third-party attestation for the cloud[C]//9th Workshop on Hot Topics in Cloud Computing (HotCloud 17),2017: 1-7.
[21]HUNT T,ZHU Z,XU Y,et al. Ryoan: a distributed sandbox for untrusted computation on secret data[C]//Usenix Conference on Operating Systems Design and Implementation. USENIX Association,2016:533-549.
[22]RILEY R,JIANG X,XU D. Guest-transparent prevention of kernel rootkits with VMM-based memory shadowing[C]//International Symposium on Recent Advances in Intrusion Detection,RAID 2008. 2008: 1-20.
[23]HUA J,SAKURAI K. Barrier: a lightweight hypervisor for protecting kernel integrity via memory isolation[C]//ACM Symposium on Applied Computing. 2012: 1470-1477.
[24]WANG Z,JIANG X. HyperSafe: a lightweight approach to provide lifetime hypervisor control-flow integrity[C]//Security and Privacy.2010:380-395.
[25]ZHANG F,WANG J,SUN K,et al. HyperCheck: a hardware-assisted integrity monitor[J]. IEEE Transactions on Dependable and Secure Computing,2014,11(4): 332-344.
[26]AZAB A M,NING P,WANG Z,et al. HyperSentry: enabling stealthy in-context measurement of hypervisor integrity[C]//ACM Conference on Computer and Communications Security. 2010:38-49.
[27]LIN K J,WANG C Y. Using TPM to improve boot security at BIOS layer[C]//IEEE International Conference on Consumer Electronics.2012:376-377.
[28]REN J,QI Y,DAI Y,et al. AppSec: a safe execution environment for security sensitive applications[C]//ACM Sigplan/Sigops International Conference on Virtual Execution Environments. 2015:187-199.
[29]ZHAI Y,YIN L,CHASE J,et al. CQSTR: securing cross-tenant applications with cloud containers[C]//ACM Symposium on Cloud Computing. 2016:223-236.
[30]HUANG Z,ZHENG T,SHI Y,et al. A dynamic detection method against ROP and JOP[C]//International Conference on Systems and Informatics. 2012:1072-1077.
[31]BRAR N S,DHINDSA K S. Study of virtual side channel attack in cloud computing a review[J]. International Journal of Engineering Development and Research,2015,3(3):1-6.
[32]MCCUNE J M,PARNO B J,PERRIG A,et al. Flicker: An execution infrastructure for TCB minimization[C]//ACM European Conference on Computer Systems. 2008:315-328.
[33]BAUER J,GRUHN M,FREILING F C. Lest we forget: cold-boot attacks on scrambled DDR3 memory[J]. Digital Investigation,2016,16:S65-S74.
[34]劉川意,林杰,唐博. 面向云計(jì)算模式運(yùn)行環(huán)境可信性動(dòng)態(tài)驗(yàn)證機(jī)制[J]. 軟件學(xué)報(bào),2014,25(3):662-674.LIU C Y,LIN J,TANG B. Dynamic trustworthiness verification mechanism for trusted cloud execution Environment[J]. Journal of Software,2014,25(3): 662-674.
[35]WANG Z,JIANG X. HyperSafe: a lightweight approach to provide lifetime hypervisor control-flow integrity[C]//IEEE Symposium on Security and Privacy. 2010:380-395.
[36]劉貴堂,周正,周魯蘋(píng). 軟件行為的一種靜態(tài)可信度量模型[J]. 海軍航空工程學(xué)院學(xué)報(bào),2012,27(4): 459-463.LIU G T,ZHOU Z,ZHOU L P. A static trustworthy measurement model for software behaviors[J]. Journal of Naval Aeronautical and Astronautical University,2012,27(4): 459-463.
[37]SHI W C,ZHOU H W,Y J H,et al. DCFI-Checker: checking kernel dynamic control flow integrity with performance monitoring counter[J]. China Communications,2014,11(9):31-46.
[38]PENG G,PAN X,ZHANG H,et al. Dynamic trustiness authentication framework based on software's behavior integrity[C]//The International Conference for Young Computer Scientists. 2008:2283-2288.
[39]吳濤,楊秋松,賀也平. 基于鄰接點(diǎn)的 VMM 動(dòng)態(tài)完整性度量方法[J]. 通信學(xué)報(bào),2015,36(9):169-180.WU T,YANG Q S,HE Y. Method of dynamic integrity measurement for VMM based on adjacency data[J]. Journal of Communications,2015,36(9): 169-180.
[40]TIAN-GE S I,ZHANG Y X,DAI Y Q. L-BLP security model in local area network[J]. Acta Electronica Sinica,2007,35(5): 1005-1008.