論文分享 | LABRADOR:響應引導的針對物聯網設備的黑盒模糊測試

由于固件仿真以及重托管的技術挑戰,部分企業級 IoT 設備只能在黑盒環境下進行模糊測試。分享一篇發表于 2024 年 S&P 會議的論文 Labrador,它利用響應來引導請求變異,實現了針對 IoT 設備的高效黑盒模糊測試。

猴先生說:這篇論文提供了一個很好的思路,通過響應來推斷程序覆蓋情況,引導工具在黑盒的環境下執行灰盒的測試。實踐性很強,通用性不好說,需要不少人為的干預,利用響應去推斷未必總能成功。但不管怎么說,不失為一種途徑,通過經驗和數據的積累,說不定能成為一個很厲害的工具。

1 背景介紹

在“萬物互聯”時代,數十億臺物聯網(Internet of Things, IoT)設備通過網絡無縫連接人類、機器與物體,為日常生活帶來便利與價值。IoT 設備的指數級增長也帶來了日益嚴峻的安全威脅。據報告,近年來針對 IoT 設備的漏洞與攻擊數量顯著上升。為緩解此類威脅,提前發現并修復漏洞至關重要。

目前,IoT 固件漏洞發現技術主要分為兩類:

  • 第一類是靜態分析,如 SaTC、KARONTE 等。這類方法通常聚焦于污點型漏洞,首先通過靜態分析識別敏感代碼(即漏洞觸發點,sink),然后利用污點分析或符號執行推斷可能觸發這些 sink 的可疑路徑。然而,這類方法往往存在高誤報率和低效率的問題。

  • 第二類是模糊測試(fuzzing)。由于 IoT 設備運行通常依賴外設或特定配置,許多模糊測試方案(如 Firm-AFL、Firmadyne)專注于固件的仿真或重托管,以提高模糊測試的效率、可擴展性及漏洞檢測能力。然而,對于一些 IoT 設備,尤其是企業級設備,仿真或重托管其固件極具挑戰性。

因此,黑盒模糊測試成為這類設備唯一可行的方案。但是黑盒模糊測試往往缺少反饋機制,不像傳統灰盒模糊測試工具依賴代碼插樁或硬件追蹤技術,在測試過程中收集反饋(如代碼覆蓋率、距離信息),并利用這些反饋指導模糊測試過程(包括種子保留、選擇及變異等)。論文提出的解決方案 LABRADOR 彌補這一缺陷,利用灰盒模糊測試技術獲取的知識來指導執行黑盒模糊測試。

2 實例動機

  • IoT 設備的 Web 接口

Web 接口作為 IoT 設備與外界通信的主要通道,通常由前端和后端組成,采用人機交互模式。后端二進制程序的處理邏輯中涉及大量用于接收、解析與輸出字符串的函數。直觀來看,這些字符串在后端代碼中被廣泛引用,導致大量基本塊(basic blocks)直接或間接關聯這些字符串。

在實證研究中發現,顯式塊(explicit block,即引用顯式字符串的代碼塊)占比超過 50%(如 uci2dat),顯式函數(即包含顯式塊的函數)占比接近 70%(如 tcpdump)。這表明,通過響應中的字符串推斷執行軌跡,在獲取基本代碼塊方面具有良好的實用性。

  • 執行軌跡推斷

圖 1 以 Netgear 設備為例來演示基于響應的路徑推斷(Response-based Trace Inference,RTI)思路。

圖1 后端程序處理與響應的關聯示例

圖1 后端程序處理與響應的關聯示例

當用戶通過前端發送一個用于配置 SSL VPN 的 HTTP 請求時,httpd 服務器解析參數并將其傳遞給 sslVpnConfig 應用。配置處理完成后,結果返回給服務器并輸出到響應中。通過對 httpd 和 sslVpnConfig 二進制程序進行靜態分析,我們可以提取顯式字符串,并通過相似性分析輕松檢測出響應中出現的字符串,如:

HTTP/1.0 200 OK
sslRemoteMgmtHandler Invoked
remoteMgmtEnable = 1

通過這些顯式字符串的引用關系,我們可以推斷出執行軌跡分別為 {BB1, BB5, BB6}。

  • 面向 IO 的距離度量

論文提出一種面向 IO(即請求與響應)的距離度量方法,如圖 2 所示,以 Motorola CX2L 路由器為例。

圖2 執行軌跡與漏洞觸發點的距離推斷示例

圖2 執行軌跡與漏洞觸發點的距離推斷示例

用戶從前端發送一個 NTP 請求(圖 2 左上角),其三個變異數據包基于有效載荷字段的不同構造而成。相應的響應(圖 2 右上角)中出現了不同的顯式字符串:

