Fuzz前思考的七件事(轉(zhuǎn)載)

本文轉(zhuǎn)自https://www.linuxfoundation.org/blog/2016/02/7-things-to-consider-before-fuzzing-a-large-open-source-project/

1. 首先確定您的目標(biāo)

確定您是否只是在尋找安全性問題,還是在尋找所有類型的正確性問題。Fuzzing發(fā)現(xiàn)了許多在正常使用中可能永遠(yuǎn)不會(huì)遇到的低嚴(yán)重性問題。這些可能看起來與安全漏洞完全相同,唯一的區(qū)別是沒有跨越信任邊界。例如,如果您模糊測(cè)試了一個(gè)只期望輸入來自受信任工具的輸出的工具,您可能會(huì)發(fā)現(xiàn)許多在正常使用中永遠(yuǎn)不會(huì)遇到的崩潰。是否有其他方法將造成崩潰的測(cè)試樣例輸入到工具中?如果是這樣,您就發(fā)現(xiàn)了一個(gè)安全漏洞;如果不是這樣,那么您就發(fā)現(xiàn)了一個(gè)可能永遠(yuǎn)無法修復(fù)的低優(yōu)先級(jí)正確性問題。項(xiàng)目是否愿意處理所有發(fā)現(xiàn)的問題,或者只處理安全性問題?通過預(yù)先設(shè)置動(dòng)態(tài)分析的期望,您可以為自己節(jié)省大量的時(shí)間和挫折。

2. 明確您的信任邊界

明確并記錄應(yīng)該在哪里檢查錯(cuò)誤。對(duì)于像我這樣的安全專家來說,創(chuàng)建一個(gè)強(qiáng)安全性的心理模型是很容易的,在這個(gè)模型中,每個(gè)函數(shù)都防御地檢查每個(gè)輸入。遺憾的是,現(xiàn)實(shí)世界要比這復(fù)雜得多。這種高度警惕是巨大的浪費(fèi),因此在生產(chǎn)中永遠(yuǎn)無法生存。我們必須更加努力地為項(xiàng)目建立一個(gè)正確的安全邊界的心理模型。有必要了解在程序控制流中哪些地方應(yīng)該進(jìn)行檢查,哪些地方可以省略檢查。

3.根據(jù)接口劃分項(xiàng)目

不同的模糊測(cè)試器有不同的適用特長(zhǎng)。根據(jù)接口文件、網(wǎng)絡(luò)、API將項(xiàng)目劃分,使用不同類型的fuzzer將會(huì)更加高效。

4. 探索現(xiàn)有的工具

新的模糊化工具一直在開發(fā),而舊的工具正在獲得新的功能。重新審視一些最流行的工具,看看它們是否可以幫助您完成項(xiàng)目的一部分。戴維?伯德威爾(David Birdwell)最近將網(wǎng)絡(luò)模糊測(cè)試技術(shù)(network fuzzing)加入到美國(guó)模糊扶普(Fuzzy Lop)的衍生產(chǎn)品中,值得一看。Hanno Bock寫了關(guān)于如何在fuzzing項(xiàng)目中使用一些常見的模糊工具的[有用教程]。(https://fuzzing-project.org/tutorials.html)

5編寫自己的工具

遇到如何在一個(gè)大型混合語言項(xiàng)目上執(zhí)行動(dòng)態(tài)分析的問題,而這個(gè)項(xiàng)目本身又不適合現(xiàn)有的工具時(shí),我求助于David a . Wheeler,看看他會(huì)如何處理這個(gè)問題?;堇詹┦拷ㄗh,我可以考慮寫一個(gè)專門針對(duì)項(xiàng)目api的模糊測(cè)試工具。根據(jù)它們生成隨機(jī)輸入,并添加大量至少在模糊期間啟用的斷言。如果您知道您的API(或者能夠內(nèi)測(cè)它),那么創(chuàng)建一個(gè)特定的模糊器是相當(dāng)容易的,您可以獲取隨機(jī)數(shù)生成器,為fireworks設(shè)置一個(gè)獨(dú)立的容器或VM,然后就可以開始了。

6. fuzzing真的值得嗎?

對(duì)模糊化工具的一個(gè)常見批評(píng)是,在您運(yùn)行它們一段時(shí)間之后,它們就不再尋找bug了。這是一件好事!就像您不會(huì)因?yàn)榘l(fā)現(xiàn)很少的回歸而拋棄自動(dòng)化測(cè)試套件一樣,您不應(yīng)該使用這個(gè)基本原理來停止模糊測(cè)試您的項(xiàng)目。如果你的fuzzing工具不再尋找bug,恭喜你!是慶祝的時(shí)候了!現(xiàn)在,我們來尋找更困難的bug。

7. 聽起來有很多工作

要做你真的希望我做這些嗎?只要給我一個(gè)好工具的名字(AFL)。你不必做所有這些事,至少不必一次做完。如果您找到一個(gè)與您的項(xiàng)目一起工作的工具來覆蓋項(xiàng)目的一個(gè)子集,那么您可以開始運(yùn)行它。您將最終弄清楚項(xiàng)目開發(fā)人員(或您)是否愿意修復(fù)低優(yōu)先級(jí)問題,以及項(xiàng)目的信任邊界位于何處。您可能會(huì)發(fā)現(xiàn)一個(gè)崩潰,生成一個(gè)補(bǔ)丁并提交給項(xiàng)目,但卻發(fā)現(xiàn)它被拒絕了,因?yàn)閒uzzer生成的錯(cuò)誤輸入永遠(yuǎn)無法到達(dá)項(xiàng)目的那個(gè)部分,因此添加您的檢查太浪費(fèi)了。無論你采取哪種方法,都要幫那些追隨你的人一個(gè)忙,并把它寫下來。當(dāng)然,它會(huì)過時(shí),但它使閱讀變得有趣,并幫助你身后的人站在你的肩膀上。
最后一個(gè)提醒,如果你正在模糊別人的項(xiàng)目,你有任何懷疑,你發(fā)現(xiàn)了一個(gè)安全漏洞,記得使用項(xiàng)目的安全漏洞報(bào)告過程!

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

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

  • 1. 基本概念 (1)基本塊:基本塊是指一組連續(xù)的程序指令,并且只有一個(gè)入口指令和一個(gè)退出指令(不一定是跳轉(zhuǎn)指令)...
    AxisX閱讀 5,009評(píng)論 0 1
  • 一、縱觀Android生態(tài)圈1.了解Android的根源2.了解Android的利益相關(guān)者3.理解生態(tài)圈的復(fù)雜性碎...
    為夢(mèng)想戰(zhàn)斗閱讀 2,168評(píng)論 0 5
  • 2007年四月的海邊微微清風(fēng)襲來,伴著還不算熾熱的太陽,我提起人字拖獨(dú)自往前行。 是的,我愛四月的海,它沒有六月的...
    berrySONG閱讀 1,334評(píng)論 1 3
  • (一)節(jié)操掉了 “老公,你的節(jié)操掉了!” “你才節(jié)操掉了!” “你的煙盒掉出來了!” “???!...” “看都看到...
    冷香人的人間煙火閱讀 321評(píng)論 0 0
  • 開啟過年模式!親自主廚!祝愿大家新年快樂!身體健康!萬事如意! 媽媽是大廚。做得飯?zhí)貏e好吃。 沒啥別的,就是做了太...
    小沐子的日子閱讀 107評(píng)論 0 0

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