固件漏洞安全檢測平台
固件是物聯網設備的基礎使能(néng)軟件,其中存在的安全缺陷是物聯網設備遭受攻擊的根本原因之一。由于物聯網設備資源受限,難以部署完善的安全防護機制, 身處不安全的網絡環境中, 其固件缺陷一旦被惡意利用,輕則使設備宕機, 重則威脅安全攸關領域基礎設施, 造成(chéng)巨大的生命财産損失。因此,有效的固件安全缺陷檢測已然成(chéng)爲保障物聯網設備安全的關鍵, 也成(chéng)爲學(xué)術界和工業界研究的熱點。面(miàn)對(duì)物聯網設備數量的高速增長(cháng)、固件自身規模和複雜性的不斷攀升、固件類型的日益多樣化、固件缺陷的持續增多, 現有的物聯網固件安全缺陷檢測研究面(miàn)臨挑戰。
物聯網(Internet of Things, IoT)是由各種(zhǒng)擁有唯一标識的計算設備、機械或數字對(duì)象、人與物通過(guò)通信技術建立連接,實現自主的人、機、物之間的數通、智能(néng)醫療、智能(néng)電網等安全攸關的領域。根據GSMA預計,到2025年,全球物聯網設備數目將(jiāng)高達25.3億。
固件(firmware)是運行在物聯網設備上的核心軟件之一。IEEE标準12207-2008將(jiāng)固件定義爲“硬件設備和以隻讀軟件形式存儲于硬件設備中的計算機指令和數據的結合”。大部分嵌入式設備中的軟件都(dōu)是以二進(jìn)制形式存儲在隻讀存儲器、可編程隻讀存儲器、可擦可編程隻讀存儲器、帶電可擦可編程隻讀存儲器、閃存等永久存儲設備中, 因此該類軟件一般稱爲固件。
固件按照其是否内置操作系統、以及内置操作系統的類型可分如表1所示的三類:
- 單片固件,通常采取單個二進(jìn)制鏡像的形式,無需底層操作系統,直接基于底層硬件驅動完成(chéng)所有功能(néng),或者隻包含部分系統的庫;
- 基于Linux 的固件,以Linux作爲底層的系統,基于Linux進(jìn)行開(kāi)發(fā);
- 基于RTOS的固件。RTOS(real-time operating system)是指實時(shí)處理數據、沒(méi)有緩沖延遲的操作系統。在嵌入式應用中使用 RTOS 可以使程序最大化利用有限的計算資源、簡化應用程序設計、提高開(kāi)發(fā)人員效率。RTOS受到了越來越多編程人員的重視, 湧現出一批優秀的嵌入式實時(shí)操作系統如VxWorks、QNX、FreeRTOS、RTEMS等,其中FreeRTOS 因其開(kāi)源免費、小巧簡單等特點受到了學(xué)術界和産業界的廣泛采用。
在物聯網設備中使用RTOS,能(néng)夠讓設備最大化利用有限CPU資源;此外對(duì)于開(kāi)發(fā)人員而言,可以簡化固件程序設計、提高開(kāi)發(fā)效率。實時(shí)操作系統的物聯網設備在追求任務實時(shí)性的同時(shí)有低功耗的需求。常見的配備實時(shí)操作系統的設備有智能(néng)插座、智能(néng)燈泡等。
固件處于計算系統的核心地位,自身的安全缺陷往往隐藏較深, 需要滿足特定的條件才能(néng)被觸發(fā),加之,物聯網設備具有多樣、異構等特性, 這(zhè)使得檢測固件缺陷變得極其困難。 現有的缺陷檢測技術主要包括靜态分析、符号執行、模糊測試、程序驗證以及機器學(xué)習,然而現階段基于上述技術的缺陷檢測方法與工具在應用到物聯網固件時(shí)依舊面(miàn)臨挑戰;
- 無法獲取源碼且代碼類型複雜。廠商爲了保證設備安全通常不會(huì)公開(kāi)固件源碼;且爲了完成(chéng)設備的各項功能(néng),固件通常混雜有彙編、Java、JavaScript等不同類型代碼, 阻礙了反編譯的進(jìn)行;
- 不同類型的固件差别較大。現有的固件根據所使用的系統可以分爲單片固件、基于 Linux 的固件和基于RTOS的固件,不同類型固件代碼架構差異較大;且運行在不同硬件上的固件處理器架構和内存架構差異較大,極大阻礙了固件測試工具的可擴展性;
- 測試用例難以構建。固件由于其功能(néng)嚴重依賴外部輸入和中斷,外設類型極其豐富及内部狀态複雜,因此難以構造統一的輸入來滿足衆多外設,也難以構造極端的測試場景去探索更深的路徑。
- 依賴資源及技術不足。固件運行的硬件資源有限,因此較難在物聯網設備中直接運行測試軟件;且物聯網設備通常很少向(xiàng)第三方提供完備的測試接口,無法獲取足夠的固件運行時(shí)信息;固件的反彙編技術仍然存在不足,當固件中存在混淆機制時(shí)難以獲取源碼;模拟器能(néng)力有限導緻大量固件無法進(jìn)行模糊測試。
物聯網固件漏洞分析方法
分析物聯網固件面(miàn)臨衆多挑戰,保障物聯網設備安全的關鍵在于采用自動化的流程,高效檢測固件漏洞。因此研究高效的自動化的固件安全漏洞檢測方法具有重要意義。一方面(miàn)可以在廠商正式發(fā)布固件之前檢測出漏洞,有效避免未來受攻擊所造成(chéng)的損失;另一方面(miàn)可以實現在有限時(shí)間内分析大量固件,節省人力、物力等成(chéng)本。
- 靜态分析
靜态分析無需運行物聯網設備,隻對(duì)固件代碼進(jìn)行掃描,通過(guò)詞法分析、語法分析、控制流、 數據流分析等技術驗證固件代碼是否滿足規範性、安全性、可靠性、可維護性等指标。通過(guò)分析程序特征發(fā)現漏洞,可以達到檢測潛在安全漏洞的目的。
由于設備固件程序涉及商業機密,廠商幾乎不公開(kāi)源代碼或文檔,獲取固件代碼極其困難,一般隻能(néng)通過(guò)逆向(xiàng)工程,然後(hòu)結合一些傳統的程序靜态分析技術進(jìn)行漏洞挖掘。物聯網設備固件的靜态分析的一般步驟如下:
1 )提取出固件中需要分析的程序模塊 ;
2 )使用逆向(xiàng)工具,將(jiāng)其轉換爲彙編語言或其他中間語言 ;
3 )結合二進(jìn)制分析平台或者逆向(xiàng)工具, 恢複程序變量、函數、結構以及 CFG( control flow graph)等信息;
4 )結合靜态程序分析技術,如模糊哈希、污點分析等,實施漏洞挖掘
- 符号執行
符号執行切技術最早源于20世紀70年代中期,通過(guò)采用抽象的符号代替精确值作爲程序輸入變量,得出每個路徑抽象的輸入結果,收集執行路徑約束集合,求解約束産生的測試輸入,在給定的約束下,探索盡可能(néng)多的不同的程序路徑,用于檢查是否存在各種(zhǒng)錯誤。但是大多數符号執行技術不适用于大型程序,存在路徑爆炸的問題,随著(zhe)程序規模的擴大,程序中有意義的路徑呈指數級擴大,有些程序中存在無盡循環或者遞歸調用,這(zhè)更大增加了有意義路徑,增大了符号執行難度。
- 模糊測試
模糊測試技術最早出現1990年,Miller等人使用模糊測試發(fā)現 Unix系統中的漏洞。其核心思想是將(jiāng)自動或半自動生成(chéng)的随機數據輸入到一個程序中,并監控程序崩潰、錯誤和内存洩露等異常。針對(duì)固件運行時(shí)所處的環境不同可以將(jiāng)模糊測試分爲2類:基于真實設備環境的模糊測試;基于仿真環境的模糊測試。在固件分析中應用模糊測試技術,向(xiàng)運行固件發(fā)送大量有效或無效的輸入,觀察程序輸出的行爲特征。在常規自動化測試過(guò)程中,模糊測試擴大了代碼覆蓋範圍,提高了代碼覆蓋率測試程度.但是模糊測試也存在一些問題,如具有較強的盲目性、測試用例冗餘度大、對(duì)關聯字段的針對(duì)性不強等。
- 機器學(xué)習
人工智能(néng)技術可以對(duì)設備收集信息,對(duì)信息進(jìn)行深入學(xué)習和理解,在一定程度上可以彌補現有的檢測和防禦技術在自動化方面(miàn)的不足。例如,使用一些機器學(xué)習、深度學(xué)習算法來挖掘已有的固件漏洞特征,并在代碼中匹配已知漏洞,結合模糊測試自動進(jìn)行惡意應用檢測或漏洞挖掘,借鑒遷移學(xué)習思想融合不同平台的檢測知識。随著(zhe)物聯網應用類型不斷豐富,以及交互場景越來越複雜,利用人工智能(néng)技術提升威脅檢測和防禦方案的效果是值得繼續深入研究的方向(xiàng)。
物聯網(IoT)安全檢測平台
物聯網設備固件中有全部的硬編碼信息,建設的物聯網固件安全檢測平台應能(néng)涵蓋固件文件平台關鍵信息提取、安全檢測原理、Bin 文件逆向(xiàng)分析不安全編碼模式匹配、敏感信息搜索、第三方漏洞庫匹配等多技術方法,通過(guò)反彙編和反編譯等流程,可以把文件平台存在的可執行的機器代碼翻譯成(chéng) C語言等基礎語言代碼,定位危險函數,從敏感信息搜索、第三方漏洞庫匹配等多個方面(miàn)對(duì)設備進(jìn)行安全檢測與評估。
物聯網固件安全檢測平台隻需要上傳設備的固件,平台將(jiāng)自動分析固件,快速發(fā)現内部設備中可能(néng)存在的漏洞,提供專業的安全分析能(néng)力,以避免因弱口令、溢出等漏洞引起(qǐ)設備控制權限的洩露,并最終形成(chéng)檢測分析報告。
掃二維碼用手機看
更多資訊