第一個響應包含“GET JSON NULL ERROR”,其對應的顯式塊(OP)距離 sink(SP)為 2 跳;第二個響應包含“SAVE CONFIG ERROR”,其 OP 距離 SP 為 1 跳;第三個響應中,SP 被成功執行,觸發了命令注入漏洞,距離為 0 跳。

通過這種方式,系統可以從 Web IO 中的顯式字符串推斷執行軌跡與 sink 之間的距離,并進一步用于指導變異過程。

3 方案設計

原論文中有許多工程上的計算和定義,為了能夠快速掌握所提方案的思路和精髓,本分享中忽略了具體細節。

圖 3 詳細展示了 LABRADOR 的整體工作流程。

圖3 工作流程圖

圖3 工作流程圖

  1. 響應驅動的執行軌跡推斷:通過輕量級靜態分析,識別響應中出現的顯式字符串,從而推測后端可能執行了哪些代碼塊;
  2. 面向 IO 的距離度量:基于控制流分析,計算請求/響應與漏洞觸發點(sink)之間的距離,用于指導定向模糊測試;
  3. 距離引導的變異策略:將請求轉為樹結構,評估各節點參與變異的概率,并結合類型分析與能量調度,決定如何變異。

3.1 響應驅動的執行軌跡推斷

通過觀察發現,后端二進制程序中大量被引用的字符串最終會被輸出到響應中,作者對 40 多個 Web 后端二進制程序進行了實證研究,結果顯示:

  • 顯式塊(explicit blocks)平均占比為 14.3%;
  • 顯式函數(explicit functions)平均占比為 35.8%;
  • 可達敏感調用的顯式函數占比高達 62.2%

這些數據表明,通過識別響應中出現的顯式字符串,有可能推斷出后端實際執行的顯式塊,從而為黑盒模糊測試提供代碼覆蓋率反饋。

在推斷執行軌跡中,需要對響應中出現的字符串與后端二進制程序中的字符串進行相似性分析。由于顯式字符串在前端與后端之間通常保持相似的格式,因此采用詞形相似性模型進行匹配。

  • 若兩字符串長度接近,使用編輯距離(Levenshtein distance)進行衡量;
  • 若兩字符串長度差異較大,但包含相同的顯式子串,使用最長公共子串(LCS)進行衡量。

論文獲取推斷軌跡的算法:1)首先通過靜態分析提取后端二進制程序中所有潛在的顯式字符串,2)利用預設的請求種子發送給設備獲取足夠多的響應,3)然后對響應中的每一行字符串與顯式字符串比較相似度,4)收集請求種子對應的推斷軌跡集合。

該過程類似于將顯式字符串及其相似字符串看作是插樁,記錄這些字符串所在的代碼塊并將其視作為軌跡。

3.2 面向 IO 的距離度量

距離度量是定向灰盒模糊測試的核心環節,論文首先執行靜態控制流分析,生成簡化的控制流圖(SCFG),將與請求、響應及 sink 無關的節點全部剔除。

圖4 簡化的控制流圖

圖4 簡化的控制流圖

給定由初始靜態分析得到的完整跨進程控制流圖(ICFG),為每個基本塊添加如下屬性標簽(圖 4 示意):

  • EP(Entry Point):與請求處理相關的顯式塊;
  • OP(Output Point):與響應輸出相關的顯式塊;
  • SP(Sink Point):包含危險函數(如 system、strcpy)的塊;
  • 普通塊:上述之外的其他節點。

隨后,通過執行可達性分析,剔除所有無法到達任一 sink 的節點,從而將原始 ICFG 規模壓縮至約 10%。系統維護了一個危險函數特征庫,并通過字符串相似度匹配識別更多潛在 sink。

對于任意種子請求,系統從兩個視角度量其與 sink 的距離:

  1. 請求視角(靜態):執行前,評估請求本身蘊含的“接近程度”;
  2. 響應視角(動態):執行后,根據 RTI 推斷的顯式塊,修正上述距離。

然后分別定義了顯式字符串的增益,距離越小則增益越大;還定義了非顯式字符串的增益,確保非顯式字符串仍有一定變異概率;通過上述兩者定義了最終的 IO 距離,包括了請求的距離和響應的距離,作為后續能量分配和節點選擇的直接依據,實現高效定向模糊測試。

該過程類似于找一種損失函數,好為后續操作設定迭代方向。

3.3 距離引導的變異策略

在選中請求種子之后,要決定應該變異多少新用例(即能量分配),在種子的哪個位置進行變異(即節點選擇),以及如何實施具體變異(即變異策略)。

針對能量分配,系統根據給定種子產生的請求距離和歷史響應距離共同進行計算,令能量與距離成反比,與歷史表現正相關,優先發現高潛力的種子,即距離越近的能量越高。

