能够发现的C/C++缺陷(部分)
|
C/C++安全性问题(部分)
|
并发
性能下降
-
内存泄漏
-
文件句柄泄漏
-
定制的内存和网络资源泄漏
-
数据库连接泄漏
导致崩溃的缺陷
-
空指针引用
-
释放后引用
-
多次释放
-
不正确的内存分配
-
不匹配的数组新建/删除
不正确的程序行为
-
逻辑错误导致的死代码
-
未初始化变量
-
负数的无效引用
不正确的APIs使用
|
安全编码缺陷
-
缓冲区溢出
-
整形溢出
-
缺失的/不充分的恶意数据和字符串输入的验证
-
格式化字符串的不安全
-
SQL注入攻击
-
交叉站点脚本攻击
隐含的缺陷
-
整个系统折衷
-
服务拒绝攻击
-
优先权扩张
-
保密数据泄漏
-
数据丢失
-
仲裁代码执行
|
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特有的、上下文敏感的过程间分析能力的关键
|
增量分析引擎
|
通过缓存分析数据来提高性能,以便后续的分析仅需要包含变化的数据
|
Reference: