王 蓓,劉妍蕾,潘 濤
(內(nèi)蒙古電力科學(xué)研究院,內(nèi)蒙古 呼和浩特 010000)
隨著全球物聯(lián)網(wǎng)的快速發(fā)展,物聯(lián)網(wǎng)終端設(shè)備數(shù)量迅速增長(zhǎng),據(jù)統(tǒng)計(jì),2021年的物聯(lián)網(wǎng)端點(diǎn)安裝數(shù)量已高達(dá)300億之多。越來(lái)越多的智能物聯(lián)網(wǎng)設(shè)備融入了人們的日常生活中,人們與智能設(shè)備之間的聯(lián)系也更加緊密,隨之而來(lái)的物聯(lián)網(wǎng)設(shè)備安全問(wèn)題也越來(lái)越受到人們的關(guān)注。部分設(shè)備制造商在追逐新功能同時(shí),產(chǎn)品安全設(shè)計(jì)及安全意識(shí)還不夠,同時(shí)也缺乏對(duì)設(shè)備安全性的重視和投入,設(shè)備容易出現(xiàn)弱口令、權(quán)限繞過(guò)、數(shù)據(jù)泄露等安全問(wèn)題,一旦被不法入侵者利用,將會(huì)影響到人身安全、社會(huì)安全,甚至是國(guó)家安全。
物聯(lián)網(wǎng)設(shè)備所面臨的安全問(wèn)題中,其中一個(gè)嚴(yán)重的威脅來(lái)源就是物聯(lián)網(wǎng)設(shè)備固件的脆弱性。IoT固件存在于每個(gè)物聯(lián)網(wǎng)設(shè)備中,存在于每一次固件升級(jí)中,它包含了設(shè)備運(yùn)行的所有可執(zhí)行文件、配置文件,甚至代碼,IoT固件易被提取,攻擊者就有機(jī)會(huì)對(duì)其進(jìn)行剖析,開發(fā)漏洞,進(jìn)而發(fā)起攻擊。物聯(lián)網(wǎng)安全跟傳統(tǒng)安全的一個(gè)典型區(qū)別就是物聯(lián)網(wǎng)設(shè)備非常容易獲取,固件容易分析,而傳統(tǒng)安全的服務(wù)器入侵、內(nèi)網(wǎng)滲透都存在物理?xiàng)l件的限制,所以固件分析是物聯(lián)網(wǎng)安全測(cè)試中的最重要部分。
物聯(lián)網(wǎng)設(shè)備固件中有全部的硬編碼信息,建設(shè)的物聯(lián)網(wǎng)固件安全檢測(cè)平臺(tái)應(yīng)能涵蓋固件文件平臺(tái)關(guān)鍵信息提取、安全檢測(cè)原理、Bin文件逆向分析,不安全編碼模式匹配、敏感信息搜索、第三方漏洞庫(kù)匹配等多技術(shù)方法,通過(guò)反匯編和反編譯等流程,可以把文件平臺(tái)存在的可執(zhí)行的機(jī)器代碼翻譯成C語(yǔ)言等基礎(chǔ)語(yǔ)言代碼,定位危險(xiǎn)函數(shù),從敏感信息搜索、第三方漏洞庫(kù)匹配等多個(gè)方面對(duì)設(shè)備進(jìn)行安全檢測(cè)與評(píng)估。
物聯(lián)網(wǎng)固件安全檢測(cè)平臺(tái)只需要上傳設(shè)備的固件,平臺(tái)將自動(dòng)分析固件,快速發(fā)現(xiàn)內(nèi)部設(shè)備中可能存在的漏洞,提供專業(yè)的安全分析能力,以避免因弱口令、溢出等漏洞引起設(shè)備控制權(quán)限的泄露,并最終形成檢測(cè)分析報(bào)告。
固件作為一種特定軟件,一般存儲(chǔ)在只讀存儲(chǔ)器、可擦可編程只讀存儲(chǔ)器(EPROM)或閃存中,提供對(duì)設(shè)備硬件的控制。固件漏洞可以在設(shè)備內(nèi)部任何組件中存在,包括UEFI或者BIOS平臺(tái)、驅(qū)動(dòng)器、網(wǎng)絡(luò)適配器、內(nèi)存、處理器、顯卡以及很多其他的集成或外圍組件。根據(jù)目前物聯(lián)網(wǎng)設(shè)備的現(xiàn)狀,其固件的安全問(wèn)題主要分為以下幾個(gè)方面。
此類安全問(wèn)題主要是由于代碼編寫人員在編碼過(guò)程式缺乏安全意識(shí)而導(dǎo)致的,常見的代碼安全包括緩沖區(qū)溢出、命令注入等。同時(shí)物聯(lián)網(wǎng)固件代碼共用率、復(fù)用率較高,容易導(dǎo)致同一漏洞影響多種設(shè)備的情況。
很多物聯(lián)網(wǎng)設(shè)備都會(huì)使用一些開源的組件或開發(fā)平臺(tái),這些組件或平臺(tái)的漏洞勢(shì)必影響物聯(lián)網(wǎng)固件的安全性。
配置文件屬于固件中的敏感信息,攻擊者通過(guò)對(duì)配置文件的分析,可快速定位一些敏感信息。
目前物聯(lián)網(wǎng)設(shè)備中應(yīng)用最廣泛的還是Linux操作平臺(tái),那么相應(yīng)的漏洞與安全問(wèn)題也被帶入到物聯(lián)網(wǎng)固件中。
物聯(lián)網(wǎng)固件安全是近年來(lái)相對(duì)比較新的研究領(lǐng)域,目前國(guó)內(nèi)外相對(duì)成熟的平臺(tái)還不多,根據(jù)物聯(lián)網(wǎng)設(shè)備目前的安全現(xiàn)狀,結(jié)合自身業(yè)務(wù)特點(diǎn),設(shè)計(jì)包含數(shù)據(jù)層、分析層及界面展示層的固件安全檢測(cè)平臺(tái),平臺(tái)架構(gòu)如圖1所示。數(shù)據(jù)層主要用于存儲(chǔ)平臺(tái)管理數(shù)據(jù)、分析結(jié)果數(shù)據(jù)以及用于支撐分析的漏洞庫(kù)和風(fēng)險(xiǎn)函數(shù)庫(kù);分析層實(shí)現(xiàn)對(duì)固件的分析功能,包括文件平臺(tái)分析、密鑰分析、代碼分析、漏洞分析等;展示層主要是平臺(tái)展示界面,以及提供統(tǒng)計(jì)數(shù)據(jù)結(jié)果的展示。
平臺(tái)在功能設(shè)計(jì)方面考慮將獲取到的固件文件上傳至檢測(cè)平臺(tái),通常應(yīng)支撐常見固件文件的格式,平臺(tái)自動(dòng)分析固件文件,得到它的可執(zhí)行文件、配置文件,甚至代碼,從而實(shí)現(xiàn)密鑰和算法分析、代碼安全分析和漏洞分析等功能,最終將檢測(cè)分析結(jié)果形成測(cè)試報(bào)告進(jìn)行展示,全程實(shí)現(xiàn)自動(dòng)化處理,具體功能包含文件平臺(tái)提取、平臺(tái)分析、代碼安全分析、密鑰和算法分析、漏洞分析、固件對(duì)比分析、檢測(cè)報(bào)告等。
4.2.1 文件平臺(tái)提取。平臺(tái)支持市場(chǎng)常見的物聯(lián)網(wǎng)設(shè)備的固件文件格式,包括bin、zip 、exe等常見類型,并從固件中提取文件平臺(tái)做安全分析。平臺(tái)提供固件自動(dòng)化掃描功能,通過(guò)掃描能夠發(fā)現(xiàn)固件文件中包含的所有可識(shí)別的文件類型,識(shí)別固件版本、大小、文件平臺(tái)、壓縮格式等信息,并自動(dòng)提取文件平臺(tái)。
4.2.2 平臺(tái)分析。用戶將固件文件手動(dòng)上傳到固件分析平臺(tái)后,平臺(tái)會(huì)通過(guò)binwalk匹配一些特定的文件頭或者M(jìn)agic數(shù)據(jù),來(lái)遍歷整個(gè)固件文件,識(shí)別指令集架構(gòu)、文件平臺(tái)、壓縮格式、可識(shí)別的文件類型、固件版本信息,比如:哈希、版本號(hào)、大小、存儲(chǔ)位置。平臺(tái)會(huì)以自動(dòng)化的方式掃描固件,遞歸提取文件平臺(tái)到自定義目錄,并展現(xiàn)提取結(jié)果。
4.2.3 代碼安全分析。平臺(tái)通過(guò)內(nèi)置緩沖區(qū)溢出、命令注入和危險(xiǎn)網(wǎng)絡(luò)函數(shù)的風(fēng)險(xiǎn)函數(shù)庫(kù),對(duì)代碼漏洞進(jìn)行靜態(tài)檢測(cè)方式,通過(guò)readelf工具逆向分析每個(gè)可執(zhí)行文件的外部符號(hào)表,可獲取符號(hào)表中的所有函數(shù),并與風(fēng)險(xiǎn)函數(shù)庫(kù)進(jìn)行匹配,從而識(shí)別是否存在代碼風(fēng)險(xiǎn),完成代碼分析后,平臺(tái)將識(shí)別出的文件名和風(fēng)險(xiǎn)函數(shù)進(jìn)行展示,并可查看文件路徑及漏洞數(shù)量。
緩存區(qū)溢出危險(xiǎn)函數(shù)庫(kù)通過(guò)人工篩選C語(yǔ)言常見庫(kù)函數(shù),如strcpy、strcat等;命令注入危險(xiǎn)函數(shù)庫(kù)包括常見linux命令,如popen、system等;危險(xiǎn)網(wǎng)絡(luò)函數(shù)為L(zhǎng)inux常見網(wǎng)絡(luò)平臺(tái)調(diào)用函數(shù),如accept、listen等。
4.2.4 密鑰和算法分析。密鑰和算法分析功能主要包括證書文件和固件平臺(tái)用戶密碼的hash文件,通過(guò)查找.crt文件和shadow文件進(jìn)行分析。crt文件使用openssl進(jìn)行解析,shadow文件可直接當(dāng)作普通字符串分析。利用正則表達(dá)式的方式去文件中查找對(duì)應(yīng)的字符串,由此獲取固件中的加密算法、公私鑰以及證書文件,進(jìn)而對(duì)固件中的證書文件、固件平臺(tái)的用戶密碼hash文件進(jìn)行安全分析。
4.2.5 漏洞分析。檢測(cè)平臺(tái)內(nèi)置了漏洞庫(kù),可通過(guò)爬取和人工添加的方式獲取,漏洞庫(kù)爬取方式通過(guò)漏洞網(wǎng)站爬取漏洞庫(kù)文件,并進(jìn)行解析,提取出漏洞的編號(hào)、評(píng)分版本、評(píng)分、風(fēng)險(xiǎn)級(jí)別、組件名稱、組件版本等。人工添加方式實(shí)現(xiàn)在平臺(tái)界面上手工添加漏洞。檢測(cè)平臺(tái)漏洞庫(kù)集成操作平臺(tái)、公共庫(kù)、WEB服務(wù)、數(shù)據(jù)庫(kù)服務(wù)、網(wǎng)絡(luò)服務(wù)、常用工具等相關(guān)組件的漏洞。
通過(guò)逆向分析去掃描固件,根據(jù)固件使用組件版本與所有該版本已暴露的漏洞完成關(guān)聯(lián)分析,即通過(guò)將固件提取后的組件名稱、組件版本和漏洞庫(kù)中的漏洞逐一進(jìn)行匹配,從而發(fā)現(xiàn)固件中各組件存在的漏洞。匹配過(guò)程中也會(huì)比較固件的操作平臺(tái)是否與漏洞的軟件環(huán)境相匹配,從而進(jìn)一步確認(rèn)漏洞。
對(duì)于不能準(zhǔn)確檢測(cè)到版本的組件,平臺(tái)將展示可能的版本號(hào)及匹配信息,提供用戶手動(dòng)確認(rèn)組件版本的方式,根據(jù)確認(rèn)的組件版本進(jìn)一步確定存在的漏洞,使得分析結(jié)果更加準(zhǔn)確。
4.2.6 固件對(duì)比分析。通過(guò)以不同方式或渠道獲取的同版本固件的安全分析,檢測(cè)固件是否有被篡改的風(fēng)險(xiǎn);也可以針對(duì)同一固件的不同版本對(duì)比,對(duì)固件中新增、修改或刪除組件的風(fēng)險(xiǎn)對(duì)比分析,判斷歷史風(fēng)險(xiǎn)問(wèn)題是否已解決,是否引入新漏洞等。
在固件對(duì)比中,主要是通過(guò)不同版本固件之間的變化,更加直觀地去分析固件的風(fēng)險(xiǎn)趨勢(shì)。例如通過(guò)文件數(shù)量、動(dòng)態(tài)鏈接庫(kù)數(shù)量和證書數(shù)量的變化,可以得出新舊版本的固件在規(guī)模上做過(guò)的調(diào)整,引入的文件數(shù)量越多,出現(xiàn)安全風(fēng)險(xiǎn)的概率就會(huì)越大。
4.2.7 報(bào)告管理。平臺(tái)支持檢測(cè)報(bào)告輸出功能,針對(duì)固件檢測(cè)分析的結(jié)果,可在線或下載查看結(jié)果詳情,報(bào)告分為固件檢測(cè)報(bào)告和終端檢測(cè)報(bào)告,內(nèi)容包括測(cè)評(píng)依據(jù)、測(cè)評(píng)方法、基本信息、測(cè)試結(jié)果等信息。
4.2.8 管理平臺(tái)。平臺(tái)實(shí)現(xiàn)項(xiàng)目、終端、固件、版本多個(gè)層級(jí)的管理,同時(shí)以圖表的方式展示當(dāng)前平臺(tái)中項(xiàng)目和終端的數(shù)量和安全風(fēng)險(xiǎn)。
平臺(tái)在功能設(shè)計(jì)的同時(shí)也考慮到了安全設(shè)計(jì)問(wèn)題,用戶管理及接入控制按照三權(quán)分立原則,具備完善的權(quán)限管理及分級(jí)授權(quán)、界面操作控制,完整的日志記錄和審計(jì)機(jī)制;平臺(tái)界面訪問(wèn)采用https協(xié)議,通過(guò)傳輸加密和身份認(rèn)證保證了傳輸過(guò)程的安全性。平臺(tái)對(duì)數(shù)據(jù)進(jìn)行了加密,包括文件平臺(tái)加密、配置加密、密碼存儲(chǔ)加密以及使用到的加密套件、算法,保證了數(shù)據(jù)在傳輸、存儲(chǔ)過(guò)程中的安全性。使用Cookie方式維持用戶會(huì)話, 每次請(qǐng)求更新Cookie,提供用戶界面超時(shí)機(jī)制。
物聯(lián)網(wǎng)固件安全檢測(cè)平臺(tái)通過(guò)對(duì)上傳的固件文件進(jìn)行自動(dòng)掃描,實(shí)現(xiàn)平臺(tái)分析、代碼分析、漏洞分析和加密分析,盡可能地發(fā)現(xiàn)固件中由于代碼編寫不當(dāng)、配置不合理等形成的各類風(fēng)險(xiǎn)問(wèn)題,使設(shè)備使用者真正了解設(shè)備潛在的風(fēng)險(xiǎn),有針對(duì)性指導(dǎo)設(shè)備制造商對(duì)漏洞進(jìn)行修復(fù),在源頭上將防止漏洞利用等事件的發(fā)生,不斷提高物聯(lián)網(wǎng)終端的安全性。