IoT設備安全漏洞分析、挖掘、檢測和緩解綜述

https://www.anquanke.com/post/id/244711

譯文聲明

本文是翻譯文章,文章原作者 mdpi,文章來源:mdpi.com

原文地址:https://www.mdpi.com/1999-5903/12/2/27/htm

譯文僅供參考,具體內容表達以及含義原文爲準。

 

0. 摘要

隨着IoT產業的興盛,多種多樣的IoT設備開始迅速發展,智能家居、智能穿戴、智能製造、智能汽車等一系列和生活相關的領域得到大量使用。隨之而來的是層出不窮的IoT設備上的漏洞。安全問題的增加會對用戶的隱私和財產帶來嚴重威脅。本文首先介紹了研究背景,包括IoT架構、設備構成和攻擊面。我們回顧了有關IoT設備漏洞挖掘、檢測、緩解技術最前沿的研究,隨後通過評估指出了現在面臨的困難和機會,最後預測和討論了IoT設備上漏洞分析技術的研究方向。

 

1. 介紹

IoT正在成爲最廣泛和實用的在線平臺。它將大量的傳感器和控制器聯網,幫助人們實現和萬物之間的無縫通信。IoT正在成爲互聯網未來的關鍵,特別是近幾年,隨着IoT產業的興盛,多種多樣的IoT設備開始迅速發展,全球活躍的IoT設備已經達到70億,它們在智能家居、智能穿戴、智能製造、智能汽車等一系列和生活相關的領域廣泛使用,我們認爲這會極大提升我們的生活質量。
同時,IoT設備的安全問題經常發生,也難以解決。惠普的報告表明70%的IoT設備包含安全漏洞,平均每臺設備有25個漏洞。攻擊者利用這些漏洞控制設備,進行一系列非法的活動。最著名的例子是在2016年Mirai病毒控制了成百上千臺IoT設備,用這些設備建造了一個殭屍網絡發動TB級的dos攻擊,攻擊目標包括DNS服務提供商Dyn,這次攻擊造成了嚴重的後果,包括導致美國部分的網絡癱瘓。總的來說,隨着IoT設備的廣泛使用、安全漏洞的增加會對用戶的隱私和安全,甚至人類的生活和財產帶來嚴重威脅。
面對頻繁的攻擊,IoT安全研究變得越來越流行。在美國Auto-ID於1999年第一次提出“物聯網”的概念後,安全研究者們投身於IoT行業,研究安全架構和通信的標準。隨後產生了許多關於IoT安全的問題。Zhang等人、Mahmoud等人指出了面臨的問題和研究方向,於是,研究者開始在IoT安全領域使用傳統安全研究的方法。隨着AI的發展,將機器學習和深度學習應用於IoT安全上的概念開始產生。Alrawi等人,系統的總結了智能家居中設備、手機應用、雲端和通信的IoT攻擊點。Xie等人總結及了檢測IoT漏洞的技術。最近,Zheng等人發表了IoT漏洞挖掘的技術概論。在上述的兩篇論文中,漏洞挖掘和漏洞檢測的界限較爲模糊。在本文中,漏洞挖掘的技術即挖掘未知的漏洞,漏洞檢測指針對已知漏洞的檢測。通過以上調查,我們發現現有的研究關注於IoT安全問題,缺少分析技術,其次,漏洞分析技術的重點在漏洞挖掘和檢測,缺少漏洞緩解技術,綜上,現有的IoT安全的技術總結還不夠全面。
爲了解決前面提到的問題,我們希望對以下個方面做出一些貢獻:

  • 首先,我們把重點從IoT架構轉移到IoT設備;其次,精簡IoT設備安全技術的分類;另外我們總結了現有的研究,包括漏洞分析的基礎框架、挖掘未知的漏洞、檢測已知的漏洞、漏洞緩解
  • 我們評估了現有的關於IoT設備漏洞分析的研究。除此之外,我們深入分析了阻礙安全研究技術發展的原因,指出了面臨的困難和機會
  • 我們回顧了技術發展的背景,併爲相關研究者提出了未來研究的方向

這篇論文的結構如下:第二節描述了IoT安全的背景,介紹了IoT設備的架構、設備構成和攻擊面;第三節回顧了已有的IoT設備安全研究,包括漏洞分析、挖掘、檢測和緩解;第四節基於對漏洞分析技術的評估,總結了目前遇到的問題和機會;第五節提出了未來研究的熱點方向;第六節對論文進行了總結

 

2. 背景

2.1. IoT架構

