由于固件仿真以及重托管的技術挑戰,部分企業級 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)思路。
當用戶通過前端發送一個用于配置 SSL VPN 的 HTTP 請求時,httpd 服務器解析參數并將其傳遞給 sslVpnConfig 應用。配置處理完成后,結果返回給服務器并輸出到響應中。通過對 httpd 和 sslVpnConfig 二進制程序進行靜態分析,我們可以提取顯式字符串,并通過相似性分析輕松檢測出響應中出現的字符串,如:
HTTP/1.0 200 OK
sslRemoteMgmtHandler Invoked
remoteMgmtEnable = 1
通過這些顯式字符串的引用關系,我們可以推斷出執行軌跡分別為 {BB1, BB5, BB6}。
- 面向 IO 的距離度量
論文提出一種面向 IO(即請求與響應)的距離度量方法,如圖 2 所示,以 Motorola CX2L 路由器為例。
用戶從前端發送一個 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 的整體工作流程。
- 響應驅動的執行軌跡推斷:通過輕量級靜態分析,識別響應中出現的顯式字符串,從而推測后端可能執行了哪些代碼塊;
- 面向 IO 的距離度量:基于控制流分析,計算請求/響應與漏洞觸發點(sink)之間的距離,用于指導定向模糊測試;
- 距離引導的變異策略:將請求轉為樹結構,評估各節點參與變異的概率,并結合類型分析與能量調度,決定如何變異。
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 無關的節點全部剔除。
給定由初始靜態分析得到的完整跨進程控制流圖(ICFG),為每個基本塊添加如下屬性標簽(圖 4 示意):
- EP(Entry Point):與請求處理相關的顯式塊;
- OP(Output Point):與響應輸出相關的顯式塊;
- SP(Sink Point):包含危險函數(如 system、strcpy)的塊;
- 普通塊:上述之外的其他節點。
隨后,通過執行可達性分析,剔除所有無法到達任一 sink 的節點,從而將原始 ICFG 規模壓縮至約 10%。系統維護了一個危險函數特征庫,并通過字符串相似度匹配識別更多潛在 sink。
對于任意種子請求,系統從兩個視角度量其與 sink 的距離:
- 請求視角(靜態):執行前,評估請求本身蘊含的“接近程度”;
- 響應視角(動態):執行后,根據 RTI 推斷的顯式塊,修正上述距離。
然后分別定義了顯式字符串的增益,距離越小則增益越大;還定義了非顯式字符串的增益,確保非顯式字符串仍有一定變異概率;通過上述兩者定義了最終的 IO 距離,包括了請求的距離和響應的距離,作為后續能量分配和節點選擇的直接依據,實現高效定向模糊測試。
該過程類似于找一種損失函數,好為后續操作設定迭代方向。
3.3 距離引導的變異策略
在選中請求種子之后,要決定應該變異多少新用例(即能量分配),在種子的哪個位置進行變異(即節點選擇),以及如何實施具體變異(即變異策略)。
針對能量分配,系統根據給定種子產生的請求距離和歷史響應距離共同進行計算,令能量與距離成反比,與歷史表現正相關,優先發現高潛力的種子,即距離越近的能量越高。
針對節點選擇,系統將請求解析成為樹,根節點為整個請求,子節點劃分為請求頭、參數、屬性三類,令葉子節點為最小可變異值,如圖 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