基于韌體的漏洞挖掘方法梳理
- 相關論文
- 方案
- 2013
- Fie on firmware: Finding vulnerabilities in embedded systems using symbolic execution, USENIX 2013
- 2014
- A Large-scale Analysis of the Security of Embedded Firmwares, USENIX 2014
- Avatar: A framework to support dynamic security analysis of embedded systems’ firmwares, NDSS 2014
- 2015
- Firmalice-Automatic Detection of Authentication Bypass Vulnerabilities in Binary Firmware, NDSS 2015
- 2016
- Towards Automated Dynamic Analysis for Linux-based Embedded Firmware, NDSS 2016
- Automated dynamic firmware analysis at scale: A case study on embedded web interfaces, ACM ASIACCS 2016
- 技術改進
- Scalable graph-based bug search for firmware images, ACM CCS 2016
- 2017
- BootStomp: On the Security of Bootloaders in Mobile Devices, USENIX 2017
- 2018
- IoTFuzzer: Discovering Memory Corruptions in IoT Through App-based Fuzzing, NDSS 2018
- DTaint: Detecting the Taint-style Vulnerability in Embedded Device Firmware, IEEE DSN 2018
- 2019
- SRFuzzer: an automatic fuzzing framework for physical SOHO router devices to discover multi-type vulnerabilities, ACSAC 2019
- FirmFuzz: Automated IoT Firmware Introspection and Analysis, IEEE IoT S&P 2019
- FIRM-AFL: High-Throughput Greybox Fuzzing of IoT Firmware via Augmented Process Emulation, USENIX 2019
- 2020
- KARONTE: Detecting Insecure Multi-binary Interactions in Embedded Firmware, IEEE S&P 2020
- P2IM: Scalable and hardware-independent firmware testing via automatic peripheral interface modeling
- 技術改進
- 2021
- Sharing More and Checking Less: Leveraging Common Input Keywords to Detect Bugs in Embedded Systems, USENIX 2021
- DIANE: Identifying Fuzzing Triggers in Apps to Generate Under-constrained Inputs for IoT Devices, IEEE S&P 2021
- 綜述
- Automatic Vulnerability Detection in Embedded Devices and Firmware: Survey and Layered Taxonomies, ACM Computing Surveys 2021
- 物聯網韌體安全缺陷檢測研究進展, 資訊安全學報 2021
- 嵌入式設備韌體安全分析技術研究, 計算機學報 2021
- 物聯網設備漏洞挖掘技術研究綜述, 資訊安全學報 2021
- 物聯網設備軟體安全綜述, 廣州大學學報 2019
- 對比
- 相關作業分類方法
相關論文
方案
2013
Fie on firmware: Finding vulnerabilities in embedded systems using symbolic execution, USENIX 2013
- 方案:Fie
- 技術:符號執行,靜態分析,基于C原始碼,KLEE,基于MSP430系列微控制器
- 點評:對于某些韌體,完整的分析是難以處理的,分析中的各種不精確來源可能會導致誤報或漏報,改進符號執行技術來適應韌體特定的功能,結果表明Fie可以發現許多記憶體錯誤,FIE anticipates and describes the peripherals symbolically using symbolic execution,使用符號執行符號化的描述外圍設備?
- 資源:https://www.usenix.org/conference/usenixsecurity13/technical-sessions/paper/davidson
2014
A Large-scale Analysis of the Security of Embedded Firmwares, USENIX 2014
- 技術:靜態分析(其實沒有進行任何靜態代碼分析,只是簡單的通過關鍵字等進行分析),基于解包后的檔案
- 點評:一項大規模的嵌入式設備韌體安全分析,自動識別韌體發行版中漏洞,解包為可分析的組件,分析所有組件,比較檔案和模塊,
- 資源:https://www.usenix.org/conference/usenixsecurity14/technical-sessions/presentation/costin
- 五個挑戰:構建代表性的資料集;正確識別單個韌體鏡像;解壓自定義的存檔格式;限制所需的計算資源;自動的分析方法,
Avatar: A framework to support dynamic security analysis of embedded systems’ firmwares, NDSS 2014
- 方案:Avatar
- 技術:半模擬,動態分析,符號執行,施加了強假設或依賴除錯埠,白盒模糊測驗
- 點評:一個框架,通過將韌體仿真與真實硬體一起編排,可以對嵌入式設備進行復雜的動態分析,指令在模擬器執行,外圍設備IO被轉發到真是設備,允許研究者應用高級動態分析技術,如跟蹤,污染,符號執行等,
- 資源:https://www.ndss-symposium.org/ndss2014/programme/avatar-framework-support-dynamic-security-analysis-embedded-systems-firmwares/
2015
Firmalice-Automatic Detection of Authentication Bypass Vulnerabilities in Binary Firmware, NDSS 2015
- 方案:Firmalice(和angr有啥關系???)
- 技術:靜態分析,單獨分析,黑盒,二進制,基于符號執行和程式切片
- 點評:提供了一個框架,用于檢測基于符號執行和程式切片的二進制韌體中的身份驗證繞過漏洞(后門), 然而,它受到約束求解器的壓倒性影響,一個通用模型來描述二進制韌體中的后門,并結合動態符號執行來識別它們,先使用靜態分析提取資料依賴圖,然后提取從入口點到手動確定的特權操作位置的程式切片,應用符號執行引擎找到可能成功的路徑,支持多個架構,
- 資源:https://www.ndss-symposium.org/ndss2015/ndss-2015-programme/firmalice-automatic-detection-authentication-bypass-vulnerabilities-binary-firmware/
2016
Towards Automated Dynamic Analysis for Linux-based Embedded Firmware, NDSS 2016
- 方案:FIRMADYNE
- 技術:動態分析,基于韌體模擬,全模擬,分析所有組件
- 點評:依靠基于軟體的完整系統仿真和檢測內核來實作自動分析數千個韌體二進制檔案所需的可擴展性,FIRMADYNE 實施了一種自動化方法來評估大量嵌入式設備韌體映像中新發現的安全漏洞的普遍性,自動化方法只是運行已知的漏洞利用作為 Metasploit 模塊和他們自己的概念驗證 (PoC) 來手動發現漏洞,盡管運行一組預定義的漏洞利用有助于發現已知漏洞,但它不能有效地發現新漏洞,因為同一漏洞在不同類別的設備和供應商中呼叫不同漏洞的可能性很低,
- 資源:https://www.researchgate.net/publication/316904631_Towards_Automated_Dynamic_Analysis_for_Linux-based_Embedded_Firmware
Automated dynamic firmware analysis at scale: A case study on embedded web interfaces, ACM ASIACCS 2016
- 技術:基于全模擬,靜態和動態分析工具(應用級別模擬qemu),強假設,分析所有組件
- 點評:用于發現嵌入式韌體web中的漏洞,任何給定的功能通常都依賴于多個程式的執行,分析所有組件,提供了一個混合靜態分析和仿真來分析嵌入式 Web 界面的框架, 然而,他們的技術不是通用的,不能檢測以前未知的記憶體損壞漏洞,并且依賴于各種啟發式模擬,
技術改進
- Driller: Augmenting Fuzzing Through Selective Symbolic Execution, NDSS 2016
- 方案:Driller
- 技術:模糊測驗和選擇性混合執行(符號執行),避免了模糊測驗的不完整和混合分析中的路徑爆炸,單個模塊或二進制
- 點評:嚴格來說不算韌體漏洞挖掘,改進了軟體漏洞挖掘方法,只關注一個程式或模塊的程式分析,關注記憶體破壞漏洞,在AFL的基礎上加入了動態符號執行引擎
Scalable graph-based bug search for firmware images, ACM CCS 2016
- 方案:Genius
- 技術:基于代碼分析;基于模式匹配(代碼相似性)的靜態分析方法
- 點評:將CFG轉換為高級數字特征向量,對跨架構的代碼魯棒性更強
2017
BootStomp: On the Security of Bootloaders in Mobile Devices, USENIX 2017
- 方案:BootStomp
- 技術:單獨分析,污點分析,多標簽的污點追蹤,KARONTE基于這個做的,靜態分析
- 點評:探討移動引導加載程式設計和實作中的漏洞,靜態分析和動態符號執行的新穎組合產生的多標簽污點分析
2018
IoTFuzzer: Discovering Memory Corruptions in IoT Through App-based Fuzzing, NDSS 2018
- 方案:IoTFuzzer
- 技術:動態分析,基于生成的模糊測驗,只關注面向網路的二進制檔案,黑盒fuzz,通過配套app指導fuzz
- 點評:通過應用程式來指導fuzz,會遺漏其他組件中包含的錯誤,IoTFuzzer 缺乏對生成輸入質量的了解,導致對低質量輸入的資源浪費,分析 Android 應用程式以檢測物聯網設備中與記憶體相關的漏洞, IoTFuzzer 采用基于污點的方法并改變用于生成協議訊息的資料流,因此,IoTFuzzer 不需要協議模板,通過改變應用程式中的資料流,IoTFuzzer 跳過了協議分析,此外,變異策略不僅可以觸發記憶體損壞,還可以觸發邏輯損壞,由于設備監控困難,使用IoTFuzzer來發現明顯的韌體崩潰,
DTaint: Detecting the Taint-style Vulnerability in Embedded Device Firmware, IEEE DSN 2018
- 方案:DTaint
- 技術:靜態二進制分析,污點追蹤
- 點評:第一個提出不依賴于原始碼或模擬韌體運行的;專注于recv等類似函式生成的資料,但忽略了前端檔案的語意,
2019
SRFuzzer: an automatic fuzzing framework for physical SOHO router devices to discover multi-type vulnerabilities, ACSAC 2019
- 方案:SRFuzzer
- 技術:動態分析,模糊測驗,對web輸入語意進行建模
FirmFuzz: Automated IoT Firmware Introspection and Analysis, IEEE IoT S&P 2019
- 方案:FirmFuzz
- 技術:動態分析,基于輸入生成的模糊測驗,
- 點評:FirmFuzz 通過 Web 界面檢測物聯網設備漏洞,它是一種用于語法合法輸入生成的分代模糊器,它利用靜態分析來幫助對仿真韌體影像進行模糊測驗,同時監控韌體運行時間, FirmFuzz 通過收集可觸發漏洞的有效載荷來改變通信訊息,但是,它沒有考慮變異策略,因此檢測到漏洞的機會相對較低,
FIRM-AFL: High-Throughput Greybox Fuzzing of IoT Firmware via Augmented Process Emulation, USENIX 2019
- 方案:FIRM-AFL
- 技術:動態分析,基于變異的fuzz,結合了AFL和Firmadyne
- 點評:一種基于變異的物聯網韌體灰盒模糊測驗平臺, Firm-AFL 采用增強程序仿真來最小化每次模糊迭代的開銷,它通過在用戶模式模擬器中運行目標程式并在目標程式呼叫具有特定硬體依賴性的系統呼叫時切換到全系統模擬器來實作高吞吐量模糊測驗,這項作業解決了性能瓶頸,但是,Firm-AFL 側重于單個程式的覆寫范圍,并沒有考慮溝通程序,單一程式覆寫范圍的增加使得程式間漏洞難以觸發,
- 資源:Firm-AFL:高效的IoT韌體灰盒fuzz - 看雪學院
2020
KARONTE: Detecting Insecure Multi-binary Interactions in Embedded Firmware, IEEE S&P 2020
- 方案:KARONTE
- 技術:靜態分析,關聯考慮跨二進制
- 點評:關注跨二進制,后端,忽略了前端可能會漏報, Web 服務器和二進制檔案之間的通用行程間通信 (IPC) 范式作為分析的起點,然而,大量的IPC介面帶來了大量的過度分析,從而導致許多誤報,
P2IM: Scalable and hardware-independent firmware testing via automatic peripheral interface modeling
- 方案:P2IM
- 技術:動態分析,韌體模擬,模糊測驗
- 點評:實作獨立于硬體和可擴展的韌體測驗,抽象了各種外設,并基于自動生成的模型動態處理韌體 I/O, P2IM 無視外設設計和韌體實作的通用性,因此適用于各種嵌入式設備,
技術改進
- GREYONE: Data Flow Sensitive Fuzzing, USENIX 2020
- 方案:GREYONE
- 技術:使用污點分析更好的利用資料流來指導fuzz,基于靜態代碼檢測
- 點評:嚴格來說不算韌體漏洞挖掘,改進了模糊測驗,一種模糊測驗驅動的污點推理解決方案 FTI,用于獲取更多污點屬性以及輸入偏移和分支之間的精確關系,根據FTI提供的污點分析結果來確定要突變的位元組和要探索的分支的優先級及如何突變,GREYONE補充了資料流特征來調整fuzzing的方向,使用另一種基于資料流特征的約束一致性,即污染變數與未接觸分支中期望值的距離,向種子佇列中添加一致性更高的測驗用例從而提升突變效率,
- 資源:https://blog.csdn.net/Eastmount/article/details/107825286,https://blog.csdn.net/zhang14916/article/details/102802713
- Neutaint: Efficient Dynamic Taint Analysis with Neural Networks, IEEE S&P 2020
- 方案:Neutaint
- 技術:基于神經網路的高效動態污點分析
- 點評:嚴格來說不算韌體漏洞挖掘,改進了動態污點分析,使用神經程式嵌入來跟蹤資訊流,并利用符號執行生成高質量的訓練資料以提高流覆寫率,然而,累積的錯誤和巨大的開銷仍然是 Dynamic Taint Track 的一大挑戰,
2021
Sharing More and Checking Less: Leveraging Common Input Keywords to Detect Bugs in Embedded Systems, USENIX 2021
- 方案:SaTC
- 技術:利用前后端共享關鍵字作為污點分析開始位置,降低符號執行復雜度
- 點評:基于前后端共享關鍵字來指導漏洞挖掘
DIANE: Identifying Fuzzing Triggers in Apps to Generate Under-constrained Inputs for IoT Devices, IEEE S&P 2021
- 方案:DIANE
- 技術:利用靜態+動態方法找到fuzzing triggers,利用fuzzing triggers生成輸入對IoT設備做檢測
- 點評:通過使用網路流量和控制目標物聯網設備的應用程式的混合分析來解決輸入生成問題,與IoTFuzzer很像,在第二節說了IoTFuzzer的缺點
- 資源:Gossip - DIANE筆記,雪溯 - 論文筆記
綜述
Automatic Vulnerability Detection in Embedded Devices and Firmware: Survey and Layered Taxonomies, ACM Computing Surveys 2021
物聯網韌體安全缺陷檢測研究進展, 資訊安全學報 2021
嵌入式設備韌體安全分析技術研究, 計算機學報 2021
物聯網設備漏洞挖掘技術研究綜述, 資訊安全學報 2021
物聯網設備軟體安全綜述, 廣州大學學報 2019
對比
這部分記錄一些文章中出現的各種方案對比的話術:
- 受限于物聯網生態碎片化問題,很難有統一、高效的動態分析方法
- 靜態分析主要基于語意相似性
- 覆寫引導的模糊測驗很難在真實設備上執行,因為它需要在對分析的韌體進行模糊測驗時跟蹤到達的代碼位置,可以使用硬體除錯功能來執行這種跟蹤,但不幸的是,它們通常在消費設備中被禁用
- 靜態分析比動態分析放縮性更好,因為無需訪問物理設備
- 動態解決方案無法保證覆寫所有程式狀態,可能錯過很多bug
- 動態分析可以利用執行時的資訊,
- 資料流分析(例如,動態污點分析)被證明對指導模糊化是有用的,TaintScope[40]利用它來定位校驗和,vuzzer[30]使用它來標識分支指令中使用的位元組和值,angora[10]使用它來繪制與路徑約束相關的輸入位元組的形狀,這些解決方案利用污點來確定在哪里以及如何以不同的方式變異,并在一些應用程式中顯示出良好的性能,
相關作業分類方法
karonte:按動態污點追蹤;模糊測驗;靜態分析
fuzz相關的方法:基于變異的分析;基于生成的fuzz
前后端共享:動態分析;靜態分析;污點追蹤
一般的分類方法:靜態分析,動態分析(模糊測驗,動態污點分析,基于模擬),符號執行
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/286472.html
標籤:其他