隨着網絡的快速發展,越來越多的家用和工業設備開始聯網,給我們帶來了多元化的生活。物聯網架構主要有兩個發展方向:消費者層面和產業層面
在消費者層面,如果我們將它們按照應用場景劃分,有幾類設備類型例如工業製造、智能家居、智能醫療和智能汽車,其中智能家居的發展相對成熟。互聯網巨頭——三星、谷歌、蘋果和小米佔據大部分市場份額,同時,它們也發佈了SmartThings、Google Weave、Apple HomeKit、HomeAssistant 和 XiaoMi IoT等物聯網平臺。通過調查這些平臺,我們發現絕大多數IoT遵循“設備雲端用戶”這一架構(如圖1)。

智能設備大部分都放在家中,它們和雲服務器進行通信,然後直接或間接通過WiFi、ZigBee、藍牙或其他協議接入網絡。它們上傳傳感器收集的數據,接收發送給執行單元的控制命令。IoT架構不僅依賴供應商的雲,同時也依賴第三方的雲,它們相互支持,併爲各種功能提供多樣化的服務。用戶可以通過手機或者電腦連接雲查看狀態並下載數據。對於一些簡單場景例如可穿戴設備,“設備用戶”架構更加實用。

對於產業層面,IoT架構延續了IT的做法,通過服務器集中管理用戶和設備的交互(如圖2),區別是設備首先通過OT和PLC進行通信。因此產業中的設備等同於PLC和“傳感器+執行器”。安全研究的重點在於PLC。“設備用戶”架構也存在於產業物聯網:管理員用配置軟件控制設備。雖然面向用戶的工業終端例如智能儀表也嘗試了雲的模式,但基於安全考慮沒有得到廣泛使用

2.2. 設備構成

不論是汽車製造中大而複雜的機器,亦或穿戴設備裏小巧智能的手環,它們都包含了相對固定的零件例如芯片、閃存、固件等。它們主要包含硬件和軟件部分

  1. 硬件
  • 邏輯芯片:對於複雜的設備來說,它們需要多個邏輯芯片或cpu來運行內置的操作系統;對於簡單的嵌入式設備或許只需要一個微處理器來運行程序
  • 內存:爲系統和程序運行提供空間,大小從KB到GB不等
  • 閃存:儲存IoT設備固件。部分設備的bootloader也存放在閃存
  • 網絡模塊。IoT設備和傳統嵌入式設備的區別就是前者連接了網絡。他們通常採用無線技術連接到互聯網,如AP
  • 串行調試接口:IoT設備需要與外部進行通信,以便調試。串行調試接口可以讓開發人員發送和接收命令。最常見的接口是通用異步接收器/發送器UART
  1. 軟件
  • Bootloader:在IoT設備系統啓動前,它初始化了硬件設備,將固件加載到引導設備。它使系統的軟件和硬件環境達到合適的狀態
  • 固件:固件包括了操作系統、文件系統和一系列服務程序。IoT設備上的安全研究通常從固件分析開始

2.3. 攻擊面

針對IoT設備的攻擊面不僅包括傳統軟件安全領域,因爲它們的特殊結構和功能,也包括了新的攻擊領域。根據IoT架構和設備構成,攻擊面可以分爲三個層面(圖3)

  • 圖3

2.3.1. 硬件層

硬件層面的攻擊不同於傳統的安全領域,它主要包括三個角度:不安全的調試接口、未保護的閃存芯片、硬件敏感信息的泄露

  1. 不安全的調試接口
    當IoT設備被製造的時候,調試接口比如UART會被留在電路板上以便維修。如果它缺少身份驗證或者僅有弱身份驗證,攻擊者就可以通過接口來獲得高權限,對固件進行修改或者替換。調試接口在IoT安全檢查中排在第一位
  2. 未保護的閃存芯片
    因爲閃存通常用來存儲固件,因此也成爲了關注的重點。如果芯片沒有讀寫保護,安全研究者就可以通過讀取固件來分析或者修改固件,來繞過接口的身份驗證
  3. 硬件敏感信息的泄露
    硬件電路的密封性並不好,諸如聲音和電量消耗的硬件信息泄露可以造成側信道攻擊,攻擊者可以由此獲得重要的信息,比如密鑰。

2.3.2. 軟件層

