Coverity 代碼靜態安全檢測


 

 

 

產品名稱:Coverity源代碼缺陷分析工具
產品型號:Coverity
 

 

源代碼缺陷分析工具
Coverity Static Analysis
 
Coverity公司是由一流的斯坦福大學的科學家於2002年成立的,產品核心技術是1998年至2002年在斯坦福大學計算機系統實驗室開發的,用於解決一個計算機科學領域最困難的問題,在2003年發布了第一個能夠幫助Linux、FreeBSD等開源項目檢測大量關鍵缺陷的系統,Coverity是唯一位列IDC前10名軟件質量工具供應商的靜態分析工具廠商,被第三方權威調查機構VDC評為靜態源代碼分析領域的領導者,市場占有率處於絕對領先地位。
 
美國Coverity公司提供最先進的和可配置的用於檢測軟件缺陷和安全隱患的靜態源代碼分析解決方案,Coverity將基於布爾可滿足性驗證技術應用於源代碼分析引擎,分析引擎利用其專利的軟件DNA圖譜技術和meta-compilation技術,綜合分析源代碼、編譯構建系統和操作系統等可能使軟件產生的缺陷,Coverity是第一個能夠快速、准確分析當今的大規模(幾百萬、甚至幾千萬行的代碼)、高復雜度代碼的工具,Coverity解決了影響源代碼分析有效性的很多關鍵問題:構建集成、編譯兼容性、高誤報率、有效的錯誤根源分析等。
 
產品功能
Coverity Static Analysis (也稱Prevent)是檢測和解決C、C++、Java和C#源代碼中最嚴重的缺陷的領先的自動化方法。通過對您的構建環境、源代碼和開發過程給出一個完整的分析,Prevent建立了獲得高質量軟件的標准。
靜態源代碼分析允許我們在軟件開發生命周期的早期階段發現和修復缺陷,節省數以百萬計的相關成本。Prevent是業界標准,因為只有Coverity理解和掌握靜態源代碼分析技術所具有的嚴格的要求。
l Coverity了解構建系統——Prevent通過在操作系統流程這個層次監測您的構建系統來獲得每一個操作的清晰視圖,展現您的軟件。
l Coverity了解源代碼——Prevent 檢測比當今市場上任何其他工具都更多的源代碼信息;代碼的結構、含義和意圖都被用來揭示其中的嚴重的錯誤和不安全性。
l Coverity了解開發者——Prevent 通過一個客戶化的工作流、功能強大的分析器和易於使用的工具,能夠使缺陷在幾分鍾內被定位,解決缺陷。
 
