【廣告】
代碼審計(jì)的方法
審核軟件時(shí),應(yīng)對(duì)每個(gè)關(guān)鍵組件進(jìn)行單獨(dú)審核,并與整個(gè)程序一起進(jìn)行審核。 首先搜索高風(fēng)險(xiǎn)漏洞并解決低風(fēng)險(xiǎn)漏洞是個(gè)好主意。 高風(fēng)險(xiǎn)和低風(fēng)險(xiǎn)之間的漏洞通常存在,具體取決于具體情況以及所使用的源代碼的使用方式。 應(yīng)用程序滲透測(cè)試試圖通過(guò)在可能的訪(fǎng)問(wèn)點(diǎn)上啟動(dòng)盡可能多的已知攻擊技術(shù)來(lái)嘗試降低軟件中的漏洞,以試圖關(guān)閉應(yīng)用程序。這是一種常見(jiàn)的審計(jì)方法,可用于查明是否存在任何特定漏洞,而不是源代碼中的漏洞。 一些人聲稱(chēng)周期結(jié)束的審計(jì)方法往往會(huì)壓倒開(kāi)發(fā)人員,終會(huì)給團(tuán)隊(duì)留下一長(zhǎng)串已知問(wèn)題,但實(shí)際上并沒(méi)有多少改進(jìn); 在這些情況下,建議采用在線(xiàn)審計(jì)方法作為替代方案。
請(qǐng)問(wèn)有哪些代碼審計(jì)的工具產(chǎn)品?
國(guó)外商業(yè)工具:klocwork, fortify,Coverity, parasoft, TestBad, C Test, Checkmarx CxEnterprise,PolySpace,PClint(有些不是產(chǎn)品名稱(chēng),不過(guò)在業(yè)內(nèi)都這么叫)。
國(guó)外開(kāi)源工具:findbugs, checkstyle,sonar,PMD...國(guó)內(nèi)商業(yè)工具:360代碼衛(wèi)士,這個(gè)大多數(shù)人還沒(méi)有聽(tīng)過(guò),不過(guò)它已經(jīng)是一款非常成熟的產(chǎn)品,實(shí)際的項(xiàng)目分析中完全不輸給國(guó)外的源代碼靜態(tài)分析工具。
軟件開(kāi)發(fā)所面臨的安全問(wèn)題
1、代碼與架構(gòu)復(fù)雜
幾十萬(wàn)、幾百萬(wàn)行代碼、一個(gè)業(yè)務(wù)分幾十個(gè)模塊幾十個(gè)代碼倉(cāng)庫(kù)家常便飯;開(kāi)發(fā)語(yǔ)言多種多樣,各種自研框架、流行框架應(yīng)接不暇、架構(gòu)還非常復(fù)雜。
以上兩個(gè)問(wèn)題對(duì)審計(jì)人員、SAST工具來(lái)說(shuō)無(wú)疑都是很大的挑戰(zhàn)。
2、工具準(zhǔn)召率
沒(méi)有工具是所謂銀彈,規(guī)則、插件準(zhǔn)召率很低,需要根據(jù)開(kāi)發(fā)語(yǔ)言、編碼風(fēng)格自定義;工具對(duì)邏輯漏洞的無(wú)力,與業(yè)務(wù)邏輯漏洞大量曝光的漏洞態(tài)勢(shì)之間的矛盾,工具、系統(tǒng)的運(yùn)營(yíng)也需要專(zhuān)門(mén)人力投入,從而不斷提高工具的準(zhǔn)召率。
3、心態(tài)
審計(jì)人員出于KPI的考慮,想著既然花了很長(zhǎng)時(shí)間做了代碼審計(jì),為了體現(xiàn)工作量就必須說(shuō)點(diǎn)什么,如果系統(tǒng)本來(lái)沒(méi)有問(wèn)題卻在那挑刺,會(huì)更加不信任你。對(duì)于甲方代碼審計(jì)人員,審計(jì)任務(wù)多、代碼龐大是常態(tài),如果不考慮后果的只提高速度,這種方式會(huì)遺漏掉細(xì)節(jié),導(dǎo)致不能的審查。