軟件層面的攻擊對應着設備構成中bootloader和固件的軟件部分,它主要包括以下五個方面:不安全的bootloader、不安全的操作系統、固件敏感信息泄露、不安全的應用服務、不正確的配置策略

  1. 不安全的bootloader
    因爲bootloader是一段在設備運行後加載的代碼,因此是一個容易被忽略的攻擊點。它的功能是初始化並加載固件,因此當問題出現時它的危險程度很高。例如checkm8這個Boot ROM 漏洞被稱爲是iphone、ipad、apple TV和 apple watch上的史詩級漏洞
  2. 不安全的操作系統
    由於研發週期短和輕量化的需求,IoT設備的操作系統內核是定製的,版本也不經常更新,這導致了大量的緩衝區溢出問題,如提權等。除此之外,設備使用了各種各樣的傳感器和通信模塊,包括內核中大量的驅動。例如,Marvell WiFi芯片驅動找到了多個漏洞,包括 CVE-2019-14901, CVE-2019-14897 和CVE-2019-14896,它們導致了內核中基於棧或堆的緩衝區溢出。這也是攻擊面中重要的一部分
  3. 固件敏感信息泄露
    IoT設備的本地存儲通常使用輕量化的存儲方案,開發者通常忽略了它的安全性,並使用了明文或只是進行了簡單的加密,這很容易導致敏感數據的泄露
  4. 不安全的應用服務
    應用服務開發缺少安全標準。爲了加快產品的開發,通常直接編譯、使用了簡單、不安全的應用代碼,因此引入未知的漏洞。IoT安全研究者們已經發現了大量開發時產生的應用漏洞,包括出於未知原因留下的後門
  5. 不正確的配置策略
    爲了方便管理IoT設備,ssh、telnet等服務是默認的開啓,這樣會造成配置問題。默認配置下的弱驗證策略使攻擊者容易獲得設備的權限。例如,Telestar Digital GmbH 的物聯網收音機可通過未經驗證的telnet服務器被遠程攻擊者劫持利用,這些漏洞已經被CVE-2019-13473和CVE-2019-13474收錄。

2.3.3. 協議接口層

協議接口層的攻擊包括了通信和API,它涉及到用戶側直接控制和由雲端間接控制的設備,以及以上兩種通信過程中的信息保護問題,並不涉及到協議的安全。例如,IoT通信協議的濫用和AR-Ddos攻擊正是通過IoT通信協議CoAP、SSDP和SNMP執行的,它的目標不是IoT設備,但是它也是IoT安全一個重要的研究方向。協議接口層的攻擊主要包括一下三個角度:不安全的遠程管理接口、數據傳輸過程中的信息泄露、弱身份驗證

  1. 不安全的遠程管理接口
    爲了方便管理,IoT設備使用http服務之類的遠程管理方式,這帶來了諸多漏洞,例如sql注入、XSS和遠程執行漏洞等
  2. 數據傳輸過程中的信息泄露
    IoT通信協議使用了弱加密算法或者根本不進行加密,導致敏感信息泄露。例如論文Passwords in the Air中提到的,當IoT設備接入網絡時,WiFi密碼以明文傳輸
  3. 弱身份驗證
    由於安全需要,管理IoT設備需要身份驗證綁定,於是產生了一個新的攻擊面。攻擊者可以繞過身份驗證,重複綁定然後獲得用戶的信息,論文Phantom Device Attack在這個攻擊面上找到了四種攻擊方法

 

3. 漏洞分析、挖掘、檢測和緩解

現階段,對IoT安全沒有精確的分類,此外,安全研究的核心在於漏洞,因此我們把重點放在設備的漏洞。在研究週期中,研究分爲三個階段:挖掘、檢測和緩解。因爲IoT安全的特殊性導致不可能有用於分析的標準接口,因此,針對物聯網的基礎分析框架的研究內容也很有價值。爲了審視現有的物聯網安全技術,我們從以下四個角度進行總結:(1)漏洞分析的基礎框架的研究,使用了固件模擬來幫助分析IoT安全問題;(2)漏洞挖掘技術研究,主要針對挖掘IoT設備中的未知漏洞的手段;(3)漏洞檢測,研究基於現有漏洞的特徵來檢測已知漏洞;(4)漏洞緩解技術的研究,研究了自動修復漏洞或者加入訪問控制來限制惡意行爲。另外,這節總結的IoT漏洞分析技術需要一系列前提條件,例如固件提取,因此我們標註了技術要求,但並不總結它們。

3.1. 漏洞分析的基礎框架研究

