【廣告】
請問有哪些代碼審計(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)分析工具。
APP代碼審計(jì)檢測系統(tǒng)架構(gòu)
測試系統(tǒng)主要分為兩個(gè)模塊,一個(gè)是分析引擎模塊,一個(gè)是測試管理模塊。不同平臺上開發(fā)的軟件代碼可以通過中間的分布式調(diào)度方式來完成分發(fā)調(diào)度測試。如圖所示:
目前可以支持對 JAVA、JSP、 C、C 、PHP、ASP、 C#、Javascript、VBscript、Python、HTML、XML等十幾開發(fā)語言的安全漏洞的檢查,共能夠檢測出約 1000種漏洞。啟天安全源代碼審計(jì)系統(tǒng)將所有安全漏洞系統(tǒng)地整理并依據(jù)漏洞的表現(xiàn)形式、形成原因和危害程序進(jìn)行科學(xué)地分類,共分為“輸入驗(yàn)證、API 誤用、質(zhì)量性能、異常處理、 代碼規(guī)范、安全控制、環(huán)境配置、信息封裝”8個(gè)大類,然后根據(jù)開發(fā)語言的不同,在結(jié)合國際漏洞標(biāo)準(zhǔn)組織CWE的漏洞知識庫進(jìn)行細(xì)分和命名,目前約1000個(gè)子類。
代碼安全審計(jì)的對象和內(nèi)容
源代碼安全檢測主要對象包括并不限于對Windows和Linux系統(tǒng)環(huán)境下的語言進(jìn)行審核,例如C、C 、OC、C#、Java、PHP、JSP、ASPX、Javascript、Python、Cobol、Go等進(jìn)行安全審計(jì)測試。
源代碼安全檢測的主要內(nèi)容包括但不限于:
1、WEB應(yīng)用框架安全性;
2、WEB應(yīng)用程序的權(quán)限架構(gòu);
3、WEB應(yīng)用通信安全;
4、數(shù)據(jù)庫的配置規(guī)范;
5、OWASP WEB 前10漏洞;
5、SQL語句的編寫規(guī)范
手工代碼審計(jì)的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
? 能夠深入研究代碼路徑,檢查設(shè)計(jì)和體系結(jié)構(gòu)中的邏輯錯(cuò)誤和缺陷,大多數(shù)自動(dòng)化工具都無法找到這些錯(cuò)誤和缺陷
? 與一些自動(dòng)化工具相比,手動(dòng)檢測授權(quán)、身份驗(yàn)證和數(shù)據(jù)驗(yàn)證等安全問題的效果更好
? 對于值的應(yīng)用程序,總是有額外的利用空間(需要經(jīng)過培訓(xùn)的)
? 查看其他人的代碼是共享安全代碼和AppSec知識的好方法
缺點(diǎn)
? 要求精通應(yīng)用程序中使用的語言和框架,并需要對安全性有深入的理解
? 不同的評審人員將生成不同的報(bào)告,從而導(dǎo)致評審人員之間的結(jié)果不一致——盡管同行評審可以是一個(gè)修復(fù)方法
? 測試和編寫報(bào)告是及時(shí)的,并且經(jīng)常需要開發(fā)人員參加有時(shí)很長時(shí)間的訪談會議,以便為審查人員提供上下文,這消耗了開發(fā)人員的時(shí)間和資源
? 對代碼行數(shù)超過10-15k的應(yīng)用程序的手動(dòng)審查于針對高風(fēng)險(xiǎn)功能