1. 程式人生 > >三款主流靜態原始碼安全檢測工具比較

三款主流靜態原始碼安全檢測工具比較

靜態原始碼安全檢測工具比較

1. 概述

隨著網路的飛速發展,各種網路應用不斷成熟,各種開發技術層出不窮,上網已經成為人們日常生活中的一個重要組成部分。在享受網際網路帶來的各種方便之處的同時,安全問題也變得越來越重要。黑客、病毒、木馬等不斷攻擊著各種網站,如何保證網站的安全成為一個非常熱門的話題。

根據IT研究與顧問諮詢公司Gartner統計資料顯示,75%的黑客攻擊發生在應用層。而由NIST的統計顯示92%的漏洞屬於應用層而非網路層。因此,應用軟體的自身的安全問題是我們資訊保安領域最為關心的問題,也是我們面臨的一個新的領域,需要我們所有的在應用軟體開發和管理的各個層面的成員共同的努力來完成。越來越多的安全產品廠商也已經在考慮關注軟體開發的整個流程,將安全檢測與監測融入需求分析、概要設計、詳細設計、編碼、測試等各個階段以全面的保證應用安全。

對於應用安全性的檢測目前大多數是通過測試的方式來實現。測試大體上分為黑盒測試和白盒測試兩種。黑盒測試一般使用的是滲透的方法,這種方法仍然帶有明顯的黑盒測試本身的不足,需要大量的測試用例來進行覆蓋,且測試完成後仍無法保證軟體是否仍然存在風險。現在白盒測試中原始碼掃描越來越成為一種流行的技術,使用原始碼掃描產品對軟體進行程式碼掃描,一方面可以找出潛在的風險,從內對軟體進行檢測,提高程式碼的安全性,另一方面也可以進一步提高程式碼的質量。黑盒的滲透測試和白盒的原始碼掃描內外結合,可以使得軟體的安全性得到很大程度的提高。

原始碼分析技術由來已久,Colorado 大學的 Lloyd D. Fosdick 和 Leon J. Osterweil 1976 年的 9 月曾在 ACM Computing Surveys 上發表了著名的 Data Flow Analysis in Software Reliability,其中就提到了資料流分析、狀態機系統、邊界檢測、資料型別驗證、控制流分析等技術。隨著計算機語言的不斷演進,原始碼分析的技術 也在日趨完善,在不同的細分領域,出現了很多不錯的原始碼分析產品,如 Klocwork Insight、Rational Software Analyzer 和 Coverity、Parasoft 等公司的產品。而在靜態原始碼安全分析方面,Fortify 公司和 Ounce Labs 公司的靜態程式碼分析器都是非常不錯的產品。對於原始碼安全檢測領域目前的供應商有很多,這裡我們選擇其中的三款具有代表性的進行對比,分別是 Fortify公司的Fortify SCA,Security Innovation公司的Checkmarx Suite和Armorize公司的CodeSecure。

2. 工具介紹

2.1. Fortify SCA(Source Code Analysis)

Fortify Software公司是一家總部位於美國矽谷,致力於提供應用軟體安全開發工具和管理方案的廠商。Fortify為應用軟體開發組織、安全審計人員和應用 安全管理人員提供工具並確立最佳的應用軟體安全實踐和策略,幫助他們在軟體開發生命週期中花最少的時間和成本去識別和修復軟體原始碼中的安全隱患。 Fortify SCA是Fortify360產品套裝中的一部分,它使用fortify公司特有的X-Tier Dataflow™ analysis技術去檢測軟體安全問題。

2

優點:目前全球最大靜態原始碼檢測廠商、支援語言最多

缺點:價格昂貴、使用不方便

2.2. Checkmarx CxSuite

Checkmarx 是以色列的一家高科技軟體公司。它的產品CheckmarxCxSuite專門設計為識別、跟蹤和修復軟體原始碼上的技術和邏輯方面的安全風險。首創了以查詢語言定位程式碼安全問題,其採用獨特的詞彙分析技術和CxQL專利查詢技術來掃描和分析原始碼中的安全漏洞和弱點。

1

優點:利用CxQL 查詢語言自定義規則