爲了解決人們對物聯網安全的擔憂,即使沒有源代碼或者硬件資料,對固件二進制文件的準確分析也極爲重要。然而,由於缺少專門的基礎框架,IoT安全領域的漏洞分析收到了阻礙。例如,動態分析依賴於在可控的環境(通常是設備化的模擬器)中執行程序,因此基礎框架主要提供了通過半仿真和全仿真的功能。它可以進行復雜的動態分析以支持IoT安全研究。
技術要求:能夠獲得IoT設備固件
對於缺少專門用於分析固件,特別是用於動態分析的工具,Avatar提出了一個結合了在模擬器上的模擬執行模式和在真實設備上的實際執行模式的框架來分析固件。當固件在模擬模式下運行時,當發生I/O時,Avatar將操作轉發到設備,設備執行操作後將結果傳給模擬器,以便模擬器繼續運行。它有效地應對了特定外圍設備缺少源碼和文檔的問題。隨後,Prospect和Surrogate也提出了類似的動態分析框架。四年後,Avatar開發團隊開發出了Avatar2,允許安全研究者在不同動態分析框架、調試器、模擬器和實際設備之間交互操作,除此之外,作者還展示瞭如何使用Avatar2來記錄設備的執行流。Chen等人提出了用於linux設備的Firmadyne,首先使用軟件進行系統仿真,然後採用掃描和探測等動態分析方法來挖掘漏洞。以上框架的模擬功能都基於QEMU。對於不易模擬的傳感器操作,半模擬框架在執行表1的固件指令時,通過軟件代理的方式引導對物理硬件的I/O操作

  • 表1是漏洞分析基礎框架的總結。
    Semi-simulation指的是框架需要真實的設備來進行I/O訪問

3.2. 漏洞挖掘技術研究

隨着IoT設備漏洞的增加和攻擊趨勢的上升,安全研究者在設備的漏洞挖掘上花費越來越多時間。這一屆表述了漏洞挖掘的技術,包括動態和靜態分析。通過學習傳統的軟件安全分析技術,我們發現動態分析主要包括fuzz和污點檢測,靜態分析主要包括符號執行、污點分析、數據流分析。

3.2.1. 動態分析方法

動態分析方法需要仿真固件工具來進行動態調試,或者在物理設備上進行片上調試,來獲得反饋信息。主要通過fuzz來得到漏洞的觸發點
技術要求:在IoT設備上進行動態調試的能力
在卡片安全研究領域,Alimi等人使用了一個通用的算法生成測試樣本,對手機卡和銀行卡進行fuzz。對於現在一些內置web服務器的智能卡片,Kamel等人發現了一些基於HTTP協議生成方式的bug,並據此對web服務器進行了fuzz。在汽車安全領域,Koscher和Lee通過修改發送給CAN的數據包來改變汽車的狀態,來對汽車的智能系統進行fuzz。
因爲IoT固件提取的困難,IoTFuzzer通過從用戶側捕獲崩潰信息來避免了這個問題。首先,它在手機應用中的交互協議代碼裏插樁,然後修改從樁獲取的數據,最後根據心跳包(Heartbeat packet)和響應來判斷fuzz的效率。因爲設備很難直接調試,研究者開始結合仿真技術來發現漏洞。Costin等人實現了應用動態固件分析技術來進行嵌入式固件鏡像中web接口的漏洞自動化挖掘框架。最近,Srivastava等人的目標不再僅限於web接口,他們展示了FirmFuzz,一個獨立於設備的、針對Linux固件鏡像的自動化仿真和動態分析框架。Zheng等人提出了Firm-AFL,它是第一個針對IoT固件的高吞吐量灰盒fuzzer,他們擴展了AFL,把它變成了現在IoT領域最流行的fuzzer。對於fuzz的研究,Muench等人分析了傳統的IoT設備異常狀態檢測方法的通用性,然後實現了一個基於Avatar和的系統,另外,他們比較了黑盒fuzzer在不同配置下的吞吐量,包括本機執行(直接向硬件輸入)、部分仿真(僅將硬件請求重定向到硬件)、全仿真,這是一項對漏洞分析技術性能的評估。上述提到的動態分析技術發現的漏洞類型詳見表2,主要是內存問題例如緩衝區溢出和空指針解引用,由於對web接口進行了研究,也有一些web服務器漏洞例如XSS、SQL注入。

3.2.2. 靜態分析方法

靜態分析不需要運行固件就可以挖掘漏洞。尋找bug的過程可以理解程序代碼,因此它具有可擴展性。
技術要求:能夠獲得IoT設備的固件
靜態分析步驟如下:(1)提取固件,(2)逆向固件中的程序,(3)通過人工審計找到安全問題。在學術界,研究人員主要探索通過自動化靜態分析方法來找到漏洞。在表2,我們總結了靜態分析的研究目標、細分的技術和發現的漏洞種類。Costin等人首先自動化分析了大量嵌入式設備的固件。他們自動解壓運行了固件,然後使用模糊哈希來匹配固件中的弱密鑰。FIE基於KLEE構建了嵌入式設備的符號執行引擎。它制定了內存規範、中斷規範、芯片規範,以發現固件中違反自定義安全規範的問題。Firmalice也是一個基於符號執行的框架,它通過後門的輸入確定性來找到身份驗證繞過漏洞。SainT和DTaint提出了靜態污點分析方法,分別在設備軟件或二進制代碼上挖掘漏洞。

  • 表2
    BO=緩衝區溢出漏洞;NPD=空指針解引用;CL=命令注入;CSRF=跨站請求僞造