針對節點選擇,系統將請求解析成為樹,根節點為整個請求,子節點劃分為請求頭、參數、屬性三類,令葉子節點為最小可變異值,如圖 5 所示。

圖5 請求轉換為樹結構表示

圖5 請求轉換為樹結構表示

不同節點對"逼近 sink"的貢獻差異顯著,令參數領域的節點權重更高,且深度越深的和越接近 sink 的節點越優先變異。

針對變異策略,系統分別采用類型級變異,以及結構型變異。類型級變異根據節點的屬性生成對應類型的值,結構型變異則修改請求樹的結構。每次變異后,將修改后的樹重新序列化為 HTTP 請求,發送給設備進行測試,并收集響應用于下一輪反饋更新。

該過程就是典型的模糊測試操作,只不過論文所提方案引入了比較多的工程化設定,利用定義的距離來設計策略。

4 評估對比

論文在企業級 IoT 設備上對 LABRADOR 進行全面評估,選取 14 款企業級網絡設備(路由器、防火墻、VPN 網關),均來自主流廠商(Cisco、Netgear、TP-Link、Linksys、TrendNet、Ubiquiti、Motorola)。

分別與 SNIPUZZ、BOOFUZZ、FIRM-AFL、SaTC 進行對比實驗,不僅效率上有顯著提升,同時漏洞發現上也有明顯優勢。LABRADOR 共發現了 79 個未知漏洞,61 個 CVE。詳細的實驗結果最好是去看原始論文。

論文有說實現了原型系統,整體框架劃分為靜態分析和模糊測試兩個階段,不過代碼暫時未開源。


最后,附上文獻引用及論文鏈接:Liu H, Gan S, Zhang C, et al. Labrador: Response guided directed fuzzing for black-box iot devices[C]. 2024 IEEE Symposium on Security and Privacy (SP). IEEE, 2024: 1920-1938.
https://doi.org/10.1109/SP54263.2024.00127

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/915243.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/915243.shtml
英文地址,請注明出處:http://en.pswp.cn/news/915243.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

WPF為啟動界面(Splash Screen)添加背景音樂