平台支持:
目標機平台:PowerPC,ARM,MIPS,x86,SPARC,XScale,SH,Codefire,SH,ST 20,8051,
TI DSP C3000/C6000/C55x/C54x, Motorola 68HC05/68HC11, Freescale 68HC08/HCS08/68HC12/HCS12X, Renesas M16C/H8/M32C,
C51/C166/C251等;
嵌入式操作系統:VxWorks,Embedded Linux,QNX,RTEMS,ucOS,WinCE,Windows Embedded,PalmOS,Symbian, pSOS、Nucleus、ThreadX, INTEGRITY、OSE,UCLinux,國產OS等等;
主機平台:Apple Mac OS X 10.4,Cygwin,FreeBSD,HPUX,Linux,Mac OS X , NetBSD(2.0) ,Solaris Sparc ,Solaris X86,Windows等;
支持的編譯器:ARM ADS/RVCT,Freescale Codewarrior ,GNU C/C++ ,Green Hills
HP aCC,i-Tech PICC,IAR,Intel C/C++ ,Marvell MSA ,Microsoft Visual C++,QNX ,Renesas ,Sun C/C++ ,TI Code Composer ,Wind River,
支持任何其他的ANSI C兼容的編譯器.
產品特點及優勢
Coverity產品專長於准確的查找最嚴重和最難檢測的缺陷,具有以下優勢:
精確性——Coverity Prevent的特別之處在於查找精確,具有業界最低的誤報率(小於15%)。當許多其他的源代碼分析產品以很高的誤報率使得其不可用時,Coverity的虛假路徑裁剪、統計分析和其它創新減少了誤報的產生。附加的配置和微調能夠進一步減少誤報率。
分析的深度——Coverity Prevent提供過程間數據流分析和統計分析,評審整個程序的交互和所有的可能的路徑。Coverity Prevent檢查企業特定的APIs和標志使用中的不一致性,精確的檢測QA、安全評審和現場會發生的缺陷。
分析的廣度——Coverity Prevent采用查找最嚴重的錯誤的最先進的技術,提高您的產品的質量和安全性。Coverity Prevent可以檢測嚴重的問題,例如系統崩潰、內存泄漏、內存錯誤、不確定行為、並發缺陷和安全性問題。
低擁有成本——Coverity Prevent無縫的與您已有的環境集成,能夠快速部署和配置。
可擴展——Coverity Prevent使您能夠在我們的強大的分析引擎上創建定制的檢查器,來滿足您的開發組織和代碼的特定需求。您可以設置定制的規則,來強化編碼標准或者檢測代碼中的錯誤。
強大的可配置性——Coverity Prevent能夠快速的分析您的代碼,不需要寫測試用例。通常百萬行的代碼僅需要幾個小時,其他的工具需要幾天,甚至幾個星期來分析大規模代碼。
廣泛的平台支持——Coverity Prevent支持最廣泛的編譯器和硬件平台,可最大化的滿足用戶多平台的測試要求。

 

以 C/C++為例
Prevent 分析引擎使得缺陷檢測檢查器擁有源代碼最精確的描述。
Prevent 針對C/C++的分析引擎
引擎 功能
路徑流程引擎 通過構建一個表示經過每一個函數的所有的路徑的圖表分析您代碼中的每個函數的控制流
數據追蹤引擎 用於分析從程序中每個路徑中的聲明收集的所有的整型和布爾型等數據
統計引擎 用於分析您的代碼作為一個整體的行為特征
過程間調用總結引擎 一個主要的創新,使得Prevent 可以執行整個程序的分析,分析文件間和模塊間的任何層次的復雜的調用鏈
類型流程引擎 用於提高C++分析中依賴於類層次關系的報告的結果的精度
虛假路徑引擎 用於分析每個分支條件,以確定在當前路徑它將是真、假或不確定
加速引擎 保存橫越每個路徑時的每個缺陷分析所收集的信息;消除冗余路徑,不需要橫越任何不必要的路徑來找到最多的缺陷
數據傳播引擎 把過程間調用總結引擎產生的所有總結和數據追蹤引擎記錄的所有數據匯總起來,是Coverity特有的、上下文敏感的過程間分析能力的關鍵
增量分析引擎 通過緩存分析數據來提高性能,以便后續的分析僅需要包含變化的數據
 
能夠發現的C/C++缺陷(部分) C/C++安全性問題(部分)
並發
  • 死鎖
  • 錯誤使用的阻塞調用
性能下降
  • 內存泄漏
  • 文件句柄泄漏
  • 定制的內存和網絡資源泄漏
  • 數據庫連接泄漏
導致崩潰的缺陷
  • 空指針引用
  • 釋放后引用
  • 多次釋放
  • 不正確的內存分配
  • 不匹配的數組新建/刪除
不正確的程序行為
  • 邏輯錯誤導致的死代碼
  • 未初始化變量
  • 負數的無效引用
不正確的APIs使用
  • STL使用錯誤
  • API錯誤處理
安全編碼缺陷
  • 緩沖區溢出
  • 整形溢出
  • 缺失的/不充分的惡意數據和字符串輸入的驗證
  • 格式化字符串的不安全
  • SQL注入攻擊
  • 交叉站點腳本攻擊
隱含的缺陷
  • 整個系統折衷
  • 服務拒絕攻擊
  • 優先權擴張
  • 保密數據泄漏
  • 數據丟失
  • 仲裁代碼執行
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM