? ? ? ?? 前幾天偶然接觸到了一個代碼審計產品,公司創(chuàng)建者是前阿里巴巴安全總監(jiān)衡创。結局的感想就是:代碼審計工具這個行業(yè),果然不是那么輕易立足的婉商。
????????縱然網(wǎng)上五花八門的代碼審計工具排名,fortify的主流地位也是沒有人質疑的渣叛。然而在實際使用過程中丈秩,面對C/CPP時,商業(yè)級的fortify處理結果卻并不是很理性淳衙。
????????廢話不多說蘑秽,進入今天的正題,今天為大家介紹兩款C/CPP代碼審計工具的安裝和使用箫攀,安裝方式和平臺固然很多肠牲,<我不是懶嗎/逃>,在這里為大家介紹最簡單實用的安裝方式和平臺選擇靴跛,希望可以為C/CPP編程狗</缀雳??梢睛?>大佬們提供安全開發(fā)方面的幫助肥印。
<splint>
????splint是一個GNU免費授權的 Lint程序,是一個動態(tài)檢查C語言程序安全弱點和編寫錯誤的程序扬绪。Splint會進行多種常規(guī)檢查,包括未使用的變量,類型不一致,使用未定義變量,無法執(zhí)行的代碼,忽略返回值,執(zhí)行路徑未返回,無限循環(huán)等錯誤竖独。
????? ? 鏈接:https://pan.baidu.com/s/1kiufqPElB1zlEv05ZdwiGA 密碼:xjyb
????????安裝:后期可根據(jù)需求提供其它平臺安裝方式,在此只介紹 windows平臺下的安裝并附上永久下載鏈接挤牛。
????????1.首先解壓莹痢。如果解壓到C:/splint-3.1.1則不用調整環(huán)境變量∧垢埃可執(zhí)行文件在bin下竞膳。
????????如果放到其它路徑下,需要修改環(huán)境變量诫硕。在用戶變量中加上
????????LARCH_PATH - <你安裝splint的路徑>/lib
????????LCLIMPORTDIR - <你安裝splint的路徑>/imports
????????include - 系統(tǒng)include文件所在的目錄坦辟。
????? ?(其實include這個參數(shù)是從谷歌一個論壇下找的,說的很模糊章办,實驗的結果就是include參數(shù)指向了VC++6.0下的include锉走,,不知道這樣做是靈性還是蠢藕届,歡迎指正 ?/逃)
????????2.在用戶變量Path中加上splint.exe所在的路徑挪蹭,方便以后調用。
????????3.使以上的修改生效:注銷當前用戶然后再次登錄休偶。
????????附上成果和-help信息梁厉,客戶體驗說下,該工具更傾向于檢驗語法錯誤踏兜,其實這個功能編譯器也在做词顾,但是角度不同八秃,splint的角度是安全開發(fā)角度。
????????另外值得吐槽的時肉盹,如果你include了自定義頭昔驱,splint會直接報錯,當然這也是的的確確可以理解的垮媒。
<flawfinder>
????????flawfinder讓我先吐槽兩句平復下內心舍悯,其實網(wǎng)上有各種安裝包,當然官方也有睡雇,好端端的下載萌衬,解壓,安裝它抱,秕豫,,然后你就會發(fā)現(xiàn)各種官方?jīng)]提到的依賴問題</观蓄?混移??像我這么蠢的還有仨侮穿,官方?jīng)]有考慮到嗎歌径??亲茅?>
????????flawfinder的優(yōu)勢是詞法掃描和分析回铛,內嵌了一些漏洞數(shù)據(jù)庫,如緩沖區(qū)溢出克锣、格式化串漏洞等茵肃,掃描快,按照代碼中漏洞的風險等級對漏洞進行劃分袭祟,可以快速找到存在的問題验残,誤報較高。
????????在周轉了各個平臺之后巾乳,windows/parrot/kali/centos您没。。胆绊。氨鹏。。辑舷。最終,居然Ubuntu的官方源里有安裝包槽片。
????????喏何缓,就這一句話~
????????sudo apt-get install flawfinder
????????然而吐槽這么多肢础,并沒有讓在讀的你少走彎路的意思,只是提供了最偷懶的途徑碌廓。我也喜歡走彎路传轰,走別人沒走過,沒走通的路谷婆,或許這個過程才是我們真正享受的呢慨蛙。
????????咳咳,正題纪挎!
????????截不全就截不全吧期贫,我們可從-help中看到它的大部分功能了。
????????這里說下客戶體驗:算的上偽商業(yè)級的代碼審計工具了异袄,換句話說通砍,誤報幾率還是挺大的,但是結果進行了很好的分類統(tǒng)計烤蜕,并進行安全風險等級評估封孙,命令行界面做到這種程度也是良心了。
????????喏讽营,工具介紹就到這里啦虎忌。如有不足,歡迎指正橱鹏。