3.3. 漏洞檢測研究

前面提到的動態和靜態分析技術也可以應用於檢測已知的漏洞。在大規模的檢測場景,動態分析依賴於使用架構專用的工具來執行程序,靜態分析檢測已知漏洞的方式和發現0day漏洞的方式相同,但提高了性能和耗時。目前,研究者主要使用以下兩種方法:網絡掃描和代碼相似性檢測。

3.3.1. 網絡掃描

網絡掃描通過向在線的IoT設備服務發送帶有payload的探測包來檢測已知漏洞。網絡掃描在安全領域更爲通用,隨着IoT安全的發展,產生了網絡掃描物聯網設備的議題。
技術要求:瞭解漏洞的有關信息,如POC
Cui等人掃描了網絡上存在的嵌入式設備,發現了一系列設備含有弱密碼和其他漏洞。在2013年後,搜索引擎例如Shodan和Censys以及Zoomeye產生了,它們能夠識別和檢測弱密碼、後門、和已知的漏洞。然而,僅靠外部掃描只能發現一小部分漏洞,而且,未授權掃描聯網設備也存在道德問題。因此,網絡掃描漏洞常常在內網和實驗室中進行。網絡掃描的優點在於從服務層進行檢測並不需要考慮設備的結構,並且它高效快速,適合大規模測試。現有的商用漏洞檢測系統大多基於這種方法。

3.4. 相似性檢測

由於IoT設備中存在大量沒有修復過的已知漏洞,安全研究員們提出軟件代碼相似性檢測方法來檢測已知漏洞。在現階段,相似性檢測的研究主要針對傳統軟件安全領域,然後通過跨架構逐步支持物聯網設備,而不存在專門研究IoT固件相似性檢測的論文。如圖4,相似性檢測的基本思路是從代碼中提取原有特徵,如字符串、指令序列、基本塊、語法樹和函數調用圖等,接着,通過算法測量特徵的相似度,最終確定相應的代碼片段中是否存在漏洞。

技術要求:獲得IoT設備固件

3.4.1. 源代碼相似性檢測

對於在源代碼上檢測已知漏洞, CP-Miner提出了基於token的方法,使了用詞法分析器來產生token序列,然後搜索重複的token序列來衡量相似性。ReDeBug提出了一個可擴展的方法,它結合代碼補丁來確定修復前的漏洞代碼的特徵,並且可以識別未打補丁的代碼。然而,以上基於源代碼的方法並沒有應用在IoT上,在絕大多數情況下,安全研究員們無法獲得固件的源代碼。

3.4.2. 二進制代碼相似性檢測

對於在二進制代碼上檢測已知漏洞,研究者主要面臨的問題是,不同的編譯器代碼生成算法、編譯優化選項以及不同指令集導致難以檢測相似性。N-Grams和N-Perms是早期的漏洞搜索方法。Karim等人使用內存中的二進制片段或代碼來匹配算法,由於沒有對代碼語義進行了解,這種方法難以應對不同編譯級別帶來的指令重排序問題。爲了提升匹配的準確性,Tracelet-based提出將代碼重構爲可執行序列,然後使用求解器來處理程序約束和數據約束,因此它解決了指令重排序的問題。此外,TEDEM採用符號簡化二進制程序,並通過樹編輯距離作爲基本塊來判斷代碼相似性,它甚至可以找到不同操作系統的漏洞。
由於一些相同的語義特徵,導致難以表示兩個二進制程序基本塊特徵相似性。研究者開始考慮使用CFG來描述程序的行爲,因此可以通過圖來進行相似性比較。BinDiff和Binslayer能夠通過檢測CFG相似度,來檢查兩個二進制程序的相似性,不過它們並不是專門爲漏洞檢測設計的。通過比較兩個完全不同的二進制文件的CFG,還是難以發現跨平臺的漏洞片段。Egele等人提出了Blanket Execution 並指出,基於靜態分析的二進制語義相似性研究容易受編譯鏈和編譯優化級別的影響。因此他們建議提取程序動態運行時的特徵,來應對造成CFG改變的影響。BinHunt和iBinHunt使用了符號執行和理論證明,來檢查基本塊之間的語義等價性,並找出哪些語義有所不同。
然而不同IoT設備的固件差異很大,包括多種架構如MIPS、ARM、PPC、x86等,它們的操作碼、寄存器名稱和內存尋址方式都有差別,因此,以上提到的方法難以應用於大規模的跨架構代碼漏洞檢測。直到最近兩三年,研究人員開始研究二進制代碼基礎上的跨架構代碼相似性檢測。Multi-MH是第一個基於二進制代碼的跨架構代碼相似性檢測方法。首先,將二進制代碼轉換爲中間代碼,然後使用特定的輸入來測試程序,並根據I/O的行爲來捕獲基本塊的語義,最後根據捕獲的CFG來檢測漏洞。然而它在處理大量函數時的性能開銷過大。DiscovRE通過圖匹配算法檢查一組函數對的CFG是否相似,並通過預篩選來加快CFG匹配過程。然而它的預篩選過程並不可靠且會漏報過多漏洞。BinGo通過引入選擇性內聯相關庫函數以及用戶定義的用於跨平臺代碼搜索的函數來捕捉完整功能語義。然而它並不是特別爲IoT設備設計的。Genius使用機器學習的傳統方式,從CFG學習高層特徵表徵。另外,它將圖嵌入編碼爲一個高位數字特徵向量,然後使用圖匹配算法測量目標函數和一組二進制函數的相似性,這可以有效的提升性能和可擴展性。Xu等人首先提出了基於深度學習的跨架構二進制代碼相似性檢測方法,使用了神經網絡模型的圖嵌入技術。在跨版本代碼相似性檢測,αDiff邁出了重要的一步。它基於DNN模型,提取了三個語義特徵,包括函數、功能間和模塊間的特徵,來進行檢測。Gao等人提出了VulSeeker和VulSeeker-Pro。這些漏洞搜索方法都通過與深度學習結合,來提高檢測的準確性,後面提到的兩種方法被證實比目前其他的(例如Gemini)方法準確度都高。