缺點:輸出報告不夠美觀、語言支援種類不全面

2.3. Armorize CodeSecure

阿碼科技成立於2006年,總部設立於美國加州聖克拉拉市,研發中心位於臺灣的南港軟體工業園區。阿碼科技提供全方位網路安全解決方案,捍衛企業免於受到黑客利用 Web 應用程式的漏洞所發動的攻擊。阿碼科技 CodeSecure可有效地協助企業與開發人員在軟體開發過程及專案上線後找出 Web 應用程式風險,並清楚交代風險的來龍去脈 (如何進入程式,如何造成問題) 。CodeSecure內建語法剖析功能無需依賴編譯環境,任何人員均可利用 Web操作與整合開發環境雙介面,找出存在資訊保安問題的原始碼,並提供修補建議進行調整。CodeSecure依託於自行開發的主機進行遠端原始碼檢 測,在保證速度穩定的同時方便使用者進行Web遠端操作。

3

優點:Web結合硬體,速度快、獨具特色的深度分析

缺點:支援語言種類較少、價格不菲

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
風險種類 400種 300種 參考CWE
風險型別參考來源 CWE、OWASP CWE、OWASP CWE、OWASP
漏報率 最低
誤報率 稍高
是否支援SaaS
軟硬體型別 純軟體 純軟體 Web結合硬體裝置
執行平臺 無限制 WindowsNET Framework 2.0 無限制
執行速度 取決於電腦配置速度不定 取決於電腦配置速度不定 由主機配置決定速度恆定
報告格式 PDF PDF、XML、CSV、HTML Web、PDF
報告內容 完整按照風險級別不同分為多個檔案 核心內容完整掃描資訊等缺失 非常完整但修改建議放於最後
報價 100萬/軟體 70萬/軟體 100萬/軟硬體
價效比

從軟體支援的原始碼語言上來說,Fortify SCA(下文簡稱SCA)支援多達17種語言,Checkmarx CxSuite(下文簡稱CxSuite)其次,而Armonize CodeSecure(下文簡稱CodeSecure)在三款軟體中支援的最少,僅僅支援幾種最常見語言,不過這幾種基本涵蓋了絕大多數應用中使用的程式語言,基本上可以支援現在大多數應用的原始碼掃描。

從風險的分類來說,各個廠商都有其自己獨特的分類方式和不同的種類數量,不過從實際應用中可以看出,總體上仍為OWASP公佈的幾類風險,如SQL注入、跨站指令碼等,已經可以滿足實際中開發人員和測試人員的需求,對於各個廠商不同的部分,一般來說主要的區別在於理解不同,看問題的角度不同,並無誰錯誰對之原則性問題。

從執行平臺 的角度,CodeSecure這個產品目前看來已經將SaaS的理念很好的融合進來,整個軟體的操作介面為Web方式,使用者可以通過網頁進行操作,B/S 的方式可以將作業系統的影響降到最低,只要有一臺可以上網的電腦和瀏覽器,無論什麼作業系統都可以使用CodeSecure遠端進行原始碼掃描,CodeSecure依託的是一臺Armonize自行研製的主機,使用硬體裝置的好處在於可以適用於多種場合,不會因為測試人員或是開發人員的電腦配置影響掃描速度,掃描的速度完全取決於主機的效能。而SCA和CxSuite主要還是單機軟體,但目前也在不斷地向SaaS的方向進行過渡,並且提供了相當全面的貫徹整個軟體開發流程(SDLC)的解決方案與服務給使用者。其中CxSuite這個產品標明瞭使用該軟體的硬體配置,為Windows作業系統 和.NET框架,這個產品目前應該為利用.NET框架進行開發,所以執行環境有一定的侷限性。同時,SCA和CxSuite因為是單機軟體,一方面在使用 前需要安裝,另一方面其執行速度取決於執行軟體的電腦效能,對於使用該軟體的電腦配置有一定的要求。

