對於
軟件開發公司來說幾乎每個新程序代碼都有錯誤,在最壞的情況下,這些錯誤可能會危及安全性。爲瞭快速有效地檢測它們,德國波鴻魯爾大學 Horst Görtz IT 安全研究所的研究人員開發瞭一種名爲 Fuzzware 的軟件開發檢測系統。它專門分析嵌入式系統,即可以在智能燈泡、智能恒溫器和工業控制系統中找到的微型計算機,僅舉幾例。魯爾大學的科學雜志《 魯賓》發表瞭一篇關於他們工作的文章。
波鴻博士 學生 Tobias Scharnowski 在 Thorsten Holz 教授的指導下於 2022 年 8 月在美國舉行的第 31 屆 Usenix 安全研讨會上介紹瞭研究結果。他與加州大學聖巴巴拉分校和阿姆斯特丹自由大學的同事合作開展瞭這項研究。
故意讓軟件崩潰
該小組使用所謂的模糊測試來檢測軟件開發代碼中的錯誤。Fuzzers 是一種算法,它向被測試的軟件提供随機輸入,並檢查它們是否會使應用程序崩潰。這種崩潰表明編程錯誤。模糊器不斷改變輸入,以便逐步探索盡可能多的程序組件。
某些應用領域已經建立瞭模糊測試,例如測試 Windows 或 Linux 等操作系統。然而,它尚未被廣泛用於測試嵌入式系統,因爲它們帶來瞭許多挑戰:軟件(即所謂的固件)嵌入到與其交互的硬件中。系統通常具有相對較少的内存和較慢的處理器。如果研究人員想直接在系統上進行模糊測試,這就是一個問題。嘗試所有可能的輸入並等待系統響應将花費太長時間。
硬件虛拟仿真
這就是團隊不直接在工業控制單元或燈泡中分析固件的原因。相反,他們虛拟地重新創建硬件——這個過程稱爲仿真。仿真器使固件相信它在真實設備中。爲此,它必須以與真實硬件完全相同的方式與程序交互。
爲瞭加速該過程,研究人員通過縮小可能的輸入範圍,在模糊測試過程中增加瞭另一個步驟。首先,它們對輸入必須位於其中的框架進行建模,以便對固件具有邏輯性。例如:如果硬件是帶有溫度傳感器的冰箱,則冰箱硬件可以将測量到的溫度報告給冰箱的軟件,即它的固件。實際上,任何給定的溫度都不可能發生,它必須落在某個範圍内。因此,固件僅針對特定溫度範圍進行編程。它根本無法處理其他值,因此無需對它們進行模糊測試。
有限的輸入有助於高效分析
波鴻團隊與來自聖巴巴拉和阿姆斯特丹的同事一起,使用 Fuzzware 測試瞭 77 個固件。與傳統的模糊測試方法相比,他們篩選出瞭高達 95.5% 的所有可能輸入。
這使得 Fuzzware 能夠在相同時間内檢查比傳統方法多三倍的程序代碼。在此過程中,該小組還發現瞭其他模糊測試方法未檢測到的其他漏洞。