3.5. 漏洞緩解研究

在漏洞挖掘和檢測的基礎上,漏洞緩解措施也是行業關注的一個研究問題。根據公開的文獻研究,主要研究熱點是自動化生成補丁和訪問控制。前者旨在修復漏洞,後者研究如何限制惡意行爲。

3.5.1. 自動化生成補丁

這節所說的自動化生成補丁技術並不專指IoT領域,而是一個傳統安全領域的擴展。漏洞修復通常由開發團隊在源代碼上完成。在獲得外部漏洞報告後,他們通過漏洞觸發條件和分析漏洞機制來評估漏洞。自動生成補丁可以自動修復軟件錯誤,而不需要開發者人工判斷、理解、修正。
技術要求:獲得和升級IoT設備固件
軟件工程領域的研究者們提出,通過學習正確的c語言、Java和其它源代碼級別中的正確代碼可以自動生成補丁,這一想法取得了初步可行成果。另一種想法是改變程序的形式而不改變它的功能。GenProg使用了遺傳編程的擴展形式來演化程序變體,該變體保留了所需功能但不易受到給定缺陷的影響,然而由於突變操作的隨機性,它會生成無意義的補丁。因此Kim等人提出了基於模式的自動化程序修復(PAR)來解決上述的問題。在安卓平臺上,Zhang等人提出了AdaptKpatch,一個自適應內核修補程序框架和LuaKpatch,它將一個類型安全的動態語言引擎插入內核來執行補丁。這兩個方案解決了安卓平臺的補丁鏈過長、碎片化和平臺生態佈局不匹配、細分修復不及時的問題。然而它們沒有考慮解決在跨CPU架構自動進行熱修復的問題,他們依舊需要基於知識和經驗進行手工編寫。DARPA的CGC引領了在二進制代碼級別上的自動化防禦方法,然而主要採用的依舊是通用的防禦方法,例如二進制代碼加固、邊界檢查和指針修復

3.5.2. 訪問控制

訪問控制方法是通過管理IoT設備的用戶側或平臺許可,來阻止或結束攻擊者的惡意行爲。
技術要求:用戶側或雲端的可擴展性
Fernandes等人首先深入研究了IoT平臺的安全例如SmartThings,他們發現,由於功能粗粒度,大量的應用獲得了多餘的權限,
智能家居中的許多設備獲得了過多的權限,模糊的權限管理,導致了許多針對IoT設備的攻擊以及隱私泄露。密歇根大學的研究者們想出了一系列辦法來解決這些問題。2016年,他們提出了Flowfence,一個基於數據流來保護隱私泄露的系統,它將程序分爲兩部分:(1)一系列負責操作沙箱中敏感數據的隔離的模塊。(2)不操作敏感數據,但通過污點跟蹤不透明的句柄將隔離的模塊鏈接在一起來協調執行的代碼,其中涉及到的數據的數據只能在沙箱內被解引用。於是在2017年,他們又提出了基於上下分信息的ContextIoT,它可以幫助用戶提升訪問控制的有效性,通過識別敏感操作上下文標識和保證運行時的上下文完整性,來抵禦攻擊者進行危險操作。2018年,一個針對智能家居的基於風險控制的模型Tyche被提出,它建立了訪問控制列表(ACCLs),在源代碼層面解決訪問權限過多的問題。Smartauth和FACT同樣基於ACCLs,然而他們採取了不同的方法來建立ACCLs。Smartauth通過NLP識別的文件和APP源代碼建立ACCLs,FACT在設備開發的階段就建立了ACCLs。

 

