跟著白澤讀paper丨Challenges in Fuzzing Embedded Devices:What You Corrupt Is Not What You Crash

\color{red}{如需轉(zhuǎn)載請注明出處,侵權(quán)必究。}

Challenges in Fuzzing Embedded Devices:What You Corrupt Is Not What You Crash

這篇文章發(fā)表于NDSS 2018,作者Marius Muench等人來自于歐洲電信學(xué)院(EURECOM)。這個團隊對于與硬件相關(guān)的程序分析頗有研究,在CCS,NDSS等頂級安全會議上發(fā)表過多篇相關(guān)論文。

一、主要內(nèi)容:

在程序漏洞分析中,fuzz通常是一種有效的挖掘途徑,因此,在嵌入式設(shè)備的漏洞研究中,如果能使用fuzz的方式,應(yīng)該能帶來較好的效果。但是,與fuzz普通軟件程序不同的是,嵌入式設(shè)備固件通常缺少完善的內(nèi)存檢測機制,即使內(nèi)存發(fā)生corruption,也不會立即被檢測到,通常會產(chǎn)生滯后的crash或者其他的負(fù)面影響,這就會給fuzz帶來較大的困難。因此本文具體分析了嵌入式設(shè)備fuzz中的難題,并提出了一些啟發(fā)式的思路,希望能給后來相關(guān)的研究做一些鋪墊。

本文主要做了兩部分工作:1.嵌入式設(shè)備fuzz現(xiàn)存問題的分析和歸納;2.提出了解決這些問題的思路和方案。

二、問題歸納:

作者針對生活中的嵌入式設(shè)備根據(jù)其OS的完善程度分為了三種設(shè)備,然后針對三種設(shè)備研究了觸發(fā)memory corruption時的反應(yīng)。為了準(zhǔn)確的確定memorycorruption的時機,作者修改了設(shè)備固件,人為地加入了一些漏洞,在fuzz中可以使用特定的輸入觸發(fā)memory corruption,以便于結(jié)果的觀測和統(tǒng)計。實驗結(jié)果如下:

實驗結(jié)果

實驗結(jié)果印證了他們的猜測,缺少完善的內(nèi)存檢測機制會使設(shè)備產(chǎn)生難以直接觀測的負(fù)面影響。

另外,嵌入式設(shè)備fuzz對于硬件的依賴較大,廠商開源代碼很少,工具鏈缺失等情況都給Fuzz的過程帶來較多的困難。模擬化門檻高使得fuzz過程難以并行,效率較低。

三、設(shè)計與實現(xiàn):

為了更好的檢測內(nèi)存狀態(tài),作者們提出了一些檢測的方法。針對段,堆和棧開發(fā)相應(yīng)的檢測工具或者插件,判斷內(nèi)存讀寫的合法性;針對格式化字符串,判斷字符串的只讀性等思路,來更好的檢測corruption。作者們也設(shè)計了實驗驗證這些思路的可行性,結(jié)果顯示,使用綜合檢測的方法可以檢測出所有的corruption。

同時,對嵌入式設(shè)備依賴較多硬件的情況,作者們也提出了全局虛擬化和局部虛擬化的解決思路,在一定程度上能解決效率的問題。

四、總結(jié):

本文針對現(xiàn)存的嵌入式fuzz困難做了歸納分析,也提出了相應(yīng)的解決思路,并通過一些簡單的實驗驗證了思路的可行性。但整體上都是一些針對一些用于測試的案例進行驗證,并不能直接應(yīng)用到真實的場景中,另外,提出的幾點解決思路在實現(xiàn)上都存在較多的困難,距離可用還有很長的一段路要走。

?
文丨 BlackMax, DJR, Robin


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容