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