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