穆超,王鑫,楊明,張恒,陳振婭,吳曉明
面向物聯(lián)網(wǎng)設(shè)備固件的硬編碼漏洞檢測方法
穆超1,王鑫1,楊明1,張恒2,陳振婭1,吳曉明1
(1. 齊魯工業(yè)大學(xué)(山東省科學(xué)院)山東省計(jì)算中心(國家超級(jí)計(jì)算濟(jì)南中心)山東省計(jì)算機(jī)網(wǎng)絡(luò)重點(diǎn)實(shí)驗(yàn)室,山東 濟(jì)南 250014;2. 江蘇海洋大學(xué)計(jì)算機(jī)工程學(xué)院,江蘇 連云港 222005)
隨著物聯(lián)網(wǎng)設(shè)備的普及,越來越多有價(jià)值的數(shù)據(jù)產(chǎn)生,依托物聯(lián)網(wǎng)設(shè)備進(jìn)行大數(shù)據(jù)分析和挖掘是近年來學(xué)術(shù)界和工業(yè)界關(guān)注的熱點(diǎn)問題。然而,由于缺乏必要的檢測和防護(hù)手段,很多物聯(lián)網(wǎng)設(shè)備存在嚴(yán)重的信息安全隱患。特別地,設(shè)備硬編碼信息與系統(tǒng)加解密、身份認(rèn)證等功能密切相關(guān),可為核心數(shù)據(jù)提供機(jī)密性保障,一旦被惡意攻擊者利用,會(huì)產(chǎn)生敏感信息泄露、后門攻擊、非授權(quán)登錄等嚴(yán)重后果。針對該問題,在研究物聯(lián)網(wǎng)設(shè)備中硬編碼漏洞表現(xiàn)特征的基礎(chǔ)上,提出了一種可執(zhí)行文件中多類型字符識(shí)別定位和硬編碼漏洞檢測方法。首先,提取固件內(nèi)容并篩選所有可執(zhí)行文件作為待分析源,提出特殊格式字符、外部文件引用、密碼實(shí)現(xiàn)3類硬編碼字符的識(shí)別與定位;然后,根據(jù)函數(shù)調(diào)用關(guān)系對硬編碼字符所在函數(shù)進(jìn)行可達(dá)性分析,采用中間表示IR模型消除指令異構(gòu)性,并利用數(shù)據(jù)流分析方法確定字符型和參數(shù)型硬編碼值;最后,設(shè)計(jì)符號(hào)執(zhí)行方法確定硬編碼漏洞的觸發(fā)條件,最終輸出漏洞檢測結(jié)果。一方面,所提方法在利用中間表示模型的基礎(chǔ)上引入了符號(hào)執(zhí)行的方法,消除了指令架構(gòu)依賴性,減少了漏洞誤報(bào)率;另一方面,該方法可融合字符、文件、密碼實(shí)現(xiàn)3類硬編碼字符的不同特征表現(xiàn),增加了漏洞檢測的覆蓋范圍,提升了檢測方法的通用性。實(shí)驗(yàn)結(jié)果表明,所提方法可有效檢測多種物聯(lián)網(wǎng)設(shè)備中的字符、文件、密碼3類硬編碼漏洞,具有較好的檢測精度,可為后續(xù)安全防護(hù)技術(shù)的部署提供一定指導(dǎo)。
大數(shù)據(jù);物聯(lián)網(wǎng)安全;硬編碼;漏洞檢測
隨著大數(shù)據(jù)技術(shù)的迅猛發(fā)展,以數(shù)據(jù)為依托的大數(shù)據(jù)應(yīng)用技術(shù)不斷完善,同時(shí)大數(shù)據(jù)帶來的隱私泄露等安全問題日益突出,數(shù)據(jù)的采集、傳輸、存儲(chǔ)、應(yīng)用等各個(gè)環(huán)節(jié)都需要進(jìn)行數(shù)據(jù)安全的保障工作。在數(shù)據(jù)采集階段,物聯(lián)網(wǎng)設(shè)備擁有豐富的傳感器和感知器,是獲取各項(xiàng)指標(biāo)、屬性等重要參數(shù)的數(shù)據(jù)終端,亦是大數(shù)據(jù)應(yīng)用的數(shù)據(jù)來源[1]。因此,為獲得真實(shí)可靠的數(shù)據(jù)資源,研究物聯(lián)網(wǎng)終端設(shè)備安全具有重要意義。
然而,物聯(lián)網(wǎng)設(shè)備生產(chǎn)廠商急于推出產(chǎn)品搶占市場,缺乏系統(tǒng)上線前產(chǎn)品的安全檢測,導(dǎo)致物聯(lián)網(wǎng)產(chǎn)品存在大量的漏洞;另外,廠商產(chǎn)品中缺少安全防護(hù)模塊,難以應(yīng)對不斷演化的惡意攻擊行為。進(jìn)一步,規(guī)模龐大的物聯(lián)網(wǎng)設(shè)備暴露在公網(wǎng)中,這些設(shè)備存儲(chǔ)著海量的用戶數(shù)據(jù),一旦被惡意攻擊者控制,會(huì)導(dǎo)致嚴(yán)重的用戶隱私泄露,從而引發(fā)更嚴(yán)重的網(wǎng)絡(luò)攻擊。例如,在2016年的Mirai僵尸網(wǎng)絡(luò)攻擊事件[2]中,攻擊者攻陷了數(shù)以萬計(jì)的物聯(lián)網(wǎng)設(shè)備,并以此為節(jié)點(diǎn)發(fā)動(dòng)分布式拒絕服務(wù)(DDoS,distributed denial of service)攻擊,最高攻擊峰值達(dá)到1 Tbit/s,造成大量主流網(wǎng)站癱瘓。
近幾年,研究者在物聯(lián)網(wǎng)安全領(lǐng)域做了大量工作[3-5],主要研究方向包括物聯(lián)網(wǎng)設(shè)備通信協(xié)議缺陷分析[6-8]、物聯(lián)網(wǎng)云平臺(tái)安全[9-11]和物聯(lián)網(wǎng)固件漏洞檢測[12-16],重點(diǎn)研究了內(nèi)存泄露、代碼注入、認(rèn)證繞過、信息泄露等安全問題。在這些工作中,針對物聯(lián)網(wǎng)設(shè)備中可執(zhí)行文件的硬編碼漏洞研究還處于初級(jí)階段。硬編碼與系統(tǒng)的授權(quán)認(rèn)證、密碼保護(hù)等模塊有重要關(guān)系,這些模塊中包含保障物聯(lián)網(wǎng)安全的核心組件,提供數(shù)據(jù)加解密、數(shù)字證書應(yīng)用和身份認(rèn)證等功能,對于保證物聯(lián)網(wǎng)設(shè)備核心數(shù)據(jù)的機(jī)密性、保障關(guān)鍵信息的完整性和可用性至關(guān)重要。若這些組件本身存在安全問題,一旦被攻擊者利用,會(huì)引發(fā)嚴(yán)重的安全事故,威脅人身財(cái)產(chǎn)安全。例如,F(xiàn)-Secure公司的研究人員發(fā)現(xiàn)在Foscam C2和Opticam I5的網(wǎng)絡(luò)攝像頭中,存在多處硬編碼漏洞[17],可導(dǎo)致非授權(quán)用戶遠(yuǎn)程訪問,造成持續(xù)性的網(wǎng)絡(luò)攻擊。
針對硬編碼漏洞的檢測,通常采用漏洞特征提取與靜態(tài)分析結(jié)合的技術(shù)。在現(xiàn)有研究中,Thomas等[18]提出了一種靜態(tài)分析方法測量單個(gè)靜態(tài)數(shù)據(jù)對固件中二進(jìn)制文件控制流程的影響,識(shí)別二進(jìn)制文件中的靜態(tài)數(shù)據(jù)對比函數(shù),并使用靜態(tài)數(shù)據(jù)序列集標(biāo)記每個(gè)函數(shù)的基礎(chǔ)塊和可達(dá)性,從而確定硬編碼身份認(rèn)證后門。該方案測試樣本較少,無法保證在大規(guī)模測試中的適用性。Shoshitaishvili等[19]研發(fā)了一種支持物聯(lián)網(wǎng)設(shè)備運(yùn)行和分析的工具Firmalice,基于符號(hào)執(zhí)行引擎Angr[20]和程序切片技術(shù)增加漏洞分析的可擴(kuò)展性,根據(jù)攻擊者的輸入控制能力檢測硬編碼型的認(rèn)證繞過漏洞,但該工具需要人工設(shè)置安全策略,對先驗(yàn)知識(shí)有較強(qiáng)的依賴性。
在現(xiàn)有針對硬編碼漏洞檢測的研究工作中,大多考慮特定的物聯(lián)網(wǎng)設(shè)備,存在樣本數(shù)量較少的問題,且在特定格式敏感字符與硬編碼外部文件引用的檢測方面存在較大不足,缺乏密碼模塊硬編碼漏洞檢測的深入研究?,F(xiàn)有安全事件表明,某些特定格式字符(如WPS PIN碼、IP地址、郵箱)被攻擊者獲知,可幫助其構(gòu)造更復(fù)雜更高級(jí)的攻擊方案;密鑰硬編碼文件的泄露可造成設(shè)備的授權(quán)繞過、加密數(shù)據(jù)被解密、協(xié)議信道被攻破等問題;密碼模塊是物聯(lián)網(wǎng)設(shè)備安全建設(shè)的重要支柱,也是漏洞檢測的重中之重,而現(xiàn)有針對密碼理論和密碼實(shí)現(xiàn)中的硬編碼漏洞研究較欠缺,存在嚴(yán)重的安全隱患。因此,亟須開展針對物聯(lián)網(wǎng)設(shè)備硬編碼漏洞的安全檢測研究。
本文提出一種面向物聯(lián)網(wǎng)設(shè)備固件的硬編碼漏洞檢測方法,可以自動(dòng)化實(shí)現(xiàn)硬編碼字符識(shí)別和硬編碼漏洞檢測。首先,獲取和解析物聯(lián)網(wǎng)固件文件,并篩選所有可執(zhí)行文件。本文考慮3種硬編碼型漏洞,對特定格式字符串、外部引用文件和密碼實(shí)現(xiàn)中的硬編碼字符進(jìn)行識(shí)別和定位,結(jié)合函數(shù)調(diào)用關(guān)系進(jìn)行函數(shù)可達(dá)性分析,采用中間表示(IR,intermediate representation)形式模型解決固件異構(gòu)問題,生成核心函數(shù)控制流程圖(CFG,control flow graph),并利用符號(hào)執(zhí)行引擎進(jìn)行約束求解,最終獲得硬編碼漏洞觸發(fā)條件。
本文的主要貢獻(xiàn)如下。
1) 提出一種針對硬編碼漏洞的檢測方法,識(shí)別和定位特定硬編碼字符,判斷函數(shù)調(diào)用可達(dá)性,定位敏感函數(shù)中關(guān)鍵參數(shù)的數(shù)據(jù)流和分析符號(hào)執(zhí)行,實(shí)現(xiàn)硬編碼漏洞的精準(zhǔn)識(shí)別和檢測。
2) 設(shè)計(jì)并構(gòu)建一種面向物聯(lián)網(wǎng)設(shè)備固件的硬編碼漏洞檢測系統(tǒng),實(shí)現(xiàn)3種類型的硬編碼漏洞檢測(可導(dǎo)致安全風(fēng)險(xiǎn)的特殊格式硬編碼字符、敏感文件的外部引用、使用硬編碼參數(shù)的不安全密碼函數(shù)實(shí)現(xiàn)),該系統(tǒng)具備良好的可擴(kuò)展性和適用性。
3) 基于構(gòu)建的硬編碼漏洞檢測系統(tǒng),對多類真實(shí)物聯(lián)網(wǎng)設(shè)備固件進(jìn)行了處理和安全性分析,成功地在多個(gè)固件中檢測出硬編碼漏洞。
目前針對物聯(lián)網(wǎng)設(shè)備固件漏洞的檢測與分析已有大量的研究工作,其中與本文研究內(nèi)容相關(guān)的研究方案主要包括動(dòng)態(tài)分析和靜態(tài)分析。
動(dòng)態(tài)分析指通過將固件程序加載到實(shí)際設(shè)備或仿真環(huán)境中,融合模糊測試等技術(shù)生成測試用例,并根據(jù)程序?qū)崟r(shí)運(yùn)行狀態(tài)來分析和挖掘漏洞的技術(shù)。FIRM-AFL[21]是目前主流的物聯(lián)網(wǎng)固件仿真工具,可以實(shí)現(xiàn)大量基于Linux內(nèi)核的固件全系統(tǒng)仿真,但支持的系統(tǒng)架構(gòu)有限,且無法支持實(shí)時(shí)操作系統(tǒng)。Avatar[22]實(shí)現(xiàn)了軟硬件混合的仿真系統(tǒng),通過連接模擬器和真實(shí)硬件完成指令操作,但軟硬件之間的頻繁交互使得仿真時(shí)效性較差。IoTFuzzer[23]通過分析物聯(lián)網(wǎng)設(shè)備的App來挖掘內(nèi)存漏洞,但僅局限于分析有對應(yīng)App的物聯(lián)網(wǎng)設(shè)備,且代碼覆蓋率不高。總之,動(dòng)態(tài)分析受制于物聯(lián)網(wǎng)設(shè)備有限的存儲(chǔ)和計(jì)算資源,以及需要適配復(fù)雜異構(gòu)的硬件環(huán)境,這增加了動(dòng)態(tài)分析的難度。
靜態(tài)分析的分析對象是程序源碼和二進(jìn)制文件,通過逆向提取固件文件系統(tǒng),搭建檢測模型,結(jié)合程序分析技術(shù)等實(shí)現(xiàn)挖掘漏洞。Karonte[24]首先提取二進(jìn)制文件中的用戶請求模塊,追蹤進(jìn)程間通信數(shù)據(jù)流的傳播過程并建立二進(jìn)制依賴圖(BDG,binary dependency graph),采用跨文件污點(diǎn)分析方法檢測不安全的數(shù)據(jù)流。SaTC[25]通過Web服務(wù)的前端搜索用戶輸入的關(guān)鍵字,并根據(jù)該數(shù)據(jù)流定位處理輸入的后端代碼,利用敏感字符污點(diǎn)分析來發(fā)現(xiàn)非可信輸入和危險(xiǎn)應(yīng)用。上述研究主要針對用戶輸入的安全檢測,卻忽略了系統(tǒng)中的硬編碼會(huì)存在安全威脅。Mu等[26]采用函數(shù)特征提取以及改進(jìn)的指令統(tǒng)計(jì)方法來識(shí)別物聯(lián)網(wǎng)中的密碼函數(shù),并通過調(diào)用關(guān)系圖分析函數(shù)應(yīng)用場景,該研究主要集中在對物聯(lián)網(wǎng)固件中密碼函數(shù)的識(shí)別,并未檢測密碼函數(shù)實(shí)現(xiàn)中是否存在缺陷。FIE[27]通過符號(hào)化思維,建立終端統(tǒng)一描述進(jìn)行符號(hào)執(zhí)行分析,可提升分析覆蓋率,但對源碼有較強(qiáng)的依賴性,且未考慮密碼實(shí)現(xiàn)中的安全問題。
本節(jié)介紹關(guān)于物聯(lián)網(wǎng)設(shè)備固件中硬編碼字符識(shí)別和硬編碼漏洞檢測的背景知識(shí)。
程序源代碼需經(jīng)編譯器編譯為二進(jìn)制可執(zhí)行文件,該過程與所選編譯器、編譯配置選項(xiàng)、編譯優(yōu)化選項(xiàng)等相關(guān);由于物聯(lián)網(wǎng)設(shè)備存在不同的系統(tǒng)架構(gòu),編譯生成的二進(jìn)制可執(zhí)行文件具有完全不同的匯編代碼形式,增加了調(diào)試分析程序的難度。為解決不同編譯選項(xiàng)、不同系統(tǒng)架構(gòu)所帶來的異構(gòu)難題,選擇將二進(jìn)制可執(zhí)行文件反編譯后進(jìn)行中間表示轉(zhuǎn)換:將不同架構(gòu)匯編代碼統(tǒng)一轉(zhuǎn)化為同一種中間語言,通過對中間語言表示的優(yōu)化和分析,克服異構(gòu)分析協(xié)調(diào)的挑戰(zhàn)。
對二進(jìn)制可執(zhí)行文件的分析主要步驟有:解碼文件指令,翻譯為帶語義的特定格式語言。針對特定系統(tǒng)架構(gòu)的解碼器在該架構(gòu)下?lián)碛性敿?xì)的指令系統(tǒng),但其具有較強(qiáng)的指令依賴性,難以移植;可支持多處理器體系架構(gòu)的通用解碼器,其對指令的表示和描述具有一致性。
本文選擇Angr工具中基于Valgrind[28]實(shí)現(xiàn)的PyVEX模塊構(gòu)建中間表示,其支持對多種架構(gòu)的抽象,并具有豐富的API接口,包括寄存器、堆棧結(jié)構(gòu)、常量、算術(shù)運(yùn)算與邏輯運(yùn)算等指令和結(jié)構(gòu)的分析和調(diào)用。
本文采用數(shù)據(jù)流分析方法,定位已轉(zhuǎn)為中間語言的待檢函數(shù)參數(shù)等數(shù)據(jù),對參數(shù)在執(zhí)行過程中的賦值與調(diào)用等操作進(jìn)行分析,以檢測硬編碼型缺陷。
數(shù)據(jù)流分析是一種針對數(shù)據(jù)在程序執(zhí)行路徑上的分析溯源技術(shù),用于分析數(shù)據(jù)在程序執(zhí)行過程中的流動(dòng)方向和取值變化。在數(shù)據(jù)流分析中,依據(jù)不同的程序路徑分析精度,語句的執(zhí)行順序可以分為流敏感性分析和流不敏感性分析;考慮程序路徑的深度,根據(jù)程序中函數(shù)代碼的數(shù)據(jù)傳遞位置不同分為過程內(nèi)分析和過程間分析。
利用數(shù)據(jù)流分析規(guī)則,并按照某種路徑執(zhí)行順序分析代碼的中間表示過程,是檢測漏洞的有效手段。按照程序執(zhí)行過程自底向上、從右至左的分析順序,在數(shù)據(jù)流分析中,與數(shù)據(jù)產(chǎn)生和傳輸直接相關(guān)且最重要的語句是賦值語句及過程調(diào)用語句。賦值語句用于改變變量的取值,且在同一函數(shù)調(diào)用中可能會(huì)發(fā)生多次變化,需要根據(jù)檢測規(guī)則標(biāo)注和監(jiān)控變量取值的變化過程,同時(shí)觀測運(yùn)行至控制轉(zhuǎn)移語句時(shí)的路徑條件。對于過程調(diào)用語句,需根據(jù)函數(shù)的名稱和定義識(shí)別各參數(shù)的語義信息,并依據(jù)函數(shù)調(diào)用關(guān)系圖分析參數(shù)在各函數(shù)調(diào)用時(shí)的傳遞過程及賦值變化。
分析過程內(nèi)數(shù)據(jù)流時(shí),按照程序的存儲(chǔ)位置以及程序控制流程圖確定語句執(zhí)行順序。對程序流程圖進(jìn)行廣度優(yōu)先或深度優(yōu)先遍歷時(shí),在基本塊上保留部分分析結(jié)果,并采用前置條件或后置條件進(jìn)行基本塊摘要運(yùn)算。分析過程間數(shù)據(jù)流時(shí),首先保存當(dāng)前執(zhí)行程序段的數(shù)據(jù)環(huán)境,然后對調(diào)用過程的內(nèi)部代碼進(jìn)行分析,并保存返回時(shí)的參數(shù)值。
本文利用Angr工具的符號(hào)執(zhí)行模型,對數(shù)據(jù)流分析定位的參數(shù)進(jìn)行約束求解,以此生成運(yùn)行至該參數(shù)的路徑限制條件,從而明確硬編碼漏洞的觸發(fā)條件。
符號(hào)執(zhí)行是一種靜態(tài)分析方法,將程序執(zhí)行模擬為符號(hào)表達(dá)式,程序的輸出結(jié)果表示為符號(hào)之間的邏輯和算術(shù)運(yùn)算,對程序流程的分析轉(zhuǎn)化為對表達(dá)式的求解。符號(hào)執(zhí)行根據(jù)程序的執(zhí)行過程可以分為針對單個(gè)函數(shù)的過程內(nèi)分析,以及考慮函數(shù)調(diào)用過程和環(huán)境信息的過程間分析。
符號(hào)執(zhí)行通常用于程序全局分析和代碼安全性檢測,首先解析程序代碼并生成中間表示,構(gòu)建程序路徑控制流圖和調(diào)用圖等,借助符號(hào)表示式完成程序執(zhí)行流程的覆蓋,之后進(jìn)行約束求解產(chǎn)生測試用例,根據(jù)滿足條件判斷路徑可達(dá)性。檢查變量和符號(hào)的取值是否滿足相應(yīng)的約束條件或符合特定的漏洞特征,進(jìn)而深入該路徑分析程序的執(zhí)行缺陷中。當(dāng)遇到循環(huán)、迭代、遞歸調(diào)用時(shí),符號(hào)執(zhí)行易產(chǎn)生路徑爆炸,采用增加限制條件來緩解分析路徑的數(shù)量。
在工程實(shí)現(xiàn)時(shí),密碼算法可能會(huì)出現(xiàn)硬編碼的漏洞,通常這種硬編碼以初始值、參數(shù)等形式出現(xiàn)。例如,在源代碼中,設(shè)置關(guān)鍵參數(shù)為常量,編譯生成的可執(zhí)行文件會(huì)攜帶這種硬編碼特征;在可執(zhí)行文件調(diào)用密碼函數(shù)進(jìn)行參數(shù)賦值時(shí),安全狀態(tài)下這些參數(shù)來自用戶輸入或系統(tǒng)隨機(jī)生成,但由于程序硬編碼漏洞的存在,相關(guān)參數(shù)可能會(huì)被直接賦值為靜態(tài)常量。以RSA算法中的Padding值以及CBC模式中的初始化向量(IV,initialization vector)為例,若這些參數(shù)實(shí)現(xiàn)不當(dāng),則密碼算法可能存在硬編碼漏洞。根據(jù)CWE-780對該漏洞的官方描述,當(dāng)RSA算法未采用最優(yōu)非對稱加密填充(OAEP,optimal asymmetric encryption padding)時(shí),這些弱安全填充模式使用非隨機(jī)字節(jié),使得明文和密文之間具有映射性,進(jìn)而導(dǎo)致明文更容易被推測。在采用CBC模式的密碼算法中,加解密需利用一個(gè)初始IV值與第一個(gè)塊進(jìn)行異或,并將異或結(jié)果作為下一個(gè)塊的IV,若初始IV值設(shè)定不當(dāng),則可能受BEAST攻擊[29]。
系統(tǒng)架構(gòu)如圖1所示,主要分為3個(gè)模塊。
1) 預(yù)處理階段:提取物聯(lián)網(wǎng)識(shí)別固件文件,并篩選特定格式文件。
2) 硬編碼字符的識(shí)別和定位階段:對可執(zhí)行文件進(jìn)行逆向分析,提取所有的字符,基于預(yù)設(shè)硬編碼檢測方案識(shí)別滿足條件的硬編碼字符,并在程序中進(jìn)行定位。
3) 硬編碼漏洞檢測:獲取硬編碼字符調(diào)用函數(shù),驗(yàn)證該調(diào)用函數(shù)的可達(dá)性,并對關(guān)鍵參數(shù)進(jìn)行硬編碼檢測。
圖1 系統(tǒng)架構(gòu)
Figure 1 System architecture
本文基于開源固件分析工具Firmadyne[30]開發(fā)爬蟲進(jìn)行固件資源下載,采用Binwalk和Firmware Mod Kit工具對MIPS、ARM、PowerPC等架構(gòu)固件進(jìn)行提取。根據(jù)文件類型篩選可執(zhí)行文件和鏈接庫文件,如ELF文件、SO文件、DLL文件、EXE文件等。
固件文件中存儲(chǔ)著大量的硬編碼字符(如注釋信息、版本信息、打印信息、調(diào)試信息、程序中定義的常量),其中,一些字符是程序執(zhí)行的輔助信息,可以被公開訪問,不具備敏感性,如程序注釋;另一些字符與程序的重要功能有關(guān),具有一定敏感性,如登錄賬戶信息。
如何界定硬編碼字符的敏感性是本文面臨的第一個(gè)挑戰(zhàn)問題。從攻擊者的角度出發(fā),根據(jù)硬編碼字符的泄露是否對程序運(yùn)行結(jié)果產(chǎn)生影響、是否會(huì)進(jìn)一步泄露更多的系統(tǒng)信息、是否會(huì)引發(fā)已知的漏洞等,將字符分為敏感字符和普通字符。
根據(jù)上述分類依據(jù),結(jié)合敏感字符的應(yīng)用場景,重點(diǎn)研究3類敏感字符的硬編碼漏洞檢測方法,并根據(jù)每類漏洞設(shè)計(jì)識(shí)別方案和模型。
3.2.1 特殊格式字符
該類漏洞的硬編碼字符通常直接以字符串格式存儲(chǔ),字符內(nèi)容具有規(guī)律性,可以使用正則表達(dá)式、字符特征匹配等方法進(jìn)行識(shí)別。例如,WPS PIN碼字符,是QSS快速連接功能的識(shí)別碼,可以代替Wi-Fi密碼進(jìn)行認(rèn)證,識(shí)別后可接入網(wǎng)絡(luò),若某款路由器的WPS PIN碼存在硬編碼漏洞,一旦泄露會(huì)導(dǎo)致網(wǎng)絡(luò)的非授權(quán)連接。PIN碼通常是滿足校驗(yàn)規(guī)則的8位數(shù)字組合,具有明顯的識(shí)別特征。同樣地,IP地址、郵箱地址、產(chǎn)品序列號(hào)、登錄賬號(hào)等硬編碼字符都具有各自的特征,這些字符與產(chǎn)品的敏感信息、授權(quán)認(rèn)證和版權(quán)保護(hù)有直接關(guān)聯(lián),是需要重點(diǎn)檢測的對象。
本文提出一種固件可執(zhí)行文件中特殊格式字符的定制化識(shí)別方法,支持用戶添加自定義新規(guī)則,具備較強(qiáng)的系統(tǒng)擴(kuò)展性。下面介紹幾類硬編碼字符的識(shí)別方法。
①賬戶口令字符:設(shè)置常用賬號(hào)口令字典實(shí)現(xiàn)匹配,由于本文不考慮爆破攻擊的情形,因而所選字典無須規(guī)模過大。采用top1000字典進(jìn)行匹配,同時(shí)提取口令所在的函數(shù)名稱,對函數(shù)名進(jìn)行口令的模糊匹配。
② IP地址:采用正則表達(dá)式初步篩選字符,并將無效IP地址、廣播IP地址、保留IP地址等去除,保留內(nèi)網(wǎng)IP和公網(wǎng)IP等有效IP地址。
③郵箱地址:采用正則表達(dá)式進(jìn)行字符初選,利用EmailVerify[28]等站點(diǎn)對郵箱進(jìn)行有效性校驗(yàn),保留合法合規(guī)的郵箱地址。
④ WPS PIN碼:利用正則表達(dá)式獲取8位連續(xù)的純數(shù)字,基于checksum校驗(yàn)算法獲得符合校驗(yàn)的疑似PIN碼。
⑤編碼和Hash字符:利用正則表達(dá)式獲取特定長度或帶明顯編碼特征的字符,如base64編碼、URL編碼、MD5 Hash,并對其嘗試進(jìn)行解碼。
3.2.2 外部文件引用
程序執(zhí)行會(huì)經(jīng)常調(diào)用外部文件,如配置文件、源碼文件,若一些高敏感文件(如密鑰文件、證書文件)遭到泄露,則攻擊者有更大概率解密出網(wǎng)絡(luò)流量、登錄認(rèn)證過程等敏感信息,從而嚴(yán)重威脅系統(tǒng)安全。針對此類硬編碼漏洞,首先檢測函數(shù)中出現(xiàn)的路徑和文件,并查看該文件是否真實(shí)存在,若存在,則識(shí)別文件類型和讀取文件內(nèi)容。管理并維護(hù)一個(gè)敏感文件列表白名單,主要包含以下幾類。
①賬戶文件:/etc/passwd、/etc/shadow等賬戶相關(guān)文件。
②數(shù)據(jù)庫文件:.db、.mdb、.bak等數(shù)據(jù)庫相關(guān)文件。
③數(shù)字證書類文件:.key、.pem、.der、.cer等與數(shù)字證書和密鑰相關(guān)的文件。
④配置文件:.ini、.config等文件。
3.2.3 密碼實(shí)現(xiàn)硬編碼
在實(shí)現(xiàn)密碼算法時(shí)會(huì)引入數(shù)字、字符常量等硬編碼,這些常量一般通過參數(shù)賦值等方式進(jìn)行傳遞,若這些參數(shù)配置不當(dāng),則攻擊者可利用密碼實(shí)現(xiàn)上的缺陷實(shí)施破壞行為。
此類硬編碼與特殊格式字符與外部文件兩類硬編碼不同,需要先定位函數(shù),然后分析函數(shù)中的參數(shù)是否存在硬編碼,本文主要檢測兩類密碼實(shí)現(xiàn)的硬編碼問題:帶Padding參數(shù)的RSA算法;帶IV值參數(shù)的CBC模式算法。
經(jīng)過以上步驟,可以獲取硬編碼字符的位置和其調(diào)用函數(shù),僅憑這些無法斷定是否存在硬編碼漏洞以及該漏洞是否可被執(zhí)行,需進(jìn)一步對調(diào)用函數(shù)的可達(dá)性、硬編碼字符具體值以及運(yùn)行至該硬編碼的程序執(zhí)行條件等進(jìn)行全面分析,并根據(jù)以上結(jié)果綜合判定硬編碼漏洞情況。
3.3.1 函數(shù)可達(dá)性分析
源代碼經(jīng)過預(yù)處理、編譯、匯編等過程變?yōu)榭蓤?zhí)行文件,在編譯過程中,編譯器通常會(huì)對源碼進(jìn)行優(yōu)化處理,移除無用代碼和死代碼。由于編譯器的優(yōu)化能力和配置選項(xiàng)存在較大差別,為防止可執(zhí)行文件中出現(xiàn)未被調(diào)用函數(shù)的情況,需對二進(jìn)制可執(zhí)行文件中的所有函數(shù)做調(diào)用可達(dá)性分析,剔除未被調(diào)用的函數(shù)。
首先,獲取可執(zhí)行文件中所有的導(dǎo)出函數(shù),并生成一個(gè)集合,在集合中找到文件的程序入口函數(shù),如main、entry、start等,以入口函數(shù)為根節(jié)點(diǎn),獲取此根節(jié)點(diǎn)函數(shù)對其他函數(shù)的調(diào)用關(guān)系圖,對圖中的所有節(jié)點(diǎn)進(jìn)行深度優(yōu)先或廣度優(yōu)先遍歷,將遍歷的所有節(jié)點(diǎn)函數(shù)記為調(diào)用函數(shù)集合1,1中的元素表示該可執(zhí)行文件運(yùn)行時(shí),從程序入口出發(fā)可能被調(diào)用的函數(shù)集合。采用同樣的方法,對集合中的其他非入口函數(shù)進(jìn)行遍歷和提取,得到集合2,3,...,,合并個(gè)集合并去重生成集合,最終得到此可執(zhí)行文件的可達(dá)函數(shù)集合,中的每一個(gè)元素函數(shù)在可執(zhí)行文件執(zhí)行時(shí)都是調(diào)用可達(dá)的。函數(shù)可達(dá)集合生成過程如圖2所示。
最后,根據(jù)硬編碼字符所在的函數(shù)是否在可達(dá)函數(shù)集合內(nèi),判斷其調(diào)用可達(dá)性。
如圖3所示,存在3個(gè)硬編碼函數(shù)F3()、F7()、F8(),其中,圖3(a)中F3()函數(shù)位于入口函數(shù)的調(diào)用關(guān)系圖節(jié)點(diǎn)中,是可達(dá)函數(shù),則說明F3()中的硬編碼字符可以被調(diào)用觸發(fā);與之相對,圖3(b)的F7()函數(shù)與圖3(c)的F8()函數(shù)雖然有硬編碼字符,但屬于不可達(dá)函數(shù),因而即使存在硬編碼字符,亦不會(huì)被調(diào)用觸發(fā)。因此,圖3中存在硬編碼且調(diào)用可達(dá)的函數(shù)只有F3()。
圖2 可達(dá)集合S生成過程
Figure 2 Reachable setgenerating process
圖3 硬編碼函數(shù)可達(dá)性分析
Figure 3 Reach ability analysis of hard coded functions
3.3.2 確定硬編碼字符值
硬編碼字符所在的函數(shù)滿足調(diào)用可達(dá)性之后,需要對硬編碼字符所在的定義位置和賦值過程進(jìn)行分析,尤其是以參數(shù)形式存儲(chǔ)的硬編碼字符,其通常比較隱蔽。
本文首先將待分析函數(shù)生成程序控制流程圖,為后續(xù)分析提供程序執(zhí)行流程的依據(jù);為了解決匯編指令的異構(gòu)問題,采用PyVEX模塊的IR模型將待分析函數(shù)轉(zhuǎn)為中間表達(dá)式;采用數(shù)據(jù)流分析的方法回溯待分析函數(shù)的參數(shù),識(shí)別參數(shù)的個(gè)數(shù)、格式,定位到參數(shù)賦值語句,最終根據(jù)參數(shù)在定義、賦值、調(diào)用等過程的情況判定其取值變化,并確定存在漏洞的硬編碼字符值。
如圖4所示,函數(shù)F1()調(diào)用函數(shù)F2(),且已知當(dāng)函數(shù)F2()中參數(shù)=2時(shí)存在漏洞。對函數(shù)F2()中參數(shù)是否存在硬編碼的分析過程如下。
圖4 參數(shù)硬編碼字符值的確定
Figure 4 Determination of parameter hard coded character value
①識(shí)別并定位函數(shù)F2(),根據(jù)調(diào)用關(guān)系找到父函數(shù)F1(),生成F1()的程序控制流程圖。
②將函數(shù)F1()生成中間表達(dá)式,結(jié)合函數(shù)F2()的定義得知有3個(gè)參數(shù),類型均為int,采用數(shù)據(jù)流分析方法對參數(shù)進(jìn)行回溯,并得到與參數(shù)定義和賦值相關(guān)的代碼塊為代碼塊1、2、3、5、6,調(diào)用過程為代碼塊7、8。
③根據(jù)函數(shù)F2()的漏洞描述,當(dāng)?shù)谝粋€(gè)參數(shù)=2時(shí)是存在缺陷的,則進(jìn)一步定位出參數(shù)的定義和賦值代碼塊1、5、6,其中參數(shù)賦值為2的代碼塊為6。
④分析得到函數(shù)F2()中參數(shù)的定義、賦值、調(diào)用過程分別在代碼塊1、6、8中,且函數(shù)F2()存在漏洞。
3.3.3 硬編碼漏洞觸發(fā)條件分析
分析該硬編碼漏洞的路徑執(zhí)行順序和程序跳轉(zhuǎn)條件,在程序控制流程圖中標(biāo)注存在硬編碼的代碼塊位置,采用Angr工具中的符號(hào)執(zhí)行模塊將執(zhí)行流程轉(zhuǎn)變?yōu)榉?hào)表達(dá)式,對從入口函數(shù)到硬編碼代碼塊的路徑進(jìn)行約束求解,若存在滿足要求的約束解,表明該硬編碼漏洞可以被觸發(fā)。
如圖5所示,函數(shù)Fn()中存在多個(gè)疑似硬編碼字符漏洞,需要分析從函數(shù)Fn()入口執(zhí)行到漏洞處的觸發(fā)條件,分析過程如下。
圖5 硬編碼漏洞觸發(fā)條件
Figure 5 Hard coded vulnerability trigger conditions
①生成函數(shù)Fn()的程序控制流程圖,并在圖中標(biāo)注出存在硬編碼字符的代碼塊為5、7、8。
②使用Angr載入該文件的Fn()函數(shù),加載符號(hào)執(zhí)行模塊生成各代碼塊間跳轉(zhuǎn)的符號(hào)表達(dá)式。
③設(shè)置存在硬編碼字符的代碼塊5、7、8為目標(biāo)地址,并進(jìn)行符號(hào)表達(dá)式的約束求解。
④若約束解不為空,則證明存在從函數(shù)Fn()入口到該代碼塊的調(diào)用路徑,該硬編碼字符可以被觸發(fā);若約束解為空,則表明此代碼塊處的硬編碼字符無法被執(zhí)行。
經(jīng)過以上4個(gè)步驟,得到3個(gè)硬編碼觸發(fā)需要滿足的約束條件如下。
在整體設(shè)計(jì)、模塊功能建模的基礎(chǔ)上,本文進(jìn)一步構(gòu)建了針對物聯(lián)網(wǎng)設(shè)備固件的硬編碼漏洞檢測系統(tǒng),并對多類真實(shí)物聯(lián)網(wǎng)設(shè)備固件進(jìn)行了處理和分析,本節(jié)展示漏洞檢測結(jié)果和部分實(shí)例。
使用開發(fā)的網(wǎng)絡(luò)爬蟲,從物聯(lián)網(wǎng)設(shè)備官方網(wǎng)站、社區(qū)論壇、FTP站點(diǎn)等網(wǎng)絡(luò)資源處獲得551個(gè)固件,包括360、TP-Link、Tenda、D-Link、Western Digital等廠商的物聯(lián)網(wǎng)設(shè)備。選取主流廠商不同產(chǎn)品的物聯(lián)網(wǎng)設(shè)備固件,包括攝像頭、路由器、硬盤、打印機(jī)。在這些固件中,使用固件解析工具Binwalk和Firmware-Mod-Kit成功提取164個(gè),固件架構(gòu)類型包括MIPS、ARM、PowerPC、X86_64,篩選出二進(jìn)制可執(zhí)行文件和鏈接庫文件共計(jì)839個(gè)。其中可執(zhí)行文件共625個(gè),主要位于bin、sbin等目錄下,與系統(tǒng)授權(quán)、指令操作、組件功能及Web服務(wù)等相關(guān),如busybox、http、webs、ucloud、pppd等;鏈接庫文件共214個(gè),主要位于lib、libs等目錄下,與OpenSSL服務(wù)、程序語言庫、加解密功能及協(xié)議應(yīng)用等有關(guān),如libcrypto.so、libssl.so、libgcc.so等。
各廠商固件預(yù)處理結(jié)果如圖6所示。
圖6 各廠商固件預(yù)處理結(jié)果
Figure 6 Firmware pretreatment results of each vendors
固件的預(yù)處理文件分布情況如表1所示。
表1 預(yù)處理文件分布情況
利用構(gòu)建的物聯(lián)網(wǎng)設(shè)備固件硬編碼漏洞檢測系統(tǒng)對上述5家廠商的相關(guān)產(chǎn)品進(jìn)行測試,共發(fā)現(xiàn)81個(gè)硬編碼漏洞。其中,每個(gè)固件至少存在特殊格式字符(占比64.2%)和外部文件引用(占比28.4%)硬編碼漏洞,容易引起敏感信息泄露、通信流量解密等;而密碼實(shí)現(xiàn)中的硬編碼漏洞(占比7.4%)則相對較少,一方面是因?yàn)槊艽a應(yīng)用場景比普通場景少,另一方面是密碼硬編碼漏洞只在個(gè)別密碼算法中出現(xiàn)。各廠商硬編碼漏洞檢測結(jié)果如表2所示。
表2 各廠商硬編碼漏洞檢測結(jié)果
為深入理解物聯(lián)網(wǎng)設(shè)備固件中的硬編碼漏洞,對3類硬編碼漏洞的典型案例進(jìn)行分析。
4.3.1 特殊格式字符硬編碼漏洞
特殊格式字符硬編碼主要檢測對象包括登錄賬戶、IP地址、郵箱地址、WPS PIN碼、產(chǎn)品序列號(hào)、后門賬戶等。
(1)后門賬戶
在TP-Link的TL-AP450C攝像頭固件中,函數(shù)getDefaultWebCtrlUser()(偽代碼如圖7所示)位于uclited可執(zhí)行文件中,檢測出與Web Ctrl應(yīng)用相關(guān)的默認(rèn)用戶admin/admin。
圖7 函數(shù)getDefaultWebCtrlUser()偽代碼
Figure 7 Function getDefaultWebCtrlUser() pseudo code
在TP-Link的TL-IPC20攝像頭固件中,可執(zhí)行文件cet中函數(shù)http_digest_auth_check()(偽代碼如圖8所示)的作用是對攝像頭Request請求進(jìn)行配置,并在HTTP Header中設(shè)置Authorization值完成Digest登錄認(rèn)證。檢測出該函數(shù)中存在一個(gè)硬編碼的默認(rèn)用戶admin/zMiVw8Kw0 oxKXL0,該檢測結(jié)果是對CVE-2018-11482的補(bǔ)充,是在官方公告的漏洞版本之外的新發(fā)現(xiàn)。與官方通告的websys.lua文件不同,本文的檢測對象是可執(zhí)行文件,且識(shí)別出該硬編碼是采用Digest方式進(jìn)行登錄的默認(rèn)攝像頭賬戶。同時(shí)在該函數(shù)中檢測出另一個(gè)硬編碼字符opaque = 64943214654649846565646421。
(2)WPS PIN碼
WPS PIN碼通常由8位純數(shù)字組成,且滿足前四后三加一校驗(yàn)位的規(guī)律,具有明顯的識(shí)別特征。對已有固件進(jìn)行分析,成功實(shí)現(xiàn)對CVE-2016-10179[31]漏洞的精準(zhǔn)檢測。
D-Link的DWR-932B路由器固件開啟了WPS功能,在可執(zhí)行文件appmgr的函數(shù)wifi_get_default_wps_pin()(偽代碼如圖9所示)中,檢測出硬編碼WPS PIN值28296607。
4.3.2 外部文件引用
外部文件應(yīng)用主要檢測對象包括配置文件、密鑰文件、數(shù)字證書文件、賬戶文件等。
圖8 函數(shù)http_digest_auth_check()偽代碼
Figure 8 Function http_digest_auth_check() pseudo code
圖9 函數(shù)wifi_get_default_wps_pin()偽代碼
Figure 9 Function wifi_get_default_wps_pin() pseudo code
(1)密鑰文件引用
在360的路由器固件中,lib目錄下鏈接庫文件libcloudquery.so的createPostHeader()函數(shù)存在對路徑下/app/devices/bin/rsa_public_key.pem的密鑰文件引用,如圖10所示。
圖10 rsa_public_key.pem密鑰文件引用
Figure 10 rsa_ public_ key. pem key file reference
同樣地,在cgitest.cgi文件中,sub_45EB04()函數(shù)引用了/etc/360_pub.key密鑰文件,如圖11所示。
圖11 360_pub.key密鑰文件引用
Figure 11 360_ pub.key key file reference
(2)賬戶文件引用
在360路由器固件360P4-V2中,存在位于bin目錄下的busybox文件讀取/etc/passwd文件,函數(shù)FUN_004344fc()偽代碼如圖12所示。
圖12 函數(shù)FUN_004344fc()偽代碼
Figure 12 Function FUN_004344fc() pseudo code
在passwd文件中存儲(chǔ)著4個(gè)系統(tǒng)默認(rèn)用戶。文件內(nèi)容如圖13所示。
圖13 /etc/passwd文件內(nèi)容
Figure 13 Contents of /etc/passwd file
4.3.3 密碼實(shí)現(xiàn)硬編碼漏洞
密碼實(shí)現(xiàn)硬編碼主要檢測對象包括RSA 算法中Padding是否存在硬編碼值,以及在CBC模式中IV是否存在硬編碼值。
(1)RSA Padding值
在Tenda的ucloud文件中,函數(shù)int_rsa _verify()(偽代碼如圖14所示)存在對RSA算法的調(diào)用,且設(shè)置的RSA Padding值為1。
(2)CBC模式IV值
在Western Digital固件的uams_dhx_pam.so文件中,函數(shù)FUN_000128e0()(偽代碼如圖15所示)調(diào)用CAST_ cbc_encrypt()函數(shù),且CBC的IV值為硬編碼靜態(tài)常量LWallace。
圖14 函數(shù)int_rsa_verify()偽代碼
Figure 14 Function int_rsa_verify() pseudo code
圖15 函數(shù)FUN_000128e0()偽代碼
Figure 15 Function FUN_000128e0() pseudo code
實(shí)驗(yàn)結(jié)果表明,本文構(gòu)建的物聯(lián)網(wǎng)設(shè)備固件可執(zhí)行文件硬編碼漏洞檢測系統(tǒng)可以有效識(shí)別出特殊格式字符、外部文件引用、密碼實(shí)現(xiàn)硬編碼3類硬編碼字符,且檢測成功率較高。
針對物聯(lián)網(wǎng)設(shè)備固件硬編碼中存在的安全問題,本文提出了一種物聯(lián)網(wǎng)設(shè)備固件硬編碼字符識(shí)別和硬編碼漏洞檢測方法,并構(gòu)建了檢測系統(tǒng)。設(shè)計(jì)了一種動(dòng)態(tài)更新的鏈接庫管理方法實(shí)現(xiàn)鏈接庫的維護(hù),采用中間表示IR模型、數(shù)據(jù)流分析、符號(hào)執(zhí)行等方法分別實(shí)現(xiàn)函數(shù)調(diào)用可達(dá)性分析、硬編碼字符確認(rèn)和漏洞觸發(fā)條件分析,對特殊格式字符、外部文件引用、密碼實(shí)現(xiàn)3類硬編碼漏洞檢測進(jìn)行了深入研究和大量實(shí)驗(yàn)驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,通過對164個(gè)物聯(lián)網(wǎng)設(shè)備固件的839個(gè)可執(zhí)行文件分析,成功識(shí)別出81個(gè)硬編碼漏洞,證明硬編碼漏洞普遍存在于物聯(lián)網(wǎng)設(shè)備固件中。本文提出的方法可以有效檢測物聯(lián)網(wǎng)設(shè)備固件中的硬編碼漏洞,可為后續(xù)物聯(lián)網(wǎng)設(shè)備的安全防護(hù)技術(shù)的部署提供一定指導(dǎo)。
然而本文依然存在部分關(guān)鍵挑戰(zhàn)問題沒有被完全解決。首先,在物聯(lián)網(wǎng)固件提取方面,對于采用非常規(guī)壓縮算法、非標(biāo)準(zhǔn)系統(tǒng)架構(gòu)、使用加密保護(hù)以及搭載實(shí)時(shí)操作系統(tǒng)的固件,本文提出的方法在適配性方面還存在較大不足;其次,在硬編碼字符和硬編碼漏洞選擇上,未涉及所有類型;此外,在對漏洞攻擊利用和安全加固方面,本文尚未做深入研究。在今后的研究工作中,需增加固件樣本種類和數(shù)量,深入研究非典型固件的提取技術(shù),提高檢測的適用范圍,增加對更多類型硬編碼漏洞的支持,并進(jìn)一步研究漏洞利用與安全防護(hù)方案。
[1] 王鑫. 面向分布式計(jì)算的隱私保護(hù)研究[D]. 浙江: 浙江大學(xué), 2020.
WANG X. Research on privacy protection for distributed computing[D]. Zhejiang: Zhejiang University, 2020.
[2] BURSZTEIN E, COCHRAN G J, DURUMERIC C Z, et al. Understanding the Mirai Botnet[C]//USENIX Security Symposium. 2017.
[3] 楊毅宇, 周威, 趙尚儒, 等. 物聯(lián)網(wǎng)安全研究綜述: 威脅, 檢測與防御[J]. 通信學(xué)報(bào), 2021, 42(8): 188-205.
YANG Y Y, ZHOU W, ZHAO S R, et al. Survey of IoT security research: threats, detection and defense[J]. Journal on Communications, 2021, 42(8): 188-205.
[4] 張玉清, 周威, 彭安妮. 物聯(lián)網(wǎng)安全綜述[J]. 計(jì)算機(jī)研究與發(fā)展, 2017, 54(10): 2130.
ZHANG Y, ZHOU W, PENG A N. Survey of internet of things security[J]. Journal of Computer Research and Development, 2017, 54(10): 2130-2143.
[5] 鄭堯文, 文輝, 程凱, 等. 物聯(lián)網(wǎng)設(shè)備漏洞挖掘技術(shù)研究綜述[J].信息安全學(xué)報(bào), 2019, 4(5): 61-75.
ZHENG Y W, WEN H, CHENG K, et al. A survey of IoT device vulnerability mining techniques[J].Journal of Cyber Security, 2019, 4(5): 61-75.
[6] CAO X H, SHILA D M, CHENG Y, et al. Ghost-in-zigbee: Energy depletion attack on zigbee-based wireless networks[J]. IEEE Internet of Things Journal, 2016, 3(5): 816-829.
[7] WEN H, CHEN Q A, LIN Z. Plug-N-Pwned: comprehensive vulnerability analysis of OBD-II dongles as a new over-the-air attack surface in automotive IoT[C]//USENIX Security Symposium. 2020: 949-965.
[8] CHEN J Y, ZUO C S, DIAO W R, et al. Your IoTs are (not) mine: on the remote binding between IoT devices and users[C]//2019 49th Annual IEEE/IFIP International Conference on Dependable Systems and Networks. 2019: 222-233.
[9] HE W, GOLLA M, PADHI R, et al. Rethinking access control and authentication for the home Internet of things (IoT)[C]//USENIX Security Symposium. 2018: 255-272.
[10] YUAN B, JIA Y, XING L, et al. Shattered chain of trust: understanding security risks in cross-cloud IoT access delegation[C]//USENIX Security Symposium. 2020: 1183-1200.
[11] FERNANDES E, RAHMATI A, JUNG J, et al. Decentralized action integrity for trigger-action IoT platforms[C]//Proceedings 2018 Network and Distributed System Security Symposium. 2018: 1-16.
[12] ZHANG L, CHEN J, DIAO W, et al. {CryptoREX}: large-scale analysis of cryptographic misuse in {IoT} Devices[C]//22nd International Symposium on Research in Attacks, Intrusions and Defenses (RAID 2019). 2019: 151-164.
[13] ALMAKHDHUB N S, CLEMENTS A A, BAGCHI S, et al. μRAI: securing embedded systems with return address integrity[C]//Proceedings 2020 Network and Distributed System Security Symposium. 2020: 1-18.
[14] YAO Y, ZHOU W, JIA Y, et al. Identifying privilege separation vulnerabilities in IoT firmware with symbolic execution[C]//European Symposium on Research in Computer Security. 2019: 638-657.
[15] ZHOU J, DU Y, SHEN Z, et al. Silhouette: efficient protected shadow stacks for embedded systems[C]//USENIX Security Symposium. 2020: 1219-1236.
[16] MU C, YANG M, CHEN Z, et al. Research on RSA padding identification method in IoT firmwares[C]//Journal of Physics: Conference Series. 2020: 012061.
[17] Vulnerabilities in foscam IP cameras report[R].
[18] THOMAS S L, CHOTHIA T, GARCIA F D. Stringer: measuring the importance of static data comparisons to detect backdoors and undocumented functionality[C]//European Symposium on Research in Computer Security. 2017: 513-531.
[19] SHOSHITAISHVILI Y, WANG R, HAUSER C, et al. Firmalice- automatic detection of authentication bypass vulnerabilities in binary firmware[C]//NDSS. 2015: 1-8.
[20] WANG F, SHOSHITAISHVILI Y. Angr-the next generation of binary analysis[C]//2017 IEEE Cybersecurity Development (SecDev). 2017: 8-9.
[21] ZHENG Y, DAVANIAN A, YIN H, et al. FIRM-AFL: greybox fuzzing of IoT firmware via augmented process emulation[C]//28th USENIX Security Symposium (USENIX Security 19). 2019: 1099-1114.
[22] ZADDACH J, BRUNO L, FRANCILLON A, et al. AVATAR: A framework to support dynamic security analysis of embedded systems' firmwares[C]//NDSS. 2014: 1-16.
[23] CHEN J Y, DIAO W R, ZHAO Q C, et al. IoTFuzzer: discovering memory corruptions in IoT through app-based fuzzing[C]//Pro- ceedings 2018 Network and Distributed System Security Symposium. 2018: 1-15.
[24] REDINI N, MACHIRY A, WANG R, et al. Karonte: detecting insecure multi-binary interactions in embedded firmware[C]//2020 IEEE Symposium on Security and Privacy. 2020: 1544-1561.
[25] CHEN L, WANG Y, CAI Q, et al. Sharing more and checking less: Leveraging common input keywords to detect bugs in embedded systems[C]//30th USENIX Security Symposium (USENIX Security 21). 2021: 303-319.
[26] MU C, WANG X, YANG M, et al. Vulnerability analysis for iot devices of multi-agent systems: a cryptographic function identification approach[C]//Proceedings of 2021 5th Chinese Conference on Swarm Intelligence and Cooperative Control. 2023: 1510-1519.
[27] DAVIDSON D, MOENCH B, RISTENPART T, et al. {FIE} on firmware: Finding vulnerabilities in embedded systems using symbolic execution[C]//22nd USENIX Security Symposium (USENIX Security 13). 2013: 463-478.
[28] NETHERCOTE N, SEWARD J. Valgrind: a framework for heavyweight dynamic binary instrumentation[J]. ACM Sigplan Notices, 2007, 42(6): 89-100.
[29] DUONG T, RIZZO J. Here come the⊕ninjas[J]. Unpublished manuscript, 2011, 320.
[30] CHEN D D, EGELE M, WOO M, et al. Towards automated dynamic analysis for linux-based embedded firmware[C]//Pro- ceedings 2016 Network and Distributed System Security Symposium. 2016: 1-16.
Hardcoded vulnerability detection approach for IoT device firmware
MU Chao1, WANG Xin1, YANG Ming1, ZHANG Heng2, CHEN Zhenya1, WU Xiaoming1
1. Shandong Provincial Key Laboratory of Computer Networks, Shandong Computer Science Center (National Supercomputer Center in Jinan),Qilu University of Technology (Shandong Academy of Sciences), Jinan 250014, China 2. School of Computer Engineering, Jiangsu Ocean University, Lianyungang 222005, China
With the popularization of IoT devices, more and more valuable data is generated. Analyzing and mining big data based on IoT devices has become a hot topic in the academic and industrial circles in recent years. However, due to the lack of necessary detection and protection methods, many IoT devices have serious information security risks. In particular, device hard-coded information is closely related to system encryption and decryption, identity authentication and other functions, which can provide confidentiality protection for core data. Once this information is exploited by malicious attackers, serious consequences such as sensitive information leakage, backdoor attacks, and unauthorized logins will occur. In response to this problem, a multi-type character recognition and positioning scheme was designed and a hard-coded vulnerability detection method in executable files was proposed based on the study of the characteristics of hard-coded vulnerabilities in IoT devices. The proposed method extracted the firmware of IoT devices and filtered all executable files as the source to be analyzed. Then, a solution to identify and locate three types of hard-coded characters was provided. Further, the reachability of the function, where the hard-coded character was located, was analyzed according to the function call relationship. Meanwhile, the instruction heterogeneity was mitigated by an intermediate representation (IR) model. The character and parameter hard-coded values was obtained through a data flow analysis approach. A symbolic execution method was devised to determine the trigger conditions of the hard-coded vulnerabilities, and then the vulnerability detection result was output. On the one hand, the proposed method introduced the method of symbolic execution based on the use of the intermediate representation model, which eliminated the dependency of instruction architecture and reduces the false positive rate of vulnerabilities; On the other hand, this method can integrate characters, files, and cryptographic implementation to realize the different characteristics of three types of hard-coded characters, which increased the coverage of vulnerability detection and improves the versatility of the detection method. The experimental results show that the proposed method can effectively detect three types of hard-coded vulnerabilities of characters, files and cryptographic implementation in various IoT devices, and has good detection accuracy, which can provide certain guidance for the deployment of subsequent security protection technologies.
big data, IoT security, hard coding, vulnerability detection
TP393
A
10.11959/j.issn.2096?109x.2022070
2022?06?10;
2022?09?02
楊明,yangm@sdas.org
國家重點(diǎn)研發(fā)計(jì)劃(2021YFF0901301-02);山東省自然科學(xué)基金(ZR2021QF057);國家自然科學(xué)基金(61873106);江蘇省杰出青年科學(xué)基金(BK20200049);齊魯工業(yè)大學(xué)(山東省科學(xué)院)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)科基礎(chǔ)研究加強(qiáng)計(jì)劃(2021JC02023);工業(yè)控制技術(shù)國家重點(diǎn)實(shí)驗(yàn)室(浙江大學(xué))開放課題(ICT2022B36)
The National Key R&D Program of China (2021YFF0901301-02), Shandong Provincial Natural Science Foundation (ZR2021QF057), The National Natural Science Foundation of China (61873106), The Natural Science Foundation of Jiangsu Province for Distinguished Young Scholars (BK20200049), QLU/SDAS Computer Science and Technology Fundamental Research Enhancement Program (2021JC02023), Open Research Project of the State Key Laboratory of Industrial Control Technology, Zhejiang University, China (ICT2022B36)
穆超, 王鑫, 楊明, 等. 面向物聯(lián)網(wǎng)設(shè)備固件的硬編碼漏洞檢測方法[J]. 網(wǎng)絡(luò)與信息安全學(xué)報(bào), 2022, 8(5): 98-110.
Format: MU C, WANG X, YANG M, et al. Hardcoded vulnerability detection method for firmware of IoT devices [J]. Chinese Journal of Network and Information Security, 2022, 8(5): 98-110.
穆超(1990?),男,山東濟(jì)南人,齊魯工業(yè)大學(xué)(山東省科學(xué)院)助理研究員,主要研究方向?yàn)槲锫?lián)網(wǎng)安全與數(shù)據(jù)安全。
王鑫(1992?),男,山東鄒平人,博士,齊魯工業(yè)大學(xué)(山東省科學(xué)院)副研究員,主要研究方向?yàn)楣I(yè)互聯(lián)網(wǎng)安全與數(shù)據(jù)隱私保護(hù)。
楊明(1981?),男,山東東營人,博士,齊魯工業(yè)大學(xué)(山東省科學(xué)院)研究員,主要研究方向?yàn)槊艽a學(xué)、云安全、大數(shù)據(jù)安全、物聯(lián)網(wǎng)安全。
張恒(1981?),男,江蘇連云港人,博士,江蘇海洋大學(xué)教授,主要研究方向?yàn)橄到y(tǒng)安全與控制和人工智能算法安全。
陳振婭(1983?),女,山東菏澤人,齊魯工業(yè)大學(xué)(山東省科學(xué)院)副研究員,主要研究方向?yàn)閿?shù)據(jù)安全與隱私保護(hù)。
吳曉明(1981?),男,山東濱州人,博士,齊魯工業(yè)大學(xué)(山東省科學(xué)院)研究員、博士生導(dǎo)師,主要研究方向?yàn)槲锫?lián)網(wǎng)安全與信息安全。