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