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






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

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