用什么工具系統(tǒng)查看源代碼比較好?
靜態(tài)源代碼安全檢測工具比較
1. 概述
隨著網(wǎng)絡(luò)的飛速發(fā)展,各種網(wǎng)絡(luò)應(yīng)用不斷成熟,各種開發(fā)技術(shù)層出不窮,上網(wǎng)已經(jīng)成為人們?nèi)粘I钪械囊粋€重要組成部分。在享受互聯(lián)網(wǎng)帶來的各種方便之處的同時,安全問題也變得越來越重要。黑客、病毒、木馬等不斷攻擊著各種網(wǎng)站,如何保證網(wǎng)站的安全成為一個非常熱門的話題。
根據(jù)IT研究與顧問咨詢公司Gartner統(tǒng)計(jì)數(shù)據(jù)顯示,75%的黑客攻擊發(fā)生在應(yīng)用層。而由NIST的統(tǒng)計(jì)顯示92%的漏洞屬于應(yīng)用層而非網(wǎng)絡(luò)層。因此,應(yīng)用軟件的自身的安全問題是我們信息安全領(lǐng)域最為關(guān)心的問題,也是我們面臨的一個新的領(lǐng)域,需要我們所有的在應(yīng)用軟件開發(fā)和管理的各個層面的成員共同的努力來完成。越來越多的安全產(chǎn)品廠商也已經(jīng)在考慮關(guān)注軟件開發(fā)的整個流程,將安全檢測與監(jiān)測融入需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼、測試等各個階段以全面的保證應(yīng)用安全。
對于應(yīng)用安全性的檢測目前大多數(shù)是通過測試的方式來實(shí)現(xiàn)。測試大體上分為黑盒測試和白盒測試兩種。黑盒測試一般使用的是滲透的方法,這種方法仍然帶有明顯的黑盒測試本身的不足,需要大量的測試用例來進(jìn)行覆蓋,且測試完成后仍無法保證軟件是否仍然存在風(fēng)險。現(xiàn)在白盒測試中源代碼掃描越來越成為一種流行的技術(shù),使用源代碼掃描產(chǎn)品對軟件進(jìn)行代碼掃描,一方面可以找出潛在的風(fēng)險,從內(nèi)對軟件進(jìn)行檢測,提高代碼的安全性,另一方面也可以進(jìn)一步提高代碼的質(zhì)量。黑盒的滲透測試和白盒的源代碼掃描內(nèi)外結(jié)合,可以使得軟件的安全性得到很大程度的提高。
源代碼分析技術(shù)由來已久,Colorado 大學(xué)的 Lloyd D. Fosdick 和 Leon J. Osterweil 1976 年的 9 月曾在 ACM Computing Surveys 上發(fā)表了著名的 Data Flow Analysis in Software Reliability,其中就提到了數(shù)據(jù)流分析、狀態(tài)機(jī)系統(tǒng)、邊界檢測、數(shù)據(jù)類型驗(yàn)證、控制流分析等技術(shù)。隨著計(jì)算機(jī)語言的不斷演進(jìn),源代碼分析的技術(shù) 也在日趨完善,在不同的細(xì)分領(lǐng)域,出現(xiàn)了很多不錯的源代碼分析產(chǎn)品,如 Klocwork Insight、Rational Software Analyzer 和 Coverity、Parasoft 等公司的產(chǎn)品。而在靜態(tài)源代碼安全分析方面,F(xiàn)ortify 公司和 Ounce Labs 公司的靜態(tài)代碼分析器都是非常不錯的產(chǎn)品。對于源代碼安全檢測領(lǐng)域目前的供應(yīng)商有很多,這里我們選擇其中的三款具有代表性的進(jìn)行對比,分別是 Fortify公司的Fortify SCA,Security Innovation公司的Checkmarx Suite和Armorize公司的CodeSecure。
2. 工具介紹
2.1. Fortify SCA(Source Code Analysis)
Fortify Software公司是一家總部位于美國硅谷,致力于提供應(yīng)用軟件安全開發(fā)工具和管理方案的廠商。Fortify為應(yīng)用軟件開發(fā)組織、安全審計(jì)人員和應(yīng)用 安全管理人員提供工具并確立最佳的應(yīng)用軟件安全實(shí)踐和策略,幫助他們在軟件開發(fā)生命周期中花最少的時間和成本去識別和修復(fù)軟件源代碼中的安全隱患。 Fortify SCA是Fortify360產(chǎn)品套裝中的一部分,它使用fortify公司特有的X-Tier Dataflow? analysis技術(shù)去檢測軟件安全問題。
優(yōu)點(diǎn):目前全球最大靜態(tài)源代碼檢測廠商、支持語言最多
缺點(diǎn):價格昂貴、使用不方便
2.2. Checkmarx CxSuite
Checkmarx 是以色列的一家高科技軟件公司。它的產(chǎn)品CheckmarxCxSuite專門設(shè)計(jì)為識別、跟蹤和修復(fù)軟件源代碼上的技術(shù)和邏輯方面的安全風(fēng)險。首創(chuàng)了以查詢語言定位代碼安全問題,其采用獨(dú)特的詞匯分析技術(shù)和CxQL專利查詢技術(shù)來掃描和分析源代碼中的安全漏洞和弱點(diǎn)。
優(yōu)點(diǎn):利用CxQL 查詢語言自定義規(guī)則
缺點(diǎn):輸出報告不夠美觀、語言支持種類不全面
2.3. Armorize CodeSecure
阿碼科技成立于2006年,總部設(shè)立于美國加州圣克拉拉市,研發(fā)中心位于臺灣的南港軟件工業(yè)園區(qū)。阿碼科技提供全方位網(wǎng)絡(luò)安全解決方案,捍衛(wèi)企業(yè)免于受到黑客利用 Web 應(yīng)用程序的漏洞所發(fā)動的攻擊。阿碼科技 CodeSecure可有效地協(xié)助企業(yè)與開發(fā)人員在軟件開發(fā)過程及項(xiàng)目上線后找出 Web 應(yīng)用程序風(fēng)險,并清楚交代風(fēng)險的來龍去脈 (如何進(jìn)入程序,如何造成問題) 。CodeSecure內(nèi)建語法剖析功能無需依賴編譯環(huán)境,任何人員均可利用 Web操作與集成開發(fā)環(huán)境雙接口,找出存在信息安全問題的源代碼,并提供修補(bǔ)建議進(jìn)行調(diào)整。CodeSecure依托于自行開發(fā)的主機(jī)進(jìn)行遠(yuǎn)程源代碼檢 測,在保證速度穩(wěn)定的同時方便用戶進(jìn)行Web遠(yuǎn)程操作。
優(yōu)點(diǎn):Web結(jié)合硬件,速度快、獨(dú)具特色的深度分析
缺點(diǎn):支持語言種類較少、價格不菲
3. 對比
Fortify SCA簡寫為SCA,Checkmarx CxSuite簡寫為CxSuite,Armonize CodeSecure簡寫為CodeSecure。
SCA CxSuite CodeSecure
廠商 Fortify Software Checkmarx 阿碼科技
支持語言 Java,JSP,ASP.NET,C#,
VB.NET,C,C++,COBOL,
ColdFusion,Transact-SQL,
PL/SQL,JavaScript/Ajax,
Classic,ASP,VBScript,VB6,PHP JAVA、ASP.NET(C#、VB.NET)、JavaScript、Jscript、C/C++、APEX ASP.NET(C#、VB.NET)、ASP、JAVA、PHP
風(fēng)險種類 400種 300種 參考CWE
風(fēng)險類型參考來源 CWE、OWASP CWE、OWASP CWE、OWASP
漏報率 最低 低 低
誤報率 稍高 低 低
是否支持SaaS 否 否 是
軟硬件類型 純軟件 純軟件 Web結(jié)合硬件設(shè)備
運(yùn)行平臺 無限制 WindowsNET Framework 2.0 無限制
運(yùn)行速度 取決于電腦配置速度不定 取決于電腦配置速度不定 由主機(jī)配置決定速度恒定
報告格式 PDF PDF、XML、CSV、HTML Web、PDF
報告內(nèi)容 完整按照風(fēng)險級別不同分為多個文件 核心內(nèi)容完整掃描信息等缺失 非常完整但修改建議放于最后
報價 100萬/軟件 70萬/軟件 100萬/軟硬件
性價比 中 高 低
從軟件支持的源代碼語言上來說,F(xiàn)ortify SCA(下文簡稱SCA)支持多達(dá)17種語言,Checkmarx CxSuite(下文簡稱CxSuite)其次,而Armonize CodeSecure(下文簡稱CodeSecure)在三款軟件中支持的最少,僅僅支持幾種最常見語言,不過這幾種基本涵蓋了絕大多數(shù)應(yīng)用中使用的編程語言,基本上可以支持現(xiàn)在大多數(shù)應(yīng)用的源代碼掃描。
從風(fēng)險的分類來說,各個廠商都有其自己獨(dú)特的分類方式和不同的種類數(shù)量,不過從實(shí)際應(yīng)用中可以看出,總體上仍為OWASP公布的幾類風(fēng)險,如SQL注入、跨站腳本等,已經(jīng)可以滿足實(shí)際中開發(fā)人員和測試人員的需求,對于各個廠商不同的部分,一般來說主要的區(qū)別在于理解不同,看問題的角度不同,并無誰錯誰對之原則性問題。
從運(yùn)行平臺 的角度,CodeSecure這個產(chǎn)品目前看來已經(jīng)將SaaS的理念很好的融合進(jìn)來,整個軟件的操作界面為Web方式,用戶可以通過網(wǎng)頁進(jìn)行操作,B/S 的方式可以將操作系統(tǒng)的影響降到最低,只要有一臺可以上網(wǎng)的電腦和瀏覽器,無論什么操作系統(tǒng)都可以使用CodeSecure遠(yuǎn)程進(jìn)行源代碼掃描,CodeSecure依托的是一臺Armonize自行研制的主機(jī),使用硬件設(shè)備的好處在于可以適用于多種場合,不會因?yàn)闇y試人員或是開發(fā)人員的電腦配置影響掃描速度,掃描的速度完全取決于主機(jī)的性能。而SCA和CxSuite主要還是單機(jī)軟件,但目前也在不斷地向SaaS的方向進(jìn)行過渡,并且提供了相當(dāng)全面的貫徹整個軟件開發(fā)流程(SDLC)的解決方案與服務(wù)給用戶。其中CxSuite這個產(chǎn)品標(biāo)明了使用該軟件的硬件配置,為Windows操作系統(tǒng) 和.NET框架,這個產(chǎn)品目前應(yīng)該為利用.NET框架進(jìn)行開發(fā),所以運(yùn)行環(huán)境有一定的局限性。同時,SCA和CxSuite因?yàn)槭菃螜C(jī)軟件,一方面在使用 前需要安裝,另一方面其運(yùn)行速度取決于運(yùn)行軟件的電腦性能,對于使用該軟件的電腦配置有一定的要求。
三種產(chǎn)品都使用了各自的技術(shù)對于威脅進(jìn)行檢測,SCA使用的是已獲得專利的X-Tier?數(shù)據(jù)流分析器,這三種產(chǎn)品中只有CxSuite聲稱可以達(dá)到零誤報率,因?yàn)?其對于風(fēng)險的理解是風(fēng)險必須在外形上呈現(xiàn)出來才被考慮為實(shí)際的風(fēng)險,這種理解方式可以說是別出心裁,從代碼安全的角度來說,檢測的目的是為了發(fā)現(xiàn)問題并及時改正,同時要針對于最關(guān)鍵的問題進(jìn)行改正,這也是這三款軟件都包含TOP X的統(tǒng)計(jì)的目的,從這一點(diǎn)上講,CxSuite的風(fēng)險報告是非常謹(jǐn)慎的。SCA在以前的使用中發(fā)現(xiàn)有一定的誤報率,不過換個角度想,誤報相比漏報是可以容 忍的,規(guī)則越嚴(yán)格,誤報率就會相應(yīng)的上升而漏報率就會相應(yīng)的下降,源代碼檢測工具目前均為靜態(tài)的進(jìn)行代碼的掃描,即所有的檢測均是按照“規(guī)則”來進(jìn)行,任 何一款產(chǎn)品都不可能達(dá)到真正的零誤報、零漏報。所以可以說SCA的規(guī)則檢查稍顯簡單,CxSuite和CodeSecure的檢查比較謹(jǐn)慎。
而從漏報率上來看,謹(jǐn)慎的查找勢必會導(dǎo)致漏報率的提升,這一點(diǎn)上SCA和CodeSecure只說明了低漏報率,而CxSuite內(nèi)部包含了一種類似于C#稱為 CxQL的查詢語言,支持使用這種語言進(jìn)行查詢,方便用戶進(jìn)行特定的查找。另兩款軟件使用的都是規(guī)則的方式,其本質(zhì)上應(yīng)該是相類似的,這一點(diǎn)上規(guī)則似乎更 容易被用戶接收,但是CxQL的方式確實(shí)增強(qiáng)了用戶的操作性。
從結(jié)果輸出 上來說,三款軟件都支持多種輸出方式,而作為報告PDF格式可以說是最書面的一種格式。在這一點(diǎn)上,三款軟件輸出格式略有不同。
SCA報告構(gòu)成如下:掃描概述、按風(fēng)險的分類進(jìn)行詳細(xì)描述,包括每個風(fēng)險的發(fā)現(xiàn)位置,代碼上下文,風(fēng)險源和風(fēng)險輸出,以及改進(jìn)方法,各類風(fēng)險描述之后是按照風(fēng)險類別 的所有風(fēng)險的統(tǒng)計(jì)和按照風(fēng)險等級的統(tǒng)計(jì)圖表。SCA的每種類型的文件生成一個PDF文件,便于用戶對于風(fēng)險嚴(yán)重程度的不同采取不同的策略。
CxSuite 報告構(gòu)成如下:風(fēng)險按照不同分類方式的統(tǒng)計(jì)圖、風(fēng)險的數(shù)據(jù)統(tǒng)計(jì)情況、風(fēng)險最高的文件TOP 10、按照類別進(jìn)行風(fēng)險詳述,包括風(fēng)險的名稱、描述、常見危害、在軟件開發(fā)各階段的相應(yīng)處理方式、詳細(xì)示例,列舉每一個風(fēng)險的傳輸路徑和相應(yīng)位置代碼。
CodeSecure 報告構(gòu)成如下:目錄、重點(diǎn)精華,包括檢測信息、弱點(diǎn)密度規(guī)范分布趨勢、弱點(diǎn)最多的文件TOP 5,弱點(diǎn)索引,弱點(diǎn)的詳細(xì)信息,包括弱點(diǎn)的全程跟蹤,最后是弱點(diǎn)信息及修改建議、所有的進(jìn)入點(diǎn)。
三款軟件的 報告中以SCA的最有特色,將不同級別的風(fēng)險分文件顯示對于程序員進(jìn)行修改是極為方便的;CodeSecure的報告最為規(guī)范,整個文檔包括目錄,結(jié)構(gòu)完 整,唯一的不足是將風(fēng)險的修改建議放在了最后,查閱有些不便;CxSuite的內(nèi)容可以說是最概要的,只包含了風(fēng)險的最關(guān)鍵內(nèi)容,對于程序員來說應(yīng)該是最 簡潔的。
4. 總結(jié)
這三款靜態(tài)源代碼掃描工具都有其各自特色,SCA支持的語言多達(dá)17種,基本上涵蓋了絕大多數(shù)的應(yīng)用,具有相 當(dāng)廣泛的適用性,但同時也使得其價格非常昂貴;CxSuite支持的語言包括常見Web應(yīng)用的語言,適用范圍基本上包括了大部分的應(yīng)用,其使用獨(dú)創(chuàng)的語言來自定義規(guī)則非常有特色,價格較之SCA有一定的優(yōu)勢;CodeSecure支持的語言較少,不過基本上可以適用于當(dāng)前大多數(shù)的B/S結(jié)構(gòu)應(yīng)用,它是唯一 的軟硬件結(jié)合的產(chǎn)品,在免除用戶安裝步驟的同時將掃描運(yùn)行于特定設(shè)備之上,有助于提高運(yùn)行速度,也因?yàn)榘ㄓ布木壒剩鋬r格不菲。
SCA極廣的適用性使其適用于橫跨多種語言的開發(fā)和測試人員,CxSuite的較高性價比使其適于基于Web 的開發(fā)人員和測試人員,CodeSecure穩(wěn)定的速度和B/S的獨(dú)特結(jié)構(gòu)使得Web開發(fā)或測試的多人同時使用變得極為方便。
隨著應(yīng)用的安全性越來越受到人們的重視,靜態(tài)源代碼掃描和動態(tài)掃描將逐漸融合,未來將會有更多更優(yōu)秀的源代碼掃描工具誕生,讓我們拭目以待吧。
附錄A 其他靜態(tài)源代碼檢測產(chǎn)品
公司 產(chǎn)品 支持語言
art of defence Hypersource JAVA
Coverity Prevent JAVA .NET C/C++
開源 Flawfinder C/C++
Grammatech CodeSonar C/C++
HP DevInspect JAVA
KlocWork Insight JAVA .NET C/C++,C#
Ounce Labs Ounce 6 JAVA .NET
Parasoft JTEST等 JAVA .NET C/C++
SofCheck Inspector for JAVA JAVA
University of Maryland FindBugs JAVA
Veracode SecurityReview JAVA .NET
FindBug PMD/Lint4