軟件(jiàn)公司如(rú)何快(kuài)速↓≤₽有(yǒu)效地(dì)識别軟件(jiàn)漏洞_北(běi)'>←京軟件(jiàn)開(kāi)發公司
發表日(rì)期:2023-06-14 15:47:03 σ₹★> 文(wén)章(zhāng)編輯:北(běi)京軟件(jiàn§↕)開(kāi)發 浏覽次數(shù):
對(duì)于軟件(jiàn)開(kāi)發公司來(lái)說(shuō)幾乎每個(gè)新程序代碼都(dōu)₩Ωε±有(yǒu)錯(cuò)誤,在最壞的(de)情★況下(xià),這(zhè)些(xiē)錯(cuò)誤可δδ(kě)能(néng)會(huì)危及安全性。為(✔δ∏>wèi)了(le)快(kuài)速有(yǒu)效地(dì)檢測它們,德國(guπ©εó)波鴻魯爾大(dà)學 Horst Görtz π±IT 安全研究所的(de)研究人(rén)員(yu€✔←¶án)開(kāi)發了(le)一(yī)種名為(wèi) Fuzzw←₽are 的(de)軟件(jiàn)開(kāi)發檢'₽測系統。它專門(mén)分(fēn)析嵌入式系統,即可(kě)以在智能(γ&néng)燈泡、智能(néng)恒溫器(qì)和(hé)工(gōng)業(yσ ®è)控制(zhì)系統中找到(dào)的(de)微←ε&(wēi)型計(jì)算(suàn)機(jī),僅舉幾例。魯爾大(dà)學的♣÷™(de)科(kē)學雜(zá)志(zhì)《 魯賓》發表了(le)₽§®一(yī)篇關于他(tā)們工(gōng)§•λ作(zuò)的(de)文(wén)章(zhāng)。
波鴻博士 學生(shēng) Tobias Scharno →εwski 在 Thorsten Holz 教授的(de)☆→'λ指導下(xià)于 2022 年(nián¥∑) 8 月(yuè)在美(měi)國(guó)舉行(xíng)的(de)第 3↔↔1 屆 Usenix 安全研討(tǎo)會(huì)上(shàng)介紹了(l←e)研究結果。他(tā)與加州大(dà)學聖巴€Ωσ$巴拉分(fēn)校(xiào)和(hé)阿姆斯特丹♠≠自(zì)由大(dà)學的(de)同事(shì)合作(zuò)開(kāi)展 ≤₹§了(le)這(zhè)項研究。
故意讓軟件(jiàn)崩潰
該小(xiǎo)組使用(yòng)所謂的"✔¥ (de)模糊測試來(lái)檢測軟件(jiàn)開(kāi)發代碼中的®≠(de)錯(cuò)誤。Fuzzers 是(shì)一(yī≤Ω©')種算(suàn)法,它向被測試的(de)軟件(jiàn)提供随機(jī)∏"←輸入,并檢查它們是(shì)否會(huì)使應用(yòΩ∏ng)程序崩潰。這(zhè)種崩潰表明(míng)編¥±★程錯(cuò)誤。模糊器(qì)不(bù)斷改變輸入,以便逐≤ γ步探索盡可(kě)能(néng)多(duō)的(₹®de)程序組件(jiàn)。
某些(xiē)應用(yòng)領域已經建立了(le♥∏)模糊測試,例如(rú)測試 Windows 或 Lin₹♣™ux 等操作(zuò)系統。然而,它尚未被廣泛用(yònαβ₹g)于測試嵌入式系統,因為(wèi)它們帶來(lái)了><ε(le)許多(duō)挑戰:軟件(jiàn)(即所謂的(de)固件(jiàn•↔))嵌入到(dào)與其交互的(de)硬件(jiàn)§$$®中。系統通(tōng)常具有(yǒu)相(xiàng)對(duì)較少(s≤€≤εhǎo)的(de)內(nèi)存和(hé)較慢(màn₽₽☆)的(de)處理(lǐ)器(qì)。如(rú)果研究人(rén)員(yuán &₩)想直接在系統上(shàng)進行(xíng)模糊測試,這(zhè)就(§δ jiù)是(shì)一(yī)個(gè)問(w← èn)題。嘗試所有(yǒu)可(kě)能(néng)的(de)輸入并等∞∏待系統響應将花(huā)費(fèi)太長(cháng)時(shí¥")間(jiān)。
硬件(jiàn)虛拟仿真
這(zhè)就(jiù)是(shì)團隊不(bù)直接在工(gōn£ ←'g)業(yè)控制(zhì)單元或燈泡中分(←φ♥fēn)析固件(jiàn)的(de)原因。相(xiàng)反,他(↔♥§≈tā)們虛拟地(dì)重新創建硬件(jiàn)Ω↔≠——這(zhè)個(gè)過程稱為(wèi)仿真。仿β↔真器(qì)使固件(jiàn)相(xiàng)信它在真實設備中。為(wèλ™∏Ωi)此,它必須以與真實硬件(jiàn)完全相(xiàng)同的(de€±×±)方式與程序交互。
為(wèi)了(le)加速該過程,研究人(rén)員(yuán)通∞↕(tōng)過縮小(xiǎo)可(kě)能(néng)的(de)輸入範™§圍,在模糊測試過程中增加了(le)另一(yī)個(gè)步驟。首先,它們對≈λ•(duì)輸入必須位于其中的(de)框架進行(xíng)建←•' 模,以便對(duì)固件(jiàn)具有(yǒu)邏輯性。 φ≠例如(rú):如(rú)果硬件(jiàn)是(sh♠♦ì)帶有(yǒu)溫度傳感器(qì)的(de)冰箱,↕'→則冰箱硬件(jiàn)可(kě)以将測量到(dào)的(de)溫度報(bà®π§✘o)告給冰箱的(de)軟件(jiàn),即它的(de)固件(j☆ iàn)。實際上(shàng),任何給定的(de)溫£ε£度都(dōu)不(bù)可(kě)能(néng ☆∏)發生(shēng),它必須落在某個(gè)範圍內(nèβ ≤®i)。因此,固件(jiàn)僅針對(duì)特∑"定溫度範圍進行(xíng)編程。它根本無法處理(lǐ)其他(tā)值,因∞←≠此無需對(duì)它們進行(xíng)模糊測試。
有(yǒu)限的(de)輸入有(yǒu)助于高(gāo)效分(fēn)析
波鴻團隊與來(lái)自(zì)聖巴巴拉和(hé)阿姆₽$®≥斯特丹的(de)同事(shì)一(yī)起,γ•→•使用(yòng) Fuzzware 測試了(l§<×e) 77 個(gè)固件(jiàn)。與傳統的(de)模糊測試方法相(x←→εiàng)比,他(tā)們篩選出了(le)高(gāo)達£™≈ 95.5% 的(de)所有(yǒu)可(kě)能(néng)輸ε≈✘λ入。
這(zhè)使得(de) Fuzzware 能(néng)夠在相(xià•®ng)同時(shí)間(jiān)內(nèi)檢查比傳統方法多(duō"↔)三倍的(de)程序代碼。在此過程中,該小(xiǎo)≥₹組還(hái)發現(xiàn)了(le)其他(tā)模糊測試方法未檢測到(∏≤dào)的(de)其他(tā)漏洞。
波鴻博士 學生(shēng) Tobias Scharno →εwski 在 Thorsten Holz 教授的(de)☆→'λ指導下(xià)于 2022 年(nián¥∑) 8 月(yuè)在美(měi)國(guó)舉行(xíng)的(de)第 3↔↔1 屆 Usenix 安全研討(tǎo)會(huì)上(shàng)介紹了(l←e)研究結果。他(tā)與加州大(dà)學聖巴€Ωσ$巴拉分(fēn)校(xiào)和(hé)阿姆斯特丹♠≠自(zì)由大(dà)學的(de)同事(shì)合作(zuò)開(kāi)展 ≤₹§了(le)這(zhè)項研究。
故意讓軟件(jiàn)崩潰
該小(xiǎo)組使用(yòng)所謂的"✔¥ (de)模糊測試來(lái)檢測軟件(jiàn)開(kāi)發代碼中的®≠(de)錯(cuò)誤。Fuzzers 是(shì)一(yī≤Ω©')種算(suàn)法,它向被測試的(de)軟件(jiàn)提供随機(jī)∏"←輸入,并檢查它們是(shì)否會(huì)使應用(yòΩ∏ng)程序崩潰。這(zhè)種崩潰表明(míng)編¥±★程錯(cuò)誤。模糊器(qì)不(bù)斷改變輸入,以便逐≤ γ步探索盡可(kě)能(néng)多(duō)的(₹®de)程序組件(jiàn)。
某些(xiē)應用(yòng)領域已經建立了(le♥∏)模糊測試,例如(rú)測試 Windows 或 Lin₹♣™ux 等操作(zuò)系統。然而,它尚未被廣泛用(yònαβ₹g)于測試嵌入式系統,因為(wèi)它們帶來(lái)了><ε(le)許多(duō)挑戰:軟件(jiàn)(即所謂的(de)固件(jiàn•↔))嵌入到(dào)與其交互的(de)硬件(jiàn)§$$®中。系統通(tōng)常具有(yǒu)相(xiàng)對(duì)較少(s≤€≤εhǎo)的(de)內(nèi)存和(hé)較慢(màn₽₽☆)的(de)處理(lǐ)器(qì)。如(rú)果研究人(rén)員(yuán &₩)想直接在系統上(shàng)進行(xíng)模糊測試,這(zhè)就(§δ jiù)是(shì)一(yī)個(gè)問(w← èn)題。嘗試所有(yǒu)可(kě)能(néng)的(de)輸入并等∞∏待系統響應将花(huā)費(fèi)太長(cháng)時(shí¥")間(jiān)。
硬件(jiàn)虛拟仿真
這(zhè)就(jiù)是(shì)團隊不(bù)直接在工(gōn£ ←'g)業(yè)控制(zhì)單元或燈泡中分(←φ♥fēn)析固件(jiàn)的(de)原因。相(xiàng)反,他(↔♥§≈tā)們虛拟地(dì)重新創建硬件(jiàn)Ω↔≠——這(zhè)個(gè)過程稱為(wèi)仿真。仿β↔真器(qì)使固件(jiàn)相(xiàng)信它在真實設備中。為(wèλ™∏Ωi)此,它必須以與真實硬件(jiàn)完全相(xiàng)同的(de€±×±)方式與程序交互。
為(wèi)了(le)加速該過程,研究人(rén)員(yuán)通∞↕(tōng)過縮小(xiǎo)可(kě)能(néng)的(de)輸入範™§圍,在模糊測試過程中增加了(le)另一(yī)個(gè)步驟。首先,它們對≈λ•(duì)輸入必須位于其中的(de)框架進行(xíng)建←•' 模,以便對(duì)固件(jiàn)具有(yǒu)邏輯性。 φ≠例如(rú):如(rú)果硬件(jiàn)是(sh♠♦ì)帶有(yǒu)溫度傳感器(qì)的(de)冰箱,↕'→則冰箱硬件(jiàn)可(kě)以将測量到(dào)的(de)溫度報(bà®π§✘o)告給冰箱的(de)軟件(jiàn),即它的(de)固件(j☆ iàn)。實際上(shàng),任何給定的(de)溫£ε£度都(dōu)不(bù)可(kě)能(néng ☆∏)發生(shēng),它必須落在某個(gè)範圍內(nèβ ≤®i)。因此,固件(jiàn)僅針對(duì)特∑"定溫度範圍進行(xíng)編程。它根本無法處理(lǐ)其他(tā)值,因∞←≠此無需對(duì)它們進行(xíng)模糊測試。
有(yǒu)限的(de)輸入有(yǒu)助于高(gāo)效分(fēn)析
波鴻團隊與來(lái)自(zì)聖巴巴拉和(hé)阿姆₽$®≥斯特丹的(de)同事(shì)一(yī)起,γ•→•使用(yòng) Fuzzware 測試了(l§<×e) 77 個(gè)固件(jiàn)。與傳統的(de)模糊測試方法相(x←→εiàng)比,他(tā)們篩選出了(le)高(gāo)達£™≈ 95.5% 的(de)所有(yǒu)可(kě)能(néng)輸ε≈✘λ入。
這(zhè)使得(de) Fuzzware 能(néng)夠在相(xià•®ng)同時(shí)間(jiān)內(nèi)檢查比傳統方法多(duō"↔)三倍的(de)程序代碼。在此過程中,該小(xiǎo)≥₹組還(hái)發現(xiàn)了(le)其他(tā)模糊測試方法未檢測到(∏≤dào)的(de)其他(tā)漏洞。