4. 討論

在前面幾節,我們深入探索了目前關於IoT漏洞分析技術的研究。在這一節,我們首先評估了漏洞分析技術,其次,通過評估指出現階段研究的難點,最後提出了應對這些難點的技術機會。

4.1. 評估

在表3,我們從5個角度進行評估,包括攻擊面、技術要求、支持的架構、支持的操作系統和是否與AI結合。在漏洞分析過程中,研究者需要仿真、調試接口、網絡流量等方面的技術支持。例如,IoTFuzzer使用了把目標轉移到APP的外圍系統分析方法。這種方法優點是能更好的避免架構的複雜性, 缺點是粗粒度的崩潰信息阻礙了對漏洞的進一步分析。從這些角度的的評估能夠更容易的對技術難題和未來的發展趨勢進行分析。

4.2. 難點

前面的評估反映出當今IoT設備上的漏洞分析存在的難題。如表4中展示出的,不同技術領域對研究的影響不同,至於IoT設備漏洞分析需要的技術,現存的難題如下:

  • 表4:這張表總結了難點和機會的影響範圍,影響的範圍包括四種:IoT分析的基礎框架(T1)、漏洞挖掘技術(T2)、漏洞檢測技術(T3)、漏洞緩解技術(T4)。√=難點或機會和這個領域的技術有關

4.2.1. (1)設備的複雜性和異構性

這個問題一直都是IoT設備漏洞分析技術的最大難點,IoT設備的差異性比PC和手機都大。它使用了多種CPU架構如ARM、MIPS、x86,以及不同的操作系統如Linux、Windows和安卓,它通常使用定製化的固件和內存使用,這使得難以直接在IoT領域應用行業上的自動化檢測、挖掘漏洞技術。IoT設備的複雜性使得靜態和動態調試更加難以進行。我們發現現階段主要選擇路由器等基於arm的Linux設備來作爲研究對象。相似性檢測方面的研究擴展到了跨架構的場景。其他研究並沒有遇到這個問題。

4.2.2. (2)設備資源的限制

由於產品輕量化的需求,IoT設備大多運行在精簡的操作系統,或者甚至只在微控制器上運行一個程序。上述原因造成了設備資源有限的特點。對於IoT設備安全測試來說,通過向目標部署相關分析模塊,來實現對運行程序外圍的監控分析並不容易。安全研究者並不能使用傳統的安全分析手段和工具,他們需要重構分析平臺。另外,由於設備硬件的計算能力有限,動態分析的性能下降了。最近幾年,研究者開發了一套仿真系統,在基礎架構和漏洞挖掘領域應對了這個問題。然而這個問題還沒有完全解決,且會是一個長期的難題。

4.2.3. (3)閉源措施

對於常規的軟件,我們可以在源代碼或二進制程序層面挖掘或檢測漏洞,對於IoT設備製造商,由於他們的閉源措施,這些方法並不能使用。代碼審計,例如3.3.2節的”源代碼層面的相似性分析”不再適用於IoT漏洞分析。他們甚至對固件進行加密、加強對串行調試接口的身份驗證,並且認爲這樣會更加安全。例如Dlink-882(867,878)、360 clear robots最新的固件都被加密了。因此,基於源代碼、固件和調試接口的漏洞分析變得越來越困難。通過之前的評估,我們發現近兩年的漏洞挖掘和檢測技術已經繞開了調試接口和固件,然而又出現了信息不完整等問題。

4.3. 機會

IoT的特點不僅給漏洞分析帶來了難題,同時也帶來了新的機會。

4.3.1. (1)AI技術的應用

在最近幾年,AI和IoT兩種新技術已經出現了結合,促進社會進入了AIoT的時代。AI技術的發展也給IoT安全帶來了新的措施和解決方案。如今,出現了運用AI進行訪問控制和相似性檢測的研究,隨着IoT和AI的發展,新的漏洞挖掘、檢測和緩解技術不可避免的出現了,當AI應用在IoT設備上時,這同時也是AI對抗攻擊和防禦的新機會。例如,攻擊者污染智能音箱的數據集,誘導它對某些問題回覆一些負面信息(辱罵性詞語),而安全研究者們通過改進AI算法來避免這類問題。

