代碼靜態檢測
程序靜態分析(Program Static Analysis)是指在不運行代碼的方式下,通過詞法分析、語法分析、控制流、數據流分析等技術對程序代碼進行掃描,驗證代碼是否滿足規范性、安全性、可靠性、可維護性等指標的一種代碼分析技術。目前靜態分析技術向模擬執行的技術發展以能夠發現更多傳統意義上動態測試才能發現的缺陷,例如符號執行、抽象解釋、值依賴分析等等並采用數學約束求解工具進行路徑約減或者可達性分析以減少誤報增加效率。目前的靜態分析工具,無論從科研角度還是實用性角度還有很大的提高余地,國際最好分析工具誤報率在5-10%之間,能夠報出的缺陷種類也僅有幾百種。我國一些高校正在致力於在此方面的研究和開發(成果較突出的如香港科技大學、北京大學、清華大學等)。
工具介紹
1. Fortify SCA(Source Code Analysis)
Fortify Software公司是一家總部位於美國硅谷,致力於提供應用軟件安全開發工具和管理方案的廠商。Fortify為應用軟件開發組織、安全審計人員和應用 安全管理人員提供工具並確立最佳的應用軟件安全實踐和策略,幫助他們在軟件開發生命周期中花最少的時間和成本去識別和修復軟件源代碼中的安全隱患。 Fortify SCA是Fortify360產品套裝中的一部分,它使用fortify公司特有的X-Tier Dataflow™ analysis技術去檢測軟件安全問題。
優點:全球最大的靜態代碼檢測廠商,支持語言較多
缺點:價格太過昂貴,性價比不高
2. Checkmarx CxSuite
Checkmarx 是以色列的一家高科技軟件公司。它的產品CheckmarxCxSuite專門設計為識別、跟蹤和修復軟件源代碼上的技術和邏輯方面的安全風險。首創了以查詢語言定位代碼安全問題,其采用獨特的詞匯分析技術和CxQL專利查詢技術來掃描和分析源代碼中的安全漏洞和弱點。
優點:可以利用CxQL 查詢語言自定義規則
缺點:輸出報告不夠美觀、語言支持種類不全面,價格昂貴
3. Coverity
Coverity公司是由一流的斯坦福大學的科學家於2002年成立的,產品核心技術是1998年至2002年在斯坦福大學計算機系統實驗室開發的,用於解決一個計算機科學領域最困難的問題,在2003年發布了第一個能夠幫助Linux、FreeBSD等開源項目檢測大量關鍵缺陷的系統,Coverity是唯一位列IDC前10名軟件質量工具供應商的靜態分析工具廠商,被第三方權威調查機構VDC評為靜態源代碼分析領域的領導者,市場占有率處於絕對領先地位。
優點:可以檢測二進制文件,分析能力較強
缺點:價格昂貴
4. 源傘科技Pinpoint
源傘科技公司是香港科技大學安全實驗室的眾多博士創建的,產品集成了實驗室多年的研究成果,在眾多國際頂級學術會議上都發表了成果論文,在學術界有很大的影響。近幾年源傘科技將靜態代碼檢測產品Pinpoint成功商業化。目前產品已經比較成熟,能夠方便的集成各種安全開發流程,操作界面流暢。能夠直接掃描JAVA的二進制文件,在Java和c/c++兩種語言上的分析能力十分強大,掃描速度普遍快於市面上現有的產品,且擁有眾多國內一線互聯網以及金融公司的安全開發實例經驗,不僅能夠輸出工具產品,也能夠提供安全開發的解決方案。在國內靜態代碼分析領域處於領先地位。
優點:分析能力強,使用方便友好,價格透明親民
缺點:還未支持C#以及OC,目前支持C/C++,Java,Android,JS,PHP,Python,Golang,Sql