1. 添加音頻文件到項目 將音頻文件(如.mp3/.wav)放入項目文件夾(如Resources)在解決方案資源管理器中右鍵文件 → 屬性: 生成操作:選擇Resource(嵌入資源)或Content(內容…

【Jmeter】報錯:An error occured:Unknown arg

問題 調試Jmeter時,報錯:‘An error occurred: Unknown arg: l’,腳本如下: $JMETER_PATH -n -t "$target_jmx" -l "$SCENARIO_REPORT_DIR/result_${threads}.jtl" -e -o "$SCENARIO_REPORT_DIR/htm…

vue3使用KeepAlive組件及一些注意事項

目錄 一、KeepAlive的作用 二、緩存組件配置 2.1、過濾緩存組件 2.2、最大緩存實例數 三、KeepAlive組件的生命周期 四、錯誤用法 4.1、緩存v-if包裹的動態組件 4.2、拼寫錯誤 一、KeepAlive組件的作用 首先,keep-alive是一個vue的內置組件,官網…

辛普森悖論

辛普森悖論第一步:概念拆解想象你在比較兩個班級的考試成績:?第一天?:實驗組(1個學生考了90分),對照組(99個學生平均考了80分)?第二天?:實驗組(50個學生平…

有效的括號數據結構oj題(力口20)

目錄 目錄 題目描述 題目分析解析 解決代碼 寫題感悟: 題目描述 還有實例 題目分析解析 對于這個題目,我們首先有效字符串需要滿足什么,第一個左右括號使用相同類型的括號,這好理解,無非就是小括號和小括號大括號…

Mock 單元測試

作者:小凱 沉淀、分享、成長,讓自己和他人都能有所收獲! 本文的宗旨在于通過簡單干凈實踐的方式教會讀者,如何使用 Mock (opens new window)進行工程的單元測試,以便于驗證系統中的獨立模塊功能的健壯性。 從整個工程所…

MySQL 深度性能優化配置實戰指南

?? 一、硬件與系統層優化:夯實性能基石 ??硬件選型策略?? ??CPU??:讀密集型場景選擇多核CPU(如32核);寫密集型場景選擇高主頻CPU(如3.5GHz+)。 ??內存??:建議≥64GB,??緩沖池命中率≥99%?? 是性能關鍵指標。 ??存儲??:??必用NVMe SSD??,I…

Visual Studio Code(VSCode)中設置中文界面

在VS Code中設置中文界面主要有兩種方法:通過擴展市場安裝中文語言包或通過命令面板直接切換語言。?方法一:通過擴展市場安裝中文語言包?打開VS Code,點擊左側活動欄的"擴展"圖標(或按CtrlShiftX)。在搜索…

叉車機器人如何實現托盤精準定位?這項核心技術的原理和應用是什么?

隨著智慧物流和智能制造的加速發展,智能化轉型成為提升效率、降低成本的關鍵路徑,叉車機器人(AGV/AMR叉車)在倉儲、制造、零售等行業中的應用日益廣泛。 其中,托盤定位技術是實現其高效、穩定作業的核心環節之一&…

NO.6數據結構樹|二叉樹|滿二叉樹|完全二叉樹|順序存儲|鏈式存儲|先序|中序|后序|層序遍歷

樹與二叉樹的基本知識 樹的術語結點: 樹中的每個元素都稱為結點, 例如上圖中的 A,B,C…根結點: 位于樹頂部的結點, 它沒有父結點,比如 A 結點。父結點: 若一個結點有子結點, 那么這個結點就稱為其子結點的父…

數據集下載網站

名稱簡介鏈接Kaggle世界上最大的數據科學競賽平臺之一,有大量結構化、圖像、文本等數據集可直接下載?支持一鍵下載、APIPapers with Code可按任務(如圖像分類、文本生成等)查找模型與數據集,標注 SOTA?與論文強關聯Hugging Face…

Tomcat 生產 40 條軍規:容量規劃、調優、故障演練與安全加固

(一)容量規劃 6 條 軍規 1:線程池公式 maxThreads ((并發峰值 平均 RT) / 1000) 冗余 20 %; 踩坑:壓測 2000 QPS、RT 200 ms,理論 maxThreads500,線上卻設 150 導致排隊。軍規 2:…

深入解析 Amazon Q:AWS 推出的企業級生成式 AI 助手

在人工智能助手競爭激烈的當下,AWS 重磅推出的 Amazon Q 憑借其強大的企業級整合能力,正成為開發者提升生產力的新利器。隨著生成式 AI 技術席卷全球,各大云廠商紛紛布局智能助手領域。在 2023 年 re:Invent 大會上,AWS 正式推出了…

物流自動化WMS和WCS技術文檔

導語大家好,我是社長,老K。專注分享智能制造和智能倉儲物流等內容。歡迎大家使用我們的倉儲物流技術AI智能體。新書《智能物流系統構成與技術實踐》新書《智能倉儲項目出海-英語手冊,必備!》完整版文件和更多學習資料,…

Web3.0 實戰項目、簡歷打造、精準投遞+面試準備

目錄 一、獲取真實企業級 Web3.0 項目的 5 種方式 1. 參與開源項目(推薦指數:?????) 2. 參與黑客松(Hackathon) 3. 遠程實習 & DAO 協作項目(兼職也可) 4. Web3 Startup 實戰項目合…

pymongo庫:簡易方式存取數據

文檔 基礎使用 前提:開發機器已安裝mongo配置環境,已啟動服務。 macOS啟動服務:brew services start mongodb-community8.0 macOS停止服務:brew services stop mongodb-community8.0安裝:python3 -m pip install pym…

Java 線程池與多線程并發編程實戰全解析:從異步任務調度到設計模式落地,200 + 核心技巧、避坑指南與業務場景結合

多線程編程在現代軟件開發中扮演著至關重要的角色,它能夠顯著提升應用程序的性能和響應能力。通過合理利用異步線程、多線程以及線程池等技術,我們可以更高效地處理復雜任務,優化系統資源的使用。同時,在實際應用中,我…

gitee 分支切換

ssh-keygen -t rsa -C "pengchengzhangcplaser.com.cn" ssh -T gitgitee.comgit remote add origin 倉庫地址git config --global user.email "youexample.com"git config --global user.name "Your Name"# 1. 更新遠程信息 git fetch origin# …

Vue3生命周期函數

在 Vue 3 中,生命周期鉤子函數是指組件從創建到銷毀的整個過程中,Vue 自動調用的一些特定函數。它們讓你能夠在組件的不同階段執行一些自定義操作。Vue 3 提供了組合式 API 和選項式 API 兩種方式來定義生命周期鉤子。1. onBeforeMount (組合式 API)作用…

基于SEP3203微處理器的嵌入式最小硬件系統設計

目錄 1 引言 2 嵌入式最小硬件系統 3 SEP3202簡述 4 最小系統硬件的選擇和單元電路的設計 4.1 電源電路 4.2 晶振電路 4.3 復位及喚醒電路 4.5 存儲器 4.5.1 FLASH存儲 4.5.2 SDRAM 4.6 串行接口電路設計 4.7 JTAG模塊 4.8 擴展功能(LED) …