您好,歡迎來到易龍商務(wù)網(wǎng)!
發(fā)布時間:2021-09-30 08:01  
【廣告】






什么是代碼審計?
代碼審計顧名思義就是檢查源代碼中的安全缺陷,檢查程序源代碼是否存在安全隱患,或者有編碼不規(guī)范的地方,通過自動化工具或者人工審查的方式,對程序源代碼逐條進(jìn)行檢查和分析,發(fā)現(xiàn)這些源代碼缺陷引發(fā)的安全漏洞,并提供代碼修訂措施和建議。
代碼審計(Code audit)是一種以發(fā)現(xiàn)程序錯誤,安全漏洞和違反程序規(guī)范為目標(biāo)的源代碼分析。軟件代碼審計是對編程項目中源代碼的分析,旨在發(fā)現(xiàn)錯誤,安全漏洞或違反編程約定。 它是防御性編程范例的一個組成部分,它試圖在軟件發(fā)布之前減少錯誤。 C和C 源代碼是常見的審計代碼,因為許多語言(如Python)具有較少的潛在易受攻擊的功能(例如,不檢查邊界的函數(shù))。
什么是代碼審計?常見的自動化代碼審計工具有哪些?
自從人類發(fā)明了工具開始,人類就在不斷為探索如何更方便快捷的做任何事情,在科技發(fā)展的過程中,人類不斷地試錯,不斷地思考,于是才有了現(xiàn)代偉大的科技時代。在安全領(lǐng)域里,每個安全研究人員在研究的過程中,也同樣的不斷地探索著如何能夠自動化的解決各個領(lǐng)域的安全問題。其中自動化代碼審計就是安全自動化繞不過去的坎。
這一次我們就一起聊聊自動化代碼審計的發(fā)展史,也順便聊聊如何完成一個自動化靜態(tài)代碼審計的關(guān)鍵。自動化代碼審計在聊自動化代碼審計工具之前,首先我們必須要清楚兩個概念,漏報率和誤報率。
- 漏報率是指沒有發(fā)現(xiàn)的漏洞/Bug
- 誤報率是指發(fā)現(xiàn)了錯誤的漏洞/Bug
在評價下面的所有自動化代碼審計工具/思路/概念時,所有的評價標(biāo)準(zhǔn)都離不開這兩個詞,如何消除這兩點(diǎn)或是其中之一也正是自動化代碼審計發(fā)展的關(guān)鍵點(diǎn)。
我們可以簡單的把自動化代碼審計(這里我們討論的是白盒)分為兩類,一類是動態(tài)代碼審計工具,另一類是靜態(tài)代碼審計工具。

軟件開發(fā)所面臨的安全問題
1、代碼與架構(gòu)復(fù)雜
幾十萬、幾百萬行代碼、一個業(yè)務(wù)分幾十個模塊幾十個代碼倉庫家常便飯;開發(fā)語言多種多樣,各種自研框架、流行框架應(yīng)接不暇、架構(gòu)還非常復(fù)雜。
以上兩個問題對審計人員、SAST工具來說無疑都是很大的挑戰(zhàn)。
2、工具準(zhǔn)召率
沒有工具是所謂銀彈,規(guī)則、插件準(zhǔn)召率很低,需要根據(jù)開發(fā)語言、編碼風(fēng)格自定義;工具對邏輯漏洞的無力,與業(yè)務(wù)邏輯漏洞大量曝光的漏洞態(tài)勢之間的矛盾,工具、系統(tǒng)的運(yùn)營也需要專門人力投入,從而不斷提高工具的準(zhǔn)召率。
3、心態(tài)
審計人員出于KPI的考慮,想著既然花了很長時間做了代碼審計,為了體現(xiàn)工作量就必須說點(diǎn)什么,如果系統(tǒng)本來沒有問題卻在那挑刺,會更加不信任你。對于甲方代碼審計人員,審計任務(wù)多、代碼龐大是常態(tài),如果不考慮后果的只提高速度,這種方式會遺漏掉細(xì)節(jié),導(dǎo)致不能的審查。
自動化代碼審計工具的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
? 檢測容易出現(xiàn)的漏洞和數(shù)百個其他漏洞,包括SQL注入和跨站點(diǎn)腳本
? 在敏捷和持續(xù)集成環(huán)境中,快速和大量代碼測試的能力是至關(guān)重要的
? 能夠按需調(diào)度和運(yùn)行
? 能夠添加包括業(yè)務(wù)邏輯在內(nèi)的非安全性檢查
? 能夠根據(jù)組織的需要擴(kuò)展自動化測試
? 根據(jù)工具的選擇,可以根據(jù)組織的需要,特別是特定的合規(guī)性規(guī)范和值的應(yīng)用程序,定制自動化的源代碼評審工具
? 可以幫助提高開發(fā)人員的安全意識,并提供一種更好地培訓(xùn)使用該工具的開發(fā)人員的方法
缺點(diǎn):
? 不允許進(jìn)行微調(diào)和自定義的工具可能會產(chǎn)生誤報和誤報
? 覆蓋范圍和廣度實際上取決于你選擇的工具以及它所涵蓋的語言、框架和標(biāo)準(zhǔn)
? 為那些不熟悉靜態(tài)代碼檢查器的人提供了一個學(xué)習(xí)曲線
? 盡管有強(qiáng)大的通用開發(fā)語言自動審查開源工具,但它們并不總是符合預(yù)算計劃的