(浙江大學(xué) 網(wǎng)絡(luò)空間安全學(xué)院, 浙江 杭州 310027)
隨著物聯(lián)網(wǎng)設(shè)備的普及,針對物聯(lián)網(wǎng)設(shè)備的攻擊也層出不窮.諸如網(wǎng)絡(luò)攝像頭、智能家居等物聯(lián)網(wǎng)設(shè)備由于廠商對安全性的重視不夠?qū)е掳踩┒床粩嘤楷F(xiàn),設(shè)備持續(xù)在線的特性又使得漏洞被攻擊利用的概率大大提高.這嚴(yán)重威脅了用戶的安全和隱私,甚至威脅整個互聯(lián)網(wǎng)的安全性.例如,一些網(wǎng)絡(luò)攝像頭使用默認(rèn)的用戶名和密碼[1](如 admin/admin)或者有隱藏的后門[2],攻擊者可以遠(yuǎn)程控制設(shè)備窺視用戶隱私.由物聯(lián)網(wǎng)設(shè)備組成的 Mirai 僵尸網(wǎng)絡(luò)對域名解析服務(wù)商 Dyn 發(fā)動拒絕服務(wù)(DDoS)攻擊,導(dǎo)致美國和歐洲很多知名網(wǎng)站如 Netflix、 GitHub 等停止工作,造成了極大的影響[3].
本文從物聯(lián)網(wǎng)設(shè)備軟件安全的感知、分析和防御角度出發(fā),梳理已有的研究工作,并且對這一領(lǐng)域一些新的研究方向和趨勢進(jìn)行初步展望.本文主要關(guān)注設(shè)備的軟件安全方面,對于設(shè)備的通信安全、硬件安全等方面則不做探討.
蜜罐系統(tǒng)作為感知威脅的傳統(tǒng)手段之一,用其感知和捕獲攻擊有著廣泛的應(yīng)用.近年來出現(xiàn)了一些針對物聯(lián)網(wǎng)設(shè)備的蜜罐系統(tǒng).然而由于物聯(lián)網(wǎng)設(shè)備的特點(diǎn)(硬件和軟件的碎片化),將蜜罐系統(tǒng)使用在物聯(lián)網(wǎng)設(shè)備中遇到了不小的挑戰(zhàn).
IoTPOT[4]是用來捕獲對物聯(lián)網(wǎng)設(shè)備Telnet程序進(jìn)行攻擊的蜜罐.由于設(shè)備中的Telnet服務(wù)器會采用弱密碼,攻擊者可以通過預(yù)置的密碼字典來登陸服務(wù)器.IoTPOT通過模擬不同設(shè)備對于Telnet請求的響應(yīng)同攻擊者進(jìn)行交互.在交互的過程中記錄下攻擊者的來源、發(fā)起的命令等信息.作者將該蜜罐部署在165個IP地址中,并且模擬了29個不同設(shè)備的響應(yīng).在一個月的數(shù)據(jù)收集中,總共捕獲到將近5萬次的成功攻擊.對攻擊的進(jìn)一步分析發(fā)現(xiàn),現(xiàn)實(shí)攻擊者在成功登錄設(shè)備后,往往會下載載荷(payload)以發(fā)起進(jìn)一步的攻擊.IoTPOT雖然成功捕獲到一些攻擊,但是其缺點(diǎn)在于交互性交叉,而且只能捕獲單一攻擊行為.
SIPHON采用真實(shí)的物聯(lián)網(wǎng)設(shè)備來組成蜜罐系統(tǒng)[5].通過分布在各地的虛擬機(jī)接入點(diǎn)(稱為 Wormholes)來接收外來請求并將請求分發(fā)到后端真實(shí)設(shè)備,然后通過分析流量來檢測攻擊.最近的一個系統(tǒng)HoneyCloud通過真實(shí)的硬件平臺和軟件模擬器混合的方式來構(gòu)建蜜罐系統(tǒng)[6].通過近兩年的持續(xù)監(jiān)測,該系統(tǒng)捕獲了八種不同的攻擊行為,比如竊取數(shù)據(jù)(設(shè)備的登錄密鑰)、發(fā)起DDoS攻擊等.采用硬件平臺的蜜罐系統(tǒng)雖然交互性較好,但是構(gòu)建成本高(需要購買不同的真實(shí)設(shè)備),并且很難對攻擊的過程進(jìn)行插樁(對真實(shí)設(shè)備上的軟件進(jìn)行插樁難度較大).而基于軟件系統(tǒng)的蜜罐(如HoneyCloud中的軟件蜜罐)雖然部署容易,但是交互程度差,對目標(biāo)系統(tǒng)的模擬完整度不高,容易被攻擊者識別.
為了解決這些問題,提高蜜罐系統(tǒng)的交互性,IoTCandyJar采用了機(jī)器學(xué)習(xí)的方法自動學(xué)習(xí)物聯(lián)網(wǎng)設(shè)備的行為[7].具體來說,IoTCandyJar 通過對互聯(lián)網(wǎng)上公共的物聯(lián)網(wǎng)設(shè)備的行為進(jìn)行學(xué)習(xí)記錄來不斷完善行為數(shù)據(jù)庫.當(dāng)接收到新的網(wǎng)絡(luò)請求后,IoTCandyJar 首先判斷該請求是否已經(jīng)學(xué)習(xí)過.如果是,則返回之前保存的行為.否則,向互聯(lián)網(wǎng)上其他設(shè)備發(fā)送相同的請求以獲得真實(shí)設(shè)備的響應(yīng)數(shù)據(jù).圖1是該系統(tǒng)結(jié)構(gòu)圖.該方法能以較低成本獲得物聯(lián)網(wǎng)設(shè)備的真實(shí)交互行為,因此蜜罐系統(tǒng)交互性高.不過該方法只能獲得真實(shí)設(shè)備中較低層次的響應(yīng)信息(如 HTTP 響應(yīng)中的頭信息),不適用于需要多次交互的攻擊場景.同樣由于沒有插樁機(jī)制,無法對攻擊的整個過程進(jìn)行實(shí)時監(jiān)測和記錄.
圖1 IotCandyJar系統(tǒng)結(jié)構(gòu)圖Fig.1 The system architecture of IoTCandyJar
雖然可以通過蜜罐系統(tǒng)來感知針對物聯(lián)網(wǎng)設(shè)備的威脅,但由于設(shè)備的硬件碎片化(采用不同的CPU架構(gòu))以及軟件的碎片化(基于多種操作系統(tǒng)平臺),導(dǎo)致目前沒有一個較好的軟件模擬平臺,因此,蜜罐系統(tǒng)的可擴(kuò)展性和交互性都還比較差.如何設(shè)計(jì)開發(fā)一個交互性好、仿真度高的蜜罐系統(tǒng)仍然是一個具有挑戰(zhàn)的問題.
除了主動通過蜜罐系統(tǒng)捕獲攻擊意外,研究人員也對目前由物聯(lián)網(wǎng)設(shè)備組成的僵尸網(wǎng)絡(luò)進(jìn)行了測量和行為分析.比較典型的工作是對于Mirai[3]和Hajime[8]的分析.Mirai是第一個引起公眾注意的物聯(lián)網(wǎng)僵尸網(wǎng)絡(luò).它第一次出現(xiàn)在2016年年中,在長達(dá)半年的過程中,衍生出很多的變種.該網(wǎng)絡(luò)高峰期感染了將近60萬臺設(shè)備.圖2顯示了Mirai僵尸網(wǎng)絡(luò)感染主機(jī)數(shù)量隨著時間遷移圖.通過對DNS服務(wù)器發(fā)起DDoS攻擊,導(dǎo)致了很多知名網(wǎng)站的癱瘓.研究顯示物聯(lián)網(wǎng)設(shè)備的安全狀態(tài)不容樂觀,一個基于字典的簡單攻擊就可以感染成千上萬臺物聯(lián)網(wǎng)設(shè)備.Hajime是一個新的僵尸網(wǎng)絡(luò),雖然其目標(biāo)很多與Mirai相同,但在設(shè)計(jì)和操作上有很大差異.Hajime使用公共點(diǎn)對點(diǎn)網(wǎng)絡(luò)作為其命令和控制(C&C)的基礎(chǔ)設(shè)施,并定期引入新的攻擊,從而提高其可恢復(fù)性.
圖2 Mirai僵尸網(wǎng)絡(luò)感染主機(jī)數(shù)量示意圖[3]Fig.2 The number of infected hosts by Mirai[3]
圖2的不同深淺線條表示通過不同的端口進(jìn)行掃描和感染的主機(jī)數(shù)量.從圖2可見,該網(wǎng)絡(luò)使用了不同的協(xié)議和端口來實(shí)施感染行為.
Cetin等[9]研究了如何清除Mirai僵尸網(wǎng)絡(luò)中受感染的機(jī)器.研究表明,ISP在僵尸網(wǎng)絡(luò)節(jié)點(diǎn)清理方面扮演著至關(guān)重要的角色,ISP可以通過建立隔離網(wǎng)絡(luò)的方式來清除僵尸網(wǎng)絡(luò);其次,對感染用戶進(jìn)行主動通知是可行的,盡管目前基于用戶通知和清理建議的可用性比較低.不過筆者也發(fā)現(xiàn),ISP目前并沒有太高的積極性對僵尸網(wǎng)絡(luò)進(jìn)行主動的清理.如何從經(jīng)濟(jì)和法律的層面來促使ISP擔(dān)負(fù)起相關(guān)的責(zé)任需要進(jìn)一步的探討.
針對物聯(lián)網(wǎng)設(shè)備碎片化的特點(diǎn),研究人員通過靜態(tài)大規(guī)模分析尋找設(shè)備安全性問題,開發(fā)動態(tài)分析平臺分析設(shè)備固件安全,以及使用模糊測試進(jìn)行漏洞挖掘.
Costin等[10]在 2014 年發(fā)布了第一個大規(guī)模物聯(lián)網(wǎng)固件安全性的研究報(bào)告,該研究收集了超過3萬個物聯(lián)網(wǎng)設(shè)備的固件,然后使用工具對固件進(jìn)行分析.他們的研究發(fā)現(xiàn)了多個之前沒有被報(bào)道的零日漏洞,如私鑰沒有被正確保護(hù)等.他們的后續(xù)工作則從固件的 Web 服務(wù)器入手,分析其中潛在的安全威脅[11].Firmalice利用二進(jìn)制分析的方法,尋找固件中一類特殊的安全漏洞[12]:廠商預(yù)留的后門.這里的后門不一定是具有惡意的,也可能是廠商為了調(diào)試方便而預(yù)置在固件中.不過攻擊者仍然可以利用這樣的后門來獲得設(shè)備的控制權(quán).Firmalice使用符號執(zhí)行等技術(shù)自動檢測固件中隱藏的后門并能獲取登錄的密鑰.不過由于該系統(tǒng)是一個靜態(tài)分析系統(tǒng),不能對發(fā)現(xiàn)的安全問題進(jìn)行自動化的測試和確認(rèn).
靜態(tài)分析雖然能快速發(fā)現(xiàn)問題,然而靜態(tài)分析的誤報(bào)率比較高,并且很難對設(shè)備的安全問題做動態(tài)行為監(jiān)控和確認(rèn).為了解決這個局限性,研究人員開發(fā)了不同的動態(tài)分析系統(tǒng).Firmadyne是第一個能大規(guī)模地動態(tài)分析設(shè)備固件的系統(tǒng)[13].它通過使用軟件模擬器(QEMU)對物聯(lián)網(wǎng)設(shè)備的動態(tài)進(jìn)行仿真和分析.其利用修改過的Linux內(nèi)核啟動固件的用戶態(tài)程序,并且自動化生成設(shè)備網(wǎng)絡(luò)配置.針對超過2萬個固件的實(shí)驗(yàn)表面,F(xiàn)IRMADYNE能對已知的攻擊行為進(jìn)行分析并且能發(fā)現(xiàn)未知的漏洞.Avatar[14]和Avatar2[15]通過混合使用硬件真實(shí)執(zhí)行和軟件模擬執(zhí)行來分析設(shè)備固件.它可以選擇性地在真實(shí)設(shè)備和虛擬機(jī)平臺之間進(jìn)行切換,并且結(jié)合S2E進(jìn)行符號執(zhí)行和浮點(diǎn)分析來分析固件行為.雖然系統(tǒng)的分析完整度較高,但是其依賴JTAG硬件調(diào)試端口導(dǎo)致很難大規(guī)模使用該分析平臺.
近年來的研究表明,模糊測試在發(fā)現(xiàn)漏洞方面具有非常好的效果.因此,研究人員也嘗試將模糊測試引入到物聯(lián)網(wǎng)設(shè)備安全中.IoTFuzzer在無法訪問固件的情況下,可以自動化發(fā)現(xiàn)物聯(lián)網(wǎng)設(shè)備中的內(nèi)存破壞(memory corruption)漏洞[16].他們分析物聯(lián)網(wǎng)設(shè)備通常是可以通過官方的應(yīng)用來進(jìn)行控制的.因此,可以通過分析應(yīng)用和設(shè)備之間的交互協(xié)議,識別和重用特定的程序的邏輯(如加密)來改變測試用例(特別是消息字段),自動生成通信數(shù)據(jù).然后觀察設(shè)備的返回值,從而檢測設(shè)備固件的軟件漏洞.該方法的缺點(diǎn)在于只能作用于有官方控制應(yīng)用的物聯(lián)網(wǎng)設(shè)備,適用度不高.Muench等[17]對物聯(lián)網(wǎng)設(shè)備和內(nèi)存錯誤漏洞的影響進(jìn)行分類.研究在不同種類的設(shè)備中所存在的內(nèi)存錯誤漏洞后,評估了應(yīng)對這些漏洞的方法,然后提出了一個基于Avatar和Panda的模糊測試系統(tǒng).該系統(tǒng)使用了6種不同的現(xiàn)存部分仿真或全部仿真的啟發(fā)式分析方法.通過對這個系統(tǒng)一系列的實(shí)驗(yàn),得出結(jié)論,這6種分析方法可以有效提高對嵌入式設(shè)備的模糊測試效率.該系統(tǒng)能分析的設(shè)備固件種類受限,并且分析的速度也有待提高.Firm-AFL將用在桌面系統(tǒng)上的AFL移植到物聯(lián)網(wǎng)設(shè)備中[18],通過將進(jìn)程級別分析平臺同全系統(tǒng)分析平臺Firmadyne結(jié)合,使用不同的模糊測試用例策略來自動化發(fā)現(xiàn)系統(tǒng)固件中的安全問題.采用進(jìn)程級別的分析可以大幅度提高系統(tǒng)的分析效率.實(shí)驗(yàn)結(jié)果表明,該平臺能重現(xiàn)舊的安全威脅和發(fā)現(xiàn)新的漏洞.
另外,最近的一些研究嘗試通過代碼相似度的方法來進(jìn)行固件安全性分析.該方面的基本思想是如何快速準(zhǔn)確地通過已經(jīng)有的漏洞模式,快速判斷一個新的固件中是否也存在類似的漏洞.這里的挑戰(zhàn)在于往往要分析的固件沒有源代碼,并且代碼的架構(gòu)、編譯器工具、編譯選項(xiàng)等都有不同.這給相似度分析帶來了比較大的挑戰(zhàn).Pewny等[19]提出了基于輸入和輸出的賦值表達(dá)式的方法來表達(dá)一個程序中基本塊的語義,然后通過I/O的行為來尋找和漏洞代碼具有相似模式的代碼路徑.另外,David等[20]發(fā)現(xiàn),在通過相似度進(jìn)行漏洞匹配的時候,基于函數(shù)級別的相似度往往不能準(zhǔn)確進(jìn)行匹配,還需要配合函數(shù)周圍的信息,其提出的FirmUp系統(tǒng)能對不同體系架構(gòu)中的固件中的漏洞進(jìn)行快速準(zhǔn)確的匹配.另外,研究人員還嘗試基于神經(jīng)網(wǎng)絡(luò)對跨體系架構(gòu)的固件進(jìn)行代碼相似度分析[21].
對于設(shè)備軟件安全性增強(qiáng)的工作主要集中在提供新的安全原語,基于編譯器對于軟件進(jìn)行安全加固,實(shí)現(xiàn)新的輕量級的保護(hù)方案等.
Dominance是一個新的物聯(lián)網(wǎng)系統(tǒng)的可信計(jì)算原語[22],它可以保證在短時間內(nèi)對被攻擊的物聯(lián)網(wǎng)設(shè)備進(jìn)行恢復(fù),即使攻擊者已經(jīng)控制了這些設(shè)備.并且它可以對設(shè)備進(jìn)行強(qiáng)制的安全固件升級.C-FLAT通過在設(shè)備上使用控制流完整性來進(jìn)行安全性保證[23].具體來說,該系統(tǒng)首先計(jì)算合法的控制流圖,然后通過在運(yùn)行時計(jì)算控制流信息,并且采用遠(yuǎn)程認(rèn)證的方式將控制流信息發(fā)送到認(rèn)證服務(wù)器進(jìn)行驗(yàn)證.一旦有非法的控制流跳轉(zhuǎn)發(fā)生,認(rèn)證服務(wù)器能感知到威脅并采取行動.C-FLAT的缺點(diǎn)在于其計(jì)算控制流跳轉(zhuǎn)哈希值的開銷過大,并且也不能保證數(shù)據(jù)流完整性.EPOXY通過權(quán)限覆蓋(Privilege Overlaying)的方式對代碼進(jìn)行權(quán)限分割[24].也就是說只有需要執(zhí)行特權(quán)操作的代碼才需要運(yùn)行在特權(quán)態(tài),其他的代碼只需要運(yùn)行在普通的特權(quán)等級即可.系統(tǒng)通過編譯器對軟件代碼進(jìn)行自動分析并且自動對代碼進(jìn)行特權(quán)分割.圖3顯示了一個典型的系統(tǒng)的內(nèi)存映射.EPOXY通過對代碼的特權(quán)分割,規(guī)定哪一些代碼可以訪問哪一些具體的內(nèi)存地址.Abbasi等[25]分析了現(xiàn)有的嵌入式操作系統(tǒng)中采用的安全措施,然后提出了μArmor系統(tǒng).它基于編譯器將現(xiàn)有的軟件安全措施應(yīng)用到操作系統(tǒng)中,對軟件代碼進(jìn)行加固.
圖3 一個典型的基于ARM Cortex-M芯片的系統(tǒng)內(nèi)存映射圖
Fig.3 A typical memory mapping for systems based on the ARM Cortex-M architecture
針對設(shè)備軟件安全研究越來越受到重視,從近年來的安全會議上可見收錄的相關(guān)文章逐漸增多.本文對一些新的研究方向提出初步的展望.
(1)新的威脅感知方法.雖然通過蜜罐系統(tǒng)可以感知到針對物聯(lián)網(wǎng)設(shè)備的攻擊,但是目前的蜜罐系統(tǒng)交互性和仿真性還比較差.如何設(shè)計(jì)出一個比較好的物聯(lián)網(wǎng)設(shè)備蜜罐系統(tǒng)是需要研究的問題.另外,還可以通過對網(wǎng)絡(luò)中多維的數(shù)據(jù)信息進(jìn)行融合分析來感知威脅,如融合DNS數(shù)據(jù)、ISP網(wǎng)絡(luò)流量數(shù)據(jù)以及設(shè)備固件中提取訪問模式,從而能感知可疑和未知的威脅.
(2)新的靜態(tài)分析工具和方法.目前的靜態(tài)分析方法在擴(kuò)展性和準(zhǔn)確度方面還有比較大的提升空間.特別是目前的物聯(lián)網(wǎng)設(shè)備軟件多基于ARM和MIPS架構(gòu),而目前的靜態(tài)分析工具對于這兩類架構(gòu)支持程度不高.初期研究表明現(xiàn)有的反編譯工具在分析ARM代碼方面準(zhǔn)確度比較低,對于代碼/數(shù)據(jù),函數(shù)邊界識別還需要很大提升空間.因此,如何提出新的靜態(tài)分析的工具和方法也是將來可以進(jìn)行研究的方向之一.
(3)新的動態(tài)分析平臺.FIRMADYNE作為為數(shù)不多的動態(tài)分析平臺[13],對固件分析成功率比較低.實(shí)驗(yàn)結(jié)果表明,F(xiàn)IRMADYNE只能成功運(yùn)行約30%的基于Linux操作系統(tǒng)的物聯(lián)網(wǎng)設(shè)備固件.因此,如何能提高運(yùn)行的成功率,自動化尋找失敗的原因并且進(jìn)行修復(fù)是值得探索的方向.同時,對于非Linux軟件平臺如何去進(jìn)行動態(tài)分析,也是目前還沒有解決的難題.