三種產品都使用了各自的技術對於威脅進行檢測,SCA使用的是已獲得專利的X-Tier™資料流分析器,這三種產品中只有CxSuite聲稱可以達到零誤報率,因為 其對於風險的理解是風險必須在外形上呈現出來才被考慮為實際的風險,這種理解方式可以說是別出心裁,從程式碼安全的角度來說,檢測的目的是為了發現問題並及時改正,同時要針對於最關鍵的問題進行改正,這也是這三款軟體都包含TOP X的統計的目的,從這一點上講,CxSuite的風險報告是非常謹慎的。SCA在以前的使用中發現有一定的誤報率,不過換個角度想,誤報相比漏報是可以容 忍的,規則越嚴格,誤報率就會相應的上升而漏報率就會相應的下降,原始碼檢測工具目前均為靜態的進行程式碼的掃描,即所有的檢測均是按照“規則”來進行,任 何一款產品都不可能達到真正的零誤報、零漏報。所以可以說SCA的規則檢查稍顯簡單,CxSuite和CodeSecure的檢查比較謹慎。

而從漏報率上來看,謹慎的查詢勢必會導致漏報率的提升,這一點上SCA和CodeSecure只說明瞭低漏報率,而CxSuite內部包含了一種類似於C#稱為 CxQL的查詢語言,支援使用這種語言進行查詢,方便使用者進行特定的查詢。另兩款軟體使用的都是規則的方式,其本質上應該是相類似的,這一點上規則似乎更 容易被使用者接收,但是CxQL的方式確實增強了使用者的操作性。

從結果輸出 上來說,三款軟體都支援多種輸出方式,而作為報告PDF格式可以說是最書面的一種格式。在這一點上,三款軟體輸出格式略有不同。

SCA報告構成如下:掃描概述、按風險的分類進行詳細描述,包括每個風險的發現位置,程式碼上下文,風險源和風險輸出,以及改進方法,各類風險描述之後是按照風險類別 的所有風險的統計和按照風險等級的統計圖表。SCA的每種型別的檔案生成一個PDF檔案,便於使用者對於風險嚴重程度的不同採取不同的策略。

CxSuite 報告構成如下:風險按照不同分類方式的統計圖、風險的資料統計情況、風險最高的檔案TOP 10、按照類別進行風險詳述,包括風險的名稱、描述、常見危害、在軟體開發各階段的相應處理方式、詳細示例,列舉每一個風險的傳輸路徑和相應位置程式碼。

CodeSecure 報告構成如下:目錄、重點精華,包括檢測資訊、弱點密度規範分佈趨勢、弱點最多的檔案TOP 5,弱點索引,弱點的詳細資訊,包括弱點的全程跟蹤,最後是弱點資訊及修改建議、所有的進入點。

三款軟體的 報告中以SCA的最有特色,將不同級別的風險分檔案顯示對於程式設計師進行修改是極為方便的;CodeSecure的報告最為規範,整個文件包括目錄,結構完 整,唯一的不足是將風險的修改建議放在了最後,查閱有些不便;CxSuite的內容可以說是最概要的,只包含了風險的最關鍵內容,對於程式設計師來說應該是最 簡潔的。

4. 總結

這三款靜態原始碼掃描工具都有其各自特色,SCA支援的語言多達17種,基本上涵蓋了絕大多數的應用,具有相 當廣泛的適用性,但同時也使得其價格非常昂貴;CxSuite支援的語言包括常見Web應用的語言,適用範圍基本上包括了大部分的應用,其使用獨創的語言來自定義規則非常有特色,價格較之SCA有一定的優勢;CodeSecure支援的語言較少,不過基本上可以適用於當前大多數的B/S結構應用,它是唯一 的軟硬體結合的產品,在免除使用者安裝步驟的同時將掃描運行於特定裝置之上,有助於提高執行速度,也因為包括硬體的緣故,其價格不菲。

SCA極廣的適用性使其適用於橫跨多種語言的開發和測試人員,CxSuite的較高性價比使其適於基於Web 的開發人員和測試人員,CodeSecure穩定的速度和B/S的獨特結構使得Web開發或測試的多人同時使用變得極為方便。

隨著應用的安全性越來越受到人們的重視,靜態原始碼掃描和動態掃描將逐漸融合,未來將會有更多更優秀的原始碼掃描工具誕生,讓我們拭目以待吧。

附錄A 其他靜態原始碼檢測產品

公司 產品 支援語言
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