朱新兵,李清寶,張 平,陳志鋒,顧艷陽(yáng)
(1.中國(guó)人民解放軍戰(zhàn)略支援部隊(duì)信息工程大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,鄭州450003;2.數(shù)學(xué)工程與先進(jìn)計(jì)算國(guó)家重點(diǎn)實(shí)驗(yàn)室,鄭州450003;3.中國(guó)人民解放軍河南省軍區(qū)數(shù)據(jù)信息室,鄭州450003)
隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,人類進(jìn)入了萬(wàn)物互聯(lián)的時(shí)代。在全球范圍內(nèi),物聯(lián)網(wǎng)終端數(shù)量高速增長(zhǎng),截至2019年,全球物聯(lián)網(wǎng)終端數(shù)量達(dá)到110 億,據(jù)GSMA 預(yù)測(cè),到2025年數(shù)量將高達(dá)250 億[1]。物聯(lián)網(wǎng)終端已滲透到人們的日常生活中[2-3],然而也逐漸成為黑客攻擊的主要對(duì)象,近年來(lái),由此引發(fā)的安全事件頻發(fā)。一些不法分子利用物聯(lián)網(wǎng)終端自身存在的缺陷或漏洞,對(duì)其進(jìn)行主動(dòng)攻擊、惡意控制、隱私竊取、數(shù)據(jù)篡改等行為,對(duì)通信網(wǎng)絡(luò)的正常運(yùn)行和應(yīng)用服務(wù)的正常運(yùn)轉(zhuǎn)造成嚴(yán)重影響[4-6]。2017年2月,美國(guó)某大學(xué)5 000 多臺(tái)物聯(lián)網(wǎng)終端遭到惡意軟件感染,并被遠(yuǎn)程操控形成僵尸網(wǎng)絡(luò)[1]。2017年4月,三星Tizen 操作系統(tǒng)被曝光存在40 多個(gè)安全漏洞,共涉及3 000 萬(wàn)臺(tái)智能電視以及1 000 多萬(wàn)臺(tái)智能手機(jī)[1]。
物聯(lián)網(wǎng)終端最顯著的特點(diǎn)是與外部(物理)世界存在感知與控制[7-8]。終端處理的信息不再只是本身存儲(chǔ)轉(zhuǎn)發(fā)的“內(nèi)部”數(shù)據(jù),還包含來(lái)自外部世界的感知數(shù)據(jù)。感知數(shù)據(jù)是物聯(lián)網(wǎng)終端完成自身所承載業(yè)務(wù)的起點(diǎn)。但是,傳統(tǒng)的安全威脅分析模型無(wú)法準(zhǔn)確描述和有效評(píng)估感知數(shù)據(jù)對(duì)物聯(lián)網(wǎng)終端帶來(lái)的潛在危害,而且現(xiàn)有的二進(jìn)制代碼分析技術(shù)大多側(cè)重于對(duì)單個(gè)二進(jìn)制文件進(jìn)行分析,忽視了這些數(shù)據(jù)在多個(gè)二進(jìn)制文件間的傳播交互。如何獲取這些“外部”數(shù)據(jù)在終端固件中的完整傳播路徑和交互過(guò)程,是確保物聯(lián)網(wǎng)終端安全的關(guān)鍵。
本文通過(guò)構(gòu)建面向新攻擊面的物聯(lián)網(wǎng)終端固件安全威脅模型(Firmware Security Threat Model,F(xiàn)STM),描述物聯(lián)網(wǎng)終端固件與物理世界緊耦合、與業(yè)務(wù)強(qiáng)相關(guān)特性。借助進(jìn)程間的通信方式實(shí)現(xiàn)攻擊數(shù)據(jù)跨二進(jìn)制進(jìn)行文件傳播,并結(jié)合單二進(jìn)制文件中控制流驅(qū)動(dòng)的攻擊數(shù)據(jù)傳播獲得攻擊數(shù)據(jù)在固件中的完整傳播交互過(guò)程。
物聯(lián)網(wǎng)終端存在于各個(gè)領(lǐng)域,盡管在功能和結(jié)構(gòu)上各不相同,但大都包含以下3 個(gè)模塊:
1)感知/控制模塊。感知/控制是物聯(lián)網(wǎng)終端所獨(dú)有的模塊[9-11]。如圖1所示,感知/控制模塊通過(guò)各種傳感器對(duì)物理世界的信息進(jìn)行感知,將獲取的信息(大都是模擬態(tài)信息)轉(zhuǎn)換成終端固件能處理的數(shù)字態(tài)信息,并交由終端進(jìn)行處理,終端還會(huì)將處理結(jié)果轉(zhuǎn)換成物理世界能夠識(shí)別的信息,通過(guò)控制器反作用于物理世界。
圖1 物聯(lián)網(wǎng)終端結(jié)構(gòu)示意圖Fig.1 Schematic diagram of IoT terminal structure
2)硬件模塊。硬件模塊是物聯(lián)網(wǎng)終端的基礎(chǔ),包含終端入網(wǎng)和完成終端承載業(yè)務(wù)所必須的各種硬件設(shè)備,如入網(wǎng)板卡、處理器、存儲(chǔ)器、各種通信接口等。
3)固件模塊。固件是終端的“大腦”,是完成終端業(yè)務(wù)的核心。在物聯(lián)網(wǎng)終端固件研究領(lǐng)域,對(duì)固件的認(rèn)識(shí)尚未統(tǒng)一[12]。本文認(rèn)為物聯(lián)網(wǎng)終端固件是指運(yùn)行于物聯(lián)網(wǎng)終端上且存儲(chǔ)于終端非易失性存儲(chǔ)器中的程序代碼和數(shù)據(jù)的組合。
物聯(lián)網(wǎng)“云-管-端”的3 層體系架構(gòu)[13]有時(shí)也被稱做“應(yīng)用層-網(wǎng)絡(luò)層-感知層”,與傳統(tǒng)架構(gòu)相比,物聯(lián)網(wǎng)結(jié)構(gòu)的最大不同就在于“端”側(cè)。由于要完成對(duì)物理世界的感知/控制,“端”側(cè)引入了感知/控制模塊,進(jìn)入物聯(lián)網(wǎng)終端的數(shù)據(jù)不再僅僅是信息世界的01 代碼,而是與物理世界中真實(shí)狀態(tài)相映射的能量信息。
如圖2所示,物聯(lián)網(wǎng)終端處于物理世界與信息世界的交匯處,面臨來(lái)自末端傳感和控制的新攻擊面。傳統(tǒng)的攻擊面來(lái)自物聯(lián)網(wǎng)“云端”與IoT 終端之間的數(shù)據(jù)交互,包括基于“云端”對(duì)終端的配置管理、命令控制、數(shù)據(jù)上傳等,這些數(shù)據(jù)交互過(guò)程一般都是通過(guò)有線和無(wú)線網(wǎng)絡(luò)通道來(lái)完成的,即“管道”。而新的攻擊面則是由和物聯(lián)網(wǎng)終端實(shí)際業(yè)務(wù)應(yīng)用相關(guān)的末端傳感與控制引起的,終端設(shè)備與傳感器/控制器通過(guò)網(wǎng)絡(luò)或其他物理信道(如RS485、Bluetooth、Zigbee、CAN/FlexRay、Infrared 等)進(jìn)行通信[12]。傳感模塊將對(duì)物理世界的感知傳遞給終端,并轉(zhuǎn)換成固件代碼能夠識(shí)別的數(shù)據(jù)信息供終端進(jìn)行處理。感知信息經(jīng)終端處理后,控制模塊再將相應(yīng)的反饋數(shù)據(jù)轉(zhuǎn)換成物理世界能夠識(shí)別的信號(hào),然后反作用于物理世界。
圖2 物聯(lián)網(wǎng)終端新攻擊面示意圖Fig.2 Schematic diagram of new attack surface of IoT terminal
在物聯(lián)網(wǎng)安全研究領(lǐng)域?qū)π鹿裘娴睦斫庥胁煌拿枋?。有研究者將物?lián)網(wǎng)中面臨的新的安全威脅,如物聯(lián)網(wǎng)終端的泛在化、智能化、參差不齊的安全防護(hù)水平等,都稱為新攻擊面。而本文是從物聯(lián)網(wǎng)終端對(duì)外部(物理)世界的感知控制的角度對(duì)新攻擊面進(jìn)行理解。
目前,針對(duì)物聯(lián)網(wǎng)終端新攻擊面的已有研究大都集中在2 個(gè)方面:1)對(duì)轉(zhuǎn)換器靠近物理世界的情況進(jìn)行研究,它們主要從模擬態(tài)信息的擬合欺騙或側(cè)信道攻擊著手;2)對(duì)轉(zhuǎn)換器靠近數(shù)字世界的情況展開(kāi)研究,主要對(duì)運(yùn)行于物聯(lián)網(wǎng)終端上的固件進(jìn)行安全性檢測(cè)。后者也是本文的主要研究?jī)?nèi)容。
新攻擊面對(duì)物聯(lián)網(wǎng)終端固件帶來(lái)的安全威脅主要由以下4 個(gè)原因造成:
1)物聯(lián)網(wǎng)終端固件接收的感知數(shù)據(jù)與物理世界真實(shí)輸入信息存在一致性問(wèn)題。物理世界的模擬態(tài)信息經(jīng)轉(zhuǎn)換器轉(zhuǎn)換后傳給物聯(lián)網(wǎng)終端固件進(jìn)行處理,這些數(shù)字態(tài)信息是物聯(lián)網(wǎng)終端完成相應(yīng)任務(wù)的邏輯起點(diǎn),這些數(shù)據(jù)如果不能真實(shí)反映物理世界的真實(shí)狀態(tài),而是被攻擊者進(jìn)行篡改,則終端將無(wú)法實(shí)現(xiàn)預(yù)期功能。
2)物聯(lián)網(wǎng)終端固件反作用于物理世界的控制信息與信息世界真實(shí)輸出存在一致性問(wèn)題。信息世界的數(shù)字態(tài)信息經(jīng)轉(zhuǎn)換器轉(zhuǎn)換后反作用于物理世界,這些數(shù)字態(tài)信息是物聯(lián)網(wǎng)終端固件根據(jù)感知數(shù)據(jù)得出的反饋,如果反饋不能真實(shí)反映物理世界,而是被攻擊者進(jìn)行篡改,這樣的輸出不僅無(wú)法實(shí)現(xiàn)預(yù)期功能,還會(huì)給物理世界帶來(lái)難以估量的危害。
3)物聯(lián)網(wǎng)終端固件運(yùn)行的基礎(chǔ)環(huán)境資源有限與驗(yàn)證2 個(gè)一致性所需資源不相符的矛盾。由于物聯(lián)網(wǎng)終端資源有限,加之重業(yè)務(wù)輕安全的設(shè)計(jì)理念,終端固件中大都沒(méi)有部署類似于“冗余互判”的措施[14]來(lái)驗(yàn)證上述2 個(gè)一致性問(wèn)題。
4)以業(yè)務(wù)為導(dǎo)向的物聯(lián)網(wǎng)終端固件安全與傳統(tǒng)網(wǎng)絡(luò)威脅分析模型不適應(yīng)的矛盾。從近年來(lái)發(fā)生的有關(guān)物聯(lián)網(wǎng)終端安全的事件來(lái)看,以業(yè)務(wù)為導(dǎo)向的安全威脅越來(lái)越明顯,許多看似“友好”的固件代碼從傳統(tǒng)分析角度來(lái)看毫無(wú)惡意,可一旦與終端具體業(yè)務(wù)流程相結(jié)合,其惡意性就會(huì)顯露,而且這種固件代碼的破壞性往往難以估量。例如“震網(wǎng)”病毒[15],被篡改后的固件按照非預(yù)期業(yè)務(wù)流程控制離心機(jī)轉(zhuǎn)速,但僅從代碼分析的角度,分析者無(wú)法斷定這種惡意性。
如圖3所示,根據(jù)分析的難易程度可將物聯(lián)網(wǎng)終端固件分為淺嵌入式固件和深嵌入式固件兩類。
圖3 物聯(lián)網(wǎng)終端固件分類Fig.3 Classification of IoT terminal firmware
1)淺嵌入式固件,該類物聯(lián)網(wǎng)終端固件具有劃分明確的軟件體系結(jié)構(gòu)和完整的文件系統(tǒng),包含已知的通用操作系統(tǒng),如Android、嵌入式linux 等[12]。操作系統(tǒng)及其相關(guān)的各類公開(kāi)函數(shù)庫(kù)為這類固件分析提供了豐富的語(yǔ)義信息,便于結(jié)合基于API 函數(shù)的分析方法分析固件程序的功能結(jié)構(gòu)與文件屬性。
2)深嵌入式固件,擁有該類固件的物聯(lián)網(wǎng)終端大多屬于傳統(tǒng)的嵌入式設(shè)備,該類終端固件將剪裁后的操作系統(tǒng)(或者沒(méi)有)、應(yīng)用程序和配置數(shù)據(jù)全部編譯為一個(gè)整體,有研究者將其稱為BLOB 固件[12]。深嵌入式固件沒(méi)有顯式的文件系統(tǒng),缺乏輔助解讀的符號(hào)信息及庫(kù)函數(shù)信息,針對(duì)該類固件的分析難度較高。
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,物聯(lián)網(wǎng)終端的設(shè)計(jì)成本壓力得到極大緩解。為了完成更復(fù)雜的功能并向用戶提供更好的體驗(yàn),越來(lái)越多的設(shè)備采用淺嵌入式固件,且大都基于Linux。本文將著重于這類固件分析。
FSTM 通過(guò)對(duì)新攻擊面引入的攻擊數(shù)據(jù)在固件中的傳播交互進(jìn)行建模,以揭示其對(duì)終端固件安全帶來(lái)的潛在威脅。因此,在模型定義中,本文僅將終端固件接收的來(lái)自于外部(物理)世界的感知數(shù)據(jù)作為攻擊數(shù)據(jù)。
定義1(攻擊數(shù)據(jù)集)攻擊數(shù)據(jù)集D是一個(gè)非空集合,表示由新攻擊面引入、物聯(lián)網(wǎng)終端固件可識(shí)別、來(lái)自物理世界的感知數(shù)據(jù)所構(gòu)成的集合。?d∈D,d表示攻擊數(shù)據(jù)集D中的一個(gè)攻擊數(shù)據(jù)實(shí)例。
定義2(攻擊數(shù)據(jù))攻擊數(shù)據(jù)d由一個(gè)二元組表示,d=(id,value),id 表示該攻擊數(shù)據(jù)的描述符,其唯一標(biāo)識(shí)攻擊數(shù)據(jù)d,value 表示該數(shù)據(jù)的數(shù)據(jù)值。
攻擊數(shù)據(jù)在固件中存在如下2 種傳播方式:
1)在單個(gè)二進(jìn)制文件中傳播。在這種傳播方式中,攻擊數(shù)據(jù)在單個(gè)二進(jìn)制文件中隨著一條條指令或一個(gè)個(gè)基本塊的執(zhí)行而傳播,這種傳播方式也是傳統(tǒng)分析工具的主要研究對(duì)象,其靠控制流驅(qū)動(dòng)。
定義3(攻擊數(shù)據(jù)引入點(diǎn))攻擊數(shù)據(jù)引入點(diǎn)是指固件代碼中獲取物理世界感知信息的程序點(diǎn),即將攻擊數(shù)據(jù)d引入固件代碼中的程序點(diǎn),用ap=(f_name,loc,d)來(lái)表示,其中,f_name 為包含該引入點(diǎn)的二進(jìn)制文件,loc 為該引入點(diǎn)在二進(jìn)制文件中的位置,d為引入的攻擊數(shù)據(jù)。
定義4(攻擊數(shù)據(jù)引入點(diǎn)集合)攻擊數(shù)據(jù)引入點(diǎn)集合表示固件代碼中所有攻擊數(shù)據(jù)引入點(diǎn)的集合,本文用AP 表示,AP={ap|ap=(f_name,loc,d)}。
對(duì)于每個(gè)ap,從包含它的函數(shù)入口點(diǎn)st_add 開(kāi)始,st_add=Get_Function_Add(f_name,loc),進(jìn)行路徑探索Explore(f_name,st_add)[16-17]。在探索路徑中遇到的每個(gè)基本塊都對(duì)其進(jìn)行3 項(xiàng)操作:
(1)檢查該基本塊是否對(duì)ap.d施加了約束Is_con(d),如果為真,則收集約束c=c∪Collect_con(d),更新攻擊數(shù)據(jù)d=Con(d);如果為否,c=c,d=d。
(2)檢測(cè)該基本塊內(nèi)是否包含相對(duì)于d的威脅斷言(詳見(jiàn)3.3 節(jié))。
(3)檢查該基本塊內(nèi)是否存在進(jìn)程間通信[18],如果存在,則轉(zhuǎn)為分析跨二進(jìn)制文件間的攻擊數(shù)據(jù)傳播。
2)跨二進(jìn)制文件間傳播。由于多二進(jìn)制文件之間不存在控制流,且相互有獨(dú)立的地址空間,因此它們之間的攻擊數(shù)據(jù)交互與單二進(jìn)制文件內(nèi)的傳播存在很大不同。在Linux 中,每個(gè)進(jìn)程有其單獨(dú)的地址空間,數(shù)據(jù)對(duì)于其他進(jìn)程而言是受保護(hù)的。對(duì)于2 個(gè)進(jìn)程(進(jìn)程A 和進(jìn)程B),在進(jìn)程A 中聲明的數(shù)據(jù)對(duì)于進(jìn)程B 是不可用的,如果進(jìn)程A 和進(jìn)程B 要通過(guò)共享數(shù)據(jù)來(lái)配合完成某個(gè)任務(wù),必須要在2 個(gè)進(jìn)程間建立某種通信方式,使得一個(gè)進(jìn)程可以訪問(wèn)另外一個(gè)進(jìn)程的數(shù)據(jù),即進(jìn)程間通信(Interprocess Communication,IPC)[18]。不同進(jìn)程間的通信有著多種方式,但用于數(shù)據(jù)傳輸?shù)倪M(jìn)程間通信方式卻是有限的,而且研究發(fā)現(xiàn),為了能在不同進(jìn)程間傳輸數(shù)據(jù),在數(shù)據(jù)傳輸之前,參與傳輸?shù)碾p方就要做好準(zhǔn)備,比如都要事先知道攻擊數(shù)據(jù)的傳輸載體具體是什么,這些信息往往作為硬編碼被嵌入在固件代碼中。
通過(guò)分析物聯(lián)網(wǎng)終端固件中進(jìn)程間的數(shù)據(jù)傳播,發(fā)現(xiàn)進(jìn)程間攻擊數(shù)據(jù)傳輸方式主要有以下4 種:
1)文件。不同進(jìn)程間通過(guò)文件進(jìn)行數(shù)據(jù)傳輸,如進(jìn)程A 打開(kāi)文件,向文件中寫(xiě)入數(shù)據(jù),而進(jìn)程B 從中讀取數(shù)據(jù)。此時(shí),文件就是攻擊數(shù)據(jù)的傳輸載體,用文件名表示。
2)環(huán)境變量。環(huán)境變量也是常用的進(jìn)程間通信傳輸載體,使用環(huán)境變量名表示。如進(jìn)程A 在其環(huán)境中設(shè)置一定的變量,進(jìn)程B 通過(guò)這些變量接收攻擊數(shù)據(jù)值。
3)共享內(nèi)存。共享內(nèi)存是最快的IPC 方式,它允許2 個(gè)或多個(gè)進(jìn)程共享一個(gè)給定的存儲(chǔ)區(qū),這一段存儲(chǔ)區(qū)可以被2 個(gè)或2 個(gè)以上的進(jìn)程映射至自身的地址空間中。共享內(nèi)存既可以通過(guò)普通文件提供的內(nèi)存映射,也可以使用特殊文件提供的匿名內(nèi)存映射。對(duì)于前者,文件就是攻擊數(shù)據(jù)的傳輸載體,用文件名表示。對(duì)于后者,共享內(nèi)存頁(yè)就是攻擊數(shù)據(jù)的傳輸載體,用共享內(nèi)存頁(yè)的虛擬地址表示。
4)套接字(Socket)。套接字是更為一般的進(jìn)程間通信機(jī)制,用套接字名來(lái)表示。與其他通信機(jī)制不同,套接字不但可用于不同進(jìn)程間通信,還可用于不同機(jī)器之間的進(jìn)程間通信。一個(gè)套接字可以看作進(jìn)程間通信的端點(diǎn)(endpoint),每個(gè)套接字的名字都是唯一的,其他進(jìn)程可以發(fā)現(xiàn)、連接并且與之通信。
定義5(進(jìn)程間通信實(shí)例)一個(gè)進(jìn)程間通信實(shí)例ipc=(identifier,ipc_name,data,role),其中,identifier 表示該ipc 實(shí)例的數(shù)據(jù)傳輸載體描述符,ipc_name 表示該ipc 實(shí)例的進(jìn)程間通信方式,data 表示該ipc 實(shí)例傳播的攻擊數(shù)據(jù),role 表示該進(jìn)程在ipc實(shí)例中的角色,即是攻擊數(shù)據(jù)的生產(chǎn)者還是攻擊數(shù)據(jù)的消費(fèi)者。
定義6(進(jìn)程間通信實(shí)例集)進(jìn)程間通信實(shí)例集表示固件代碼中所有進(jìn)程間通信實(shí)例的集合,用IPC表示,IPC={ipc|ipc=(identifier,ipc_name,data,role)}。
定義7(進(jìn)程間通信點(diǎn))進(jìn)程間通信點(diǎn)是指固件中發(fā)生進(jìn)程間通信的程序點(diǎn),用cp 表示,cp=(f_name,loc,ipc)。
定義8(進(jìn)程間通信點(diǎn)集合)進(jìn)程間通信點(diǎn)集合表示固件代碼中所有進(jìn)程間通信點(diǎn)的集合,用CP表示,CP={cp|cp=(f_name,loc,ipc)}。
如果在探索路徑的過(guò)程中發(fā)現(xiàn)基本塊內(nèi)存在進(jìn)程間通信,則判斷通信所傳送的數(shù)據(jù)是否為攻擊數(shù)據(jù),如果不是,則繼續(xù)探索路徑;如果是,則進(jìn)行攻擊數(shù)據(jù)跨二進(jìn)制文件的傳播分析。
如前文所述,對(duì)于不同進(jìn)程間通信,通信雙方首先都要知道攻擊數(shù)據(jù)的通信載體,這些信息往往作為硬編碼嵌入在固件代碼中。攻擊數(shù)據(jù)跨二進(jìn)制文件的傳播分析正是以此為依據(jù),通過(guò)ipc.identifier 識(shí)別互相通信的2 個(gè)進(jìn)程,其次根據(jù)ipc.role 確定攻擊數(shù)據(jù)的傳播方向,從而將單個(gè)二進(jìn)制文件中攻擊數(shù)據(jù)傳播分析探索出的傳播路徑相連通,形成攻擊數(shù)據(jù)在固件代碼中的完整傳播路徑。
PC 域和互聯(lián)網(wǎng)域的安全威脅分析模型已具有較為成熟的研究成果。Parker[19]模型建立一個(gè)計(jì)算機(jī)惡意攻擊的通用模型,圍繞攻擊者的IT 技術(shù)和知識(shí)以及執(zhí)行攻擊的動(dòng)機(jī)、資源和授權(quán)展開(kāi),該模型也對(duì)后續(xù)研究進(jìn)行了引導(dǎo),具有較高的參考價(jià)值。STRIDE[20]模型是相當(dāng)知名的威脅分類模型,可以針對(duì)系統(tǒng)的重大威脅進(jìn)行分類。Scheier[21]提出攻擊樹(shù)的概念,目的是通過(guò)樹(shù)形結(jié)構(gòu)來(lái)描述系統(tǒng)存在的各種攻擊,為確保系統(tǒng)安全提供一種系統(tǒng)化的形式方法。物聯(lián)網(wǎng)域也出現(xiàn)了一些安全模型,如IoTSAT[14]是一個(gè)用于物聯(lián)網(wǎng)安全分析的形式化框架,基于設(shè)備配置、網(wǎng)絡(luò)拓?fù)?、用戶策略和特定于IoT 的攻擊面,對(duì)系統(tǒng)的一般行為進(jìn)行形式化建模。文獻(xiàn)[22]構(gòu)建一個(gè)概念模型,以支持決策者對(duì)物聯(lián)網(wǎng)系統(tǒng)進(jìn)行安全分析,該模型基于面向體系結(jié)構(gòu)的方法將社會(huì)技術(shù)概念融入物聯(lián)網(wǎng)系統(tǒng)的安全分析中。
針對(duì)物聯(lián)網(wǎng)終端固件安全威脅的分析模型還較為少見(jiàn),而且傳統(tǒng)的威脅分析模型在面對(duì)物聯(lián)網(wǎng)終端的新攻擊面時(shí),也存在2 點(diǎn)不足:1)無(wú)法有效描述物聯(lián)網(wǎng)終端固件與物理世界的緊耦合性;2)無(wú)法有效描述業(yè)務(wù)導(dǎo)向下的物聯(lián)網(wǎng)終端固件安全威脅。
定義9(面向新攻擊面的物聯(lián)網(wǎng)終端固件安全威脅模型FSTM)FSTM 是一個(gè)有向圖G[23],G=(V,E,D,Ψ,Ρ),其中:
1)V為節(jié)點(diǎn)集,表示攻擊數(shù)據(jù)在固件代碼中傳播路徑上所經(jīng)歷的所有基本塊的集合,即每一個(gè)節(jié)點(diǎn)就是一個(gè)基本塊。
2)E為有向邊集,E?V×V,節(jié)點(diǎn)之間的有向邊表示2 個(gè)節(jié)點(diǎn)間發(fā)生攻擊數(shù)據(jù)傳播。
3)D為攻擊數(shù)據(jù)集,?d∈D,d=(id,value)。
4)Ψ為節(jié)點(diǎn)與邊之間的關(guān)聯(lián)函數(shù),將V×D映射到V上。?e∈E,則?vi,vj∈V,且有序?qū)Γ紇i,vj>∈V×V,使得ψ(vi,d)=vj,e稱為vi到vj的邊,ψ表示vi向vj傳播了攻擊數(shù)據(jù)d,vi是攻擊數(shù)據(jù)d的生產(chǎn)者,vj是攻擊數(shù)據(jù)d的消費(fèi)者。
5)Ρ為節(jié)點(diǎn)的約束集,表示固件對(duì)攻擊數(shù)據(jù)施加的約束集合。?vi∈V,則?ρi∈Ρ,使得ρi=Con(vi,d),即節(jié)點(diǎn)vi對(duì)攻擊數(shù)據(jù)d施加約束。
從定義9 可以看出:
1)FSTM 是一個(gè)非連通有向圖,圖中的每一條路徑代表一個(gè)攻擊數(shù)據(jù)的傳播過(guò)程。一條路徑就是一個(gè)基本塊序列,由單個(gè)二進(jìn)制文件中的控制流和跨二進(jìn)制文件間的進(jìn)程通信共同驅(qū)動(dòng),表示由新攻擊面引入的攻擊數(shù)據(jù)在固件中的傳播交互過(guò)程。
2)FSTM 中的節(jié)點(diǎn)可以劃分成3 個(gè)互斥的子集,即攻擊數(shù)據(jù)引入節(jié)點(diǎn)、進(jìn)程間通信節(jié)點(diǎn)和普通節(jié)點(diǎn)(進(jìn)程內(nèi)節(jié)點(diǎn))。引入節(jié)點(diǎn)表示包含引入點(diǎn)的節(jié)點(diǎn),通信節(jié)點(diǎn)表示包含通信點(diǎn)的節(jié)點(diǎn),普通節(jié)點(diǎn)有可能是威脅節(jié)點(diǎn)(3.3 節(jié)詳述)。
定義10(路徑可達(dá))給定FSTM 中的一條路徑Pathij=vivi+1…vk-1vkvk+1…vj-1vj,如果存在一個(gè)攻擊數(shù)據(jù)d在該路徑上傳播,稱攻擊數(shù)據(jù)d對(duì)于節(jié)點(diǎn)vi到vj是路徑可達(dá)的。
FSTM 關(guān)注的是從物理世界引入的攻擊數(shù)據(jù)對(duì)固件的威脅,結(jié)合實(shí)際案例分析經(jīng)驗(yàn),本文認(rèn)為這些威脅主要包括:
1)攻擊數(shù)據(jù)作為固件中的控制條件使用。在一些物聯(lián)網(wǎng)終端固件中,對(duì)物理世界的感知數(shù)據(jù)經(jīng)常被用作啟動(dòng)“逆作用”模塊的條件使用。如壓力控制系統(tǒng)中,對(duì)外部真實(shí)壓力的感知數(shù)據(jù)被用作觸發(fā)加壓模塊或減壓模塊的判斷條件,如果這個(gè)條件被攻擊者控制,“逆作用”模塊可能無(wú)法正常啟動(dòng)。因此,本文認(rèn)為攻擊數(shù)據(jù)一旦作為控制條件使用,就可能對(duì)終端固件安全造成威脅。對(duì)于這種威脅的斷言,主要是通過(guò)識(shí)別控制條件語(yǔ)句中是否包含攻擊數(shù)據(jù)來(lái)完成。
2)攻擊數(shù)據(jù)被強(qiáng)制設(shè)置成某個(gè)常量。攻擊數(shù)據(jù)經(jīng)常被用作固件內(nèi)某個(gè)函數(shù)的參數(shù)使用,這個(gè)參數(shù)根據(jù)物理世界的實(shí)際狀態(tài)變化而變化。例如“震網(wǎng)”病毒中[15],離心機(jī)的真實(shí)轉(zhuǎn)速已發(fā)生異常,而警報(bào)系統(tǒng)中感知的轉(zhuǎn)速仍然是一個(gè)正常值,以至于物理世界多元的模擬態(tài)信息映射到信息世界就變成了單一的數(shù)字信息,無(wú)法真實(shí)反映這種映射關(guān)系。因此,本文認(rèn)為攻擊數(shù)據(jù)一旦被強(qiáng)制設(shè)置成某個(gè)常量,就有可能對(duì)終端固件安全造成威脅。對(duì)于這種威脅的斷言,主要是通過(guò)識(shí)別是否有針對(duì)攻擊數(shù)據(jù)的常量化賦值語(yǔ)句來(lái)完成。
3)攻擊數(shù)據(jù)的使用造成內(nèi)存出現(xiàn)異常。由于物聯(lián)網(wǎng)終端固件運(yùn)行環(huán)境資源有限、安全措施薄弱,攻擊者經(jīng)常通過(guò)構(gòu)造不符合使用規(guī)范的攻擊數(shù)據(jù),引發(fā)內(nèi)存損壞和系統(tǒng)崩潰,如常見(jiàn)的緩沖區(qū)溢出等。因此,本文認(rèn)為攻擊數(shù)據(jù)的使用一旦不符合規(guī)范,就有可能對(duì)終端固件安全造成威脅。對(duì)于這種威脅的斷言,主要是通過(guò)識(shí)別攻擊數(shù)據(jù)的大小、長(zhǎng)度和類型是否符合使用規(guī)范來(lái)完成。
4)攻擊數(shù)據(jù)作為反饋輸出給物理世界。反作用于物理世界的輸出是否正確,是確保物理世界和信息世界這2 個(gè)世界安全的最后防線。本文考察的輸出是根據(jù)攻擊數(shù)據(jù)生成的,分析者結(jié)合具體的業(yè)務(wù)流程對(duì)其進(jìn)行分析,對(duì)終端固件的安全檢測(cè)意義重大。因此,本文認(rèn)為攻擊數(shù)據(jù)一旦作為反饋反作用于物理世界,就有可能對(duì)終端固件安全造成威脅。對(duì)于這種威脅的斷言,主要是通過(guò)識(shí)別包含攻擊數(shù)據(jù)輸出程序點(diǎn)所在的文件是否為一個(gè)邊界文件(用來(lái)和物理世界交互的文件)來(lái)完成。
對(duì)于上述4種安全威脅斷言,使用Ti(i=1,2,3,4)來(lái)表示,對(duì)某一節(jié)點(diǎn)進(jìn)行威脅斷言,使用assert(Ti)來(lái)表示,如果assert(Ti)為真,則表示該節(jié)點(diǎn)包含該種威脅。在攻擊數(shù)據(jù)傳播的路徑探索過(guò)程中,一旦存在所定義的安全威脅,就將該節(jié)點(diǎn)置為威脅節(jié)點(diǎn),這一點(diǎn)在以FSTM為指導(dǎo)的實(shí)際固件安全檢測(cè)中至關(guān)重要。
定理1FSTM 中存在關(guān)于d的安全威脅Ti,當(dāng)且僅當(dāng)攻擊數(shù)據(jù)d的引入節(jié)點(diǎn)vj和包含Ti的威脅節(jié)點(diǎn)vk之間存在一條攻擊數(shù)據(jù)d的傳播路徑。
證明:
1)已知FSTM 中存在關(guān)于d的安全威脅Ti。由于包含Ti的節(jié)點(diǎn)vk是在對(duì)d的路徑探索過(guò)程中發(fā)現(xiàn)的,該路徑的起始節(jié)點(diǎn)為包含引入節(jié)點(diǎn)vj的函數(shù)的入口位置st_add,因此d對(duì)于節(jié)點(diǎn)block(st_add)到vk是路徑可達(dá)的。由于從節(jié)點(diǎn)block(st_add)到vj存在函數(shù)控制流驅(qū)動(dòng),因此d對(duì)于節(jié)點(diǎn)block(st_add)到vj是路徑可達(dá)的。又因?yàn)門i是相對(duì)于d的威脅斷言,所以vk必定在攻擊數(shù)據(jù)引入節(jié)點(diǎn)vj之后。綜上可得,攻擊數(shù)據(jù)引入節(jié)點(diǎn)vj和威脅節(jié)點(diǎn)vk之間存在一條攻擊數(shù)據(jù)d的傳播路徑。
2)已知攻擊數(shù)據(jù)d的引入節(jié)點(diǎn)vj和包含Ti的威脅節(jié)點(diǎn)vk之間存在一條攻擊數(shù)據(jù)d的傳播路徑。假設(shè)FSTM 中不存在關(guān)于d的安全威脅Ti,那么從包含d的引入節(jié)點(diǎn)vj的函數(shù)的入口位置st_add 開(kāi)始的路徑探索將無(wú)法到達(dá)包含Ti的節(jié)點(diǎn)vk。而從st_add 到節(jié)點(diǎn)vj存在函數(shù)控制流驅(qū)動(dòng),因此,d對(duì)于節(jié)點(diǎn)block(st_add)到vj是路徑可達(dá)的,從而可得出vj到vk是不可達(dá)的,這與已知相矛盾,因此,F(xiàn)STM 中存在關(guān)于d的安全威脅Ti。
從定理1 可以看出,如果存在一個(gè)攻擊數(shù)據(jù)引入節(jié)點(diǎn)vj和一個(gè)威脅節(jié)點(diǎn)vk,且在vj和vk之間存在一條攻擊數(shù)據(jù)d的傳播路徑,本文認(rèn)為在該固件中觸發(fā)一個(gè)安全威脅警報(bào),這就是基于FSTM 進(jìn)行物聯(lián)網(wǎng)終端固件安全檢測(cè)的理論基礎(chǔ)。
本文以圖4所示的一個(gè)典型物聯(lián)網(wǎng)終端應(yīng)用場(chǎng)景為例,對(duì)FSTM 進(jìn)行描述,該場(chǎng)景為一個(gè)辦公場(chǎng)所物聯(lián)網(wǎng)集成感控終端應(yīng)用,主要包含3 個(gè)部分:
圖4 物聯(lián)網(wǎng)終端應(yīng)用場(chǎng)景示意圖Fig.4 Schematic diagram of IoT terminal application scenarios
1)感知模塊(傳感器)。該部分由4 個(gè)傳感器組成,分別是煙霧傳感器、光感傳感器、考勤傳感器和溫度傳感器,以對(duì)場(chǎng)所內(nèi)相應(yīng)物理環(huán)境進(jìn)行實(shí)時(shí)感知,并將感知數(shù)據(jù)上傳給終端固件進(jìn)行處理。
2)處理模塊(固件)。該部分是整個(gè)場(chǎng)景的大腦中樞,負(fù)責(zé)對(duì)感知數(shù)據(jù)的獲取和處理,并依據(jù)預(yù)先制定的用戶策略生成相應(yīng)的控制驅(qū)動(dòng)數(shù)據(jù)并作用于各個(gè)控制器。
3)控制模塊(控制器)。該部分與感知模塊相對(duì)應(yīng),由4 個(gè)控制器組成,依據(jù)固件生成的控制驅(qū)動(dòng)數(shù)據(jù),分別作用于場(chǎng)所內(nèi)煙霧報(bào)警器、可調(diào)光光源、考勤統(tǒng)計(jì)系統(tǒng)、空調(diào)系統(tǒng)等物聯(lián)網(wǎng)終端,控制其運(yùn)行狀態(tài)。
如圖5所示,本文對(duì)圖4 中物聯(lián)網(wǎng)終端實(shí)例的固件代碼進(jìn)行簡(jiǎn)化說(shuō)明,該清單中只包含由新攻擊面引入的攻擊數(shù)據(jù)在固件中的傳播與處理。清單1 對(duì)應(yīng)固件中的感知模塊,清單2 對(duì)應(yīng)固件中的控制模塊,且每個(gè)清單都對(duì)應(yīng)一個(gè)二進(jìn)制文件b1 和b2。
圖5 物聯(lián)網(wǎng)終端應(yīng)用場(chǎng)景代碼實(shí)例Fig.5 Code examples of IoT terminal application scenario
在清單1 中,分別在b1 的程序點(diǎn)p1、p2、p3 和p4處引入攻擊數(shù)據(jù),在程序點(diǎn)p5、p6、p7 和p8 處通過(guò)某種進(jìn)程間通信方式將數(shù)據(jù)傳遞給控制模塊。
在清單2 中,分別在b2 的程序點(diǎn)p1、p2、p3 和p4處通過(guò)進(jìn)程間通信接收b1 傳遞的攻擊數(shù)據(jù),之后在進(jìn)程內(nèi)進(jìn)行傳播處理。對(duì)于煙霧傳感器1 引入的攻擊數(shù)據(jù)ad1,將其作為觸發(fā)煙霧報(bào)警器的條件使用(程序點(diǎn)p5),即傳感器1 檢測(cè)到有煙霧則觸發(fā)報(bào)警器。對(duì)于光感傳感器2 引入的攻擊數(shù)據(jù)ad2,將其作為可調(diào)光光源的參數(shù)使用(程序點(diǎn)p6),即根據(jù)傳感器2 感應(yīng)的光強(qiáng)度調(diào)節(jié)光源的亮度。對(duì)于考勤機(jī)傳感器3 引入的攻擊數(shù)據(jù)ad3,將其作為統(tǒng)計(jì)報(bào)表內(nèi)容使用(程序點(diǎn)p7)。對(duì)于溫度傳感器4 引入的攻擊數(shù)據(jù)ad4,將其作為生成空調(diào)控制溫度的依據(jù)使用(程序點(diǎn)p8),即空調(diào)溫度控制器根據(jù)ad4 生成相應(yīng)的控制溫度并反作用于空調(diào)。
為了方便描述,使用bi_pj 表示二進(jìn)制文件bi 中包含程序點(diǎn)pj 的基本塊。圖6所示為上述應(yīng)用場(chǎng)景實(shí)例FSTM 示意圖(彩色效果見(jiàn)《計(jì)算機(jī)工程》官網(wǎng)HTML 版),圖中存在黃色節(jié)點(diǎn)代表攻擊數(shù)據(jù)引入節(jié)點(diǎn),綠色節(jié)點(diǎn)代表進(jìn)程間通信節(jié)點(diǎn),褐色節(jié)點(diǎn)代表進(jìn)程內(nèi)普通節(jié)點(diǎn),紅色節(jié)點(diǎn)代表威脅節(jié)點(diǎn),它們也屬于上述節(jié)點(diǎn)之一。
圖6 應(yīng)用場(chǎng)景實(shí)例模型示意圖Fig.6 Schematic diagram of application scenario example model
事實(shí)上終端固件中攻擊數(shù)據(jù)傳播路徑的探索過(guò)程本身就是一個(gè)NP 難問(wèn)題[16-17,24],如果想在多項(xiàng)式時(shí)間內(nèi)窮舉所有路徑是不可能的,因此,在FSTM 指導(dǎo)下進(jìn)行物聯(lián)網(wǎng)終端固件安全檢測(cè)時(shí)要采取多種優(yōu)化策略,以使探索結(jié)果盡可能最優(yōu)。
對(duì)于攻擊數(shù)據(jù)ad1,其作為報(bào)警器開(kāi)關(guān)的控制條件使用,如果該數(shù)據(jù)被篡改偽造,相應(yīng)的條件分支將不會(huì)被執(zhí)行,控制模塊生成的控制驅(qū)動(dòng)數(shù)據(jù)將與期望值不相符,以致煙感報(bào)警器不能按照實(shí)際情況運(yùn)行。
對(duì)于攻擊數(shù)據(jù)ad2,其作為可調(diào)光光源的參數(shù)在固件中使用,該參數(shù)應(yīng)根據(jù)環(huán)境亮度自適應(yīng)調(diào)整,據(jù)此調(diào)節(jié)屋內(nèi)光源亮度。如果該數(shù)據(jù)被設(shè)置為一個(gè)常數(shù),光源的亮度將不會(huì)隨著環(huán)境亮度而調(diào)整。
對(duì)于攻擊數(shù)據(jù)ad3,其作為顯示屏上統(tǒng)計(jì)報(bào)表的內(nèi)容使用,如果其大小超出了內(nèi)存中存儲(chǔ)該內(nèi)容的緩沖區(qū)大小,將會(huì)造成緩沖區(qū)溢出,引起系統(tǒng)工作異常甚至崩潰。
對(duì)于攻擊數(shù)據(jù)ad4,其作為空調(diào)溫度調(diào)節(jié)的依據(jù)反作用于終端上,如果施加于該數(shù)據(jù)上的約束集與實(shí)際的業(yè)務(wù)流程不一致,空調(diào)的工作模式、溫度、風(fēng)速及風(fēng)向等控制驅(qū)動(dòng)數(shù)據(jù)將與預(yù)期結(jié)果不一致。
對(duì)于FSTM 中b2_p5、b2_p6、b2_p7 和b2_p8 這4 個(gè)威脅節(jié)點(diǎn),在攻擊數(shù)據(jù)傳播路徑的探索過(guò)程中進(jìn)行識(shí)別。
FSTM 是針對(duì)由新攻擊面引入的攻擊數(shù)據(jù)對(duì)物聯(lián)網(wǎng)終端固件帶來(lái)的潛在威脅進(jìn)行建模的,其目的是為實(shí)際的固件安全檢測(cè)提供理論指導(dǎo)。但是,在具體的實(shí)踐檢測(cè)中,需要著重關(guān)注以下6 個(gè)問(wèn)題:
1)攻擊數(shù)據(jù)引入點(diǎn)的識(shí)別。由新攻擊面引入的攻擊數(shù)據(jù)是FSTM 的邏輯起點(diǎn),F(xiàn)STM 通過(guò)對(duì)這些數(shù)據(jù)在固件中的傳播交互進(jìn)行建模以分析其對(duì)終端固件的安全威脅。因此,攻擊數(shù)據(jù)引入點(diǎn)的識(shí)別是否完備和準(zhǔn)確,不僅是FSTM 的基礎(chǔ),還是在FSTM 指導(dǎo)下進(jìn)行固件安全檢測(cè)的關(guān)鍵。
2)單二進(jìn)制文件內(nèi)攻擊數(shù)據(jù)的傳播。單二進(jìn)制文件內(nèi)攻擊數(shù)據(jù)的傳播以固件代碼的控制流為驅(qū)動(dòng),這方面的研究雖然較為成熟,但也面臨著路徑探索過(guò)程中的路徑爆炸問(wèn)題。
3)跨二進(jìn)制文件間攻擊數(shù)據(jù)的傳播。本文通過(guò)對(duì)真實(shí)固件的分析,發(fā)現(xiàn)攻擊數(shù)據(jù)通過(guò)進(jìn)程間通信的方式進(jìn)行傳播,而且數(shù)據(jù)的傳輸載體信息已硬編碼在固件代碼中,這為實(shí)現(xiàn)跨二進(jìn)制文件的攻擊數(shù)據(jù)傳播分析提供了可能。本文僅對(duì)文件、環(huán)境變量、共享內(nèi)存和套接字4 種方式進(jìn)行分析,今后可根據(jù)實(shí)際情況來(lái)擴(kuò)充攻擊數(shù)據(jù)的進(jìn)程間傳播方式。
4)攻擊數(shù)據(jù)傳播路徑的完備性。攻擊數(shù)據(jù)在固件中的傳播是FSTM 的建模對(duì)象,其路徑是否完備主要取決于2 點(diǎn):(1)單二進(jìn)制文件內(nèi)傳播路徑識(shí)別是否完備;(2)多二進(jìn)制文件間攻擊數(shù)據(jù)通信識(shí)別是否完備。前者是一個(gè)NP 難問(wèn)題,本身只能得到近似求解,對(duì)于后者,本文也只分析了文件、環(huán)境變量、共享內(nèi)存和套接字4 種方式,但在今后的研究中將會(huì)不斷擴(kuò)展。
5)威脅斷言的可擴(kuò)充性和假陽(yáng)性。本文在威脅斷言部分僅定義了新攻擊面引入的攻擊數(shù)據(jù)對(duì)物聯(lián)網(wǎng)終端固件安全的4 種常見(jiàn)威脅,隨著后期研究的深入,可以對(duì)其進(jìn)行添加和更新。FSTM 在面對(duì)威脅斷言時(shí),如果滿足條件則只發(fā)出警報(bào)以供進(jìn)一步分析,至于威脅是否真的對(duì)終端固件或物理世界的安全造成危害,不在FSTM 討論的范疇。
6)業(yè)務(wù)導(dǎo)向威脅的有限性。傳統(tǒng)的威脅分析模型不能有效描述物聯(lián)網(wǎng)終端固件與物理世界的緊耦合性,也不能準(zhǔn)確描述物聯(lián)網(wǎng)終端固件與業(yè)務(wù)的強(qiáng)相關(guān)性。FSTM 很好地解決了上述2 個(gè)問(wèn)題,新攻擊面引入的攻擊數(shù)據(jù)是終端對(duì)物理世界的真實(shí)感知,4 種威脅斷言也是在以業(yè)務(wù)為導(dǎo)向的分析中提煉而得。但是,由于現(xiàn)實(shí)中物聯(lián)網(wǎng)終端功能各異,無(wú)法從海量業(yè)務(wù)中抽象出通用的業(yè)務(wù)模式,因此本文模型僅觸發(fā)警報(bào),是真陽(yáng)性還是假陽(yáng)性,需要分析者結(jié)合其他手段并根據(jù)特定的業(yè)務(wù)流程具體分析。
傳統(tǒng)安全威脅模型無(wú)法有效評(píng)估來(lái)自外部的攻擊數(shù)據(jù)對(duì)物聯(lián)網(wǎng)終端固件造成的危害。本文建立一種面向新攻擊面的物聯(lián)網(wǎng)終端固件安全威脅模型(FSTM)。分析結(jié)果表明,該模型可以有效描述物聯(lián)網(wǎng)終端固件與物理世界緊耦合與業(yè)務(wù)強(qiáng)相關(guān)的特性,為分析人員在業(yè)務(wù)導(dǎo)向下對(duì)物聯(lián)網(wǎng)終端固件進(jìn)行安全檢測(cè)提供理論指導(dǎo)。下一步將基于FSTM 模型研究物聯(lián)網(wǎng)終端固件的安全檢測(cè)技術(shù)。