4.3.2. (2)對第三方和開源代碼的依賴

IoT固件開發依賴了大量第三方和開源代碼,製造商通常只把新功能、高性能和低功耗作爲產品的主要目標,同時儘可能縮短開發週期以提升市場競爭力。因此,他們採用了敏捷開發。許多IoT設備製造商直接重複使用開源代、參考公共代碼實現、交叉編譯PC平臺的代碼、依賴第三方庫。Cui等人發現80.4%的打印機固件在發佈時包含大量已知漏洞,許多最新的固件升級包仍然含有第三方庫漏洞,有些漏洞在8年前就已經披露。儘管這件事情暴露了大量安全問題,但仍然帶來了獨特的漏洞挖掘技術,可以通過不同層次信息的相似性來挖掘同源漏洞。相似性檢測也將推動IoT領域的應用程序。

4.3.3. (3)外圍設備系統的開發

IoT設備的交互性越來越強,它逐漸提升促進IoT外圍設備的發展。IoT設備通常使用終端(PC和手機)、雲端和其他系統進行交互。這不僅增加了新的攻擊面,同時有助於外圍設備分析技術的發展,以解決固件提取集和分析的困難。例如,現有的IoTFuzzer和訪問控制框架都具備對於外圍系統的自動分析和保護技術。

 

5. 研究方向

在前面幾節中,我們介紹了面臨的難題和機會,我們發現IoT漏洞挖掘、檢測和環節技術延續了傳統安全研究的軌道,但同時也有其不同的研究方向。

  • 基於AI的漏洞挖掘和分析技術
    不論是在功能還是安全上,IoT和AI技術都在迅速結合。現有的AI技術成功運用在了漏洞檢測上。隨着研究的繼續,AI會擴展到其他的漏洞分析技術上。例如,GANs已經應用在了IoT系統異常行爲檢測上。在未來,GANs或許可以應用在IoT漏洞挖掘領域,因爲它可以學習不同的攻擊場景,來生成類似0day攻擊的樣本,併爲算法提供一系列現有攻擊外的樣本。
  • 大規模漏洞檢測技術
    在4.2節中提到,IoT設備的複雜性和異構性妨礙了大規模、自動化的漏洞分析技術研究。然而,這個技術需求在IoT安全產業已經迫在眉睫。安全研究者需要一個跨平臺方案來克服這個問題,這也是一個長期的研究方向。
  • 自動化漏洞利用
    爲了利用IoT設備中的漏洞並保護設備免受入侵,我們需要自動化生成poc,因爲它能幫助更好理解漏洞的危害和成因。隨着IoT領域的發展,自動化攻擊和防禦也將成爲熱點。
  • 外圍設備的漏洞分析
    通過之前對現有難題的分析,我們發現難以通過靜態和動態分析直接分析設備。IoT設備的交互性變得越來越強,不僅與外圍系統結合的漏洞會越來越多,對外圍系統的分析方法的研究也會增加。
  • 在二進制代碼層面自動生成多平臺補丁
    由於一些IoT廠商將代碼閉以及和不注重安全性,設備固件沒有辦法及時打上補丁。爲此,我們需要跨平臺二進制代碼漏洞自動化修復方案。自動化生成二進制代碼層的補丁需要完全理解Bug的成因和消除方法。如果我們完全依賴該領域專家的知識,將會出現數以千計的安全漏洞模板,因此難以達成可擴展且可行的解決方案。同時,操作系統和硬件架構的多樣性也帶來了技術上的難題。解決自動生成多平臺的二進制代碼補丁這一難題,將是全安全領域一個長期的目標。

 

6. 結論

隨着IoT的迅速發展,確保用戶的安全和隱私保護帶來了顯著的影響和挑戰。雖然關於IoT設備安全的研究數量逐漸上升,但在信息安全的領域仍然處於起始階段。因此,需要一個對於現有研究的綜合摘要來指引IoT安全的發展。這篇論文分析了消費者層和產業層的IoT設備架構和攻擊面,展示了當前研究的背景。我們首先從四個方面完善了分類:分析工具、漏洞挖掘、漏洞檢測和漏洞緩解。基於這四個方面,我們回顧了漏洞分析的技術。另外,我們總結了目標、特點和研究方向。隨後,我們評估了漏洞分析的技術,發現現有研究面臨的難點,包括設備的複雜性和異構性、設備資源的限制、長期閉源的措施。困難同樣伴隨着機會。AI技術和外圍設備分析將會廣泛應用在IoT安全領域。在未來,將會有越來越多的技術和新領域結合,來實現大規模、跨架構的自動化漏洞分析。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章