、Coverity概述
Coverity公司是由一流的斯坦福大学的科学家于2002年成立的,产品核心技术是1998年至2002年在斯坦福大学计算机系统实验室开发的,用于解决一个计算机科学领域最困难的问题,在2003年发布了第一个能够帮助Linux、FreeBSD等开源项目检测大量关键缺陷的系统。Coverity公司推出的综合开发测试平台,基于新一代的不做代码规则检查、只专注检测代码中的Bug静态分析技术,可以更好地帮助开发人员在写代码的时候就能发现并修复安全缺陷,缩短产品上市时间和降低风险。Coverity是唯一位列IDC前10名软件质量工具供应商的静态分析工具厂商,被VDC评为静态源代码分析领域的领导者。
二、使用Coverity的优势
从2006年开始,Coverity与美国国土安全部一起,研发了Coverity SCAN项目,来保证开源软件的安全性和完整性。Coverity SCAN分析了超过290个开源项目,包括Linux、Apache、PHP和Android,以下表格展示出了开源软件中最常出现的缺陷类型,商业软件也与之类似。
SCAN项目中的出现频率 风险程度
空指针引用 27.60% 中
资源泄露 23.19% 高
错误的表达式 9.76% 中
未初始化变量 8.41% 高
释放后使用 5.91% 高
缓冲区溢出 5.52% 高
像空指针引用、资源泄漏和缓冲区溢出等缺陷类型常常会带来严重的质量和安全风险。使用Coverity,相比于传统的测试方法,会更易于发现这样的缺陷。
在开发阶段使用Coverity,一方面开发人员可以对产品的质量更有信心,另一方面,测试人员可以把更多的精力放在业务逻辑的测试上面,而不是花大量精力去确认一些要在特殊条件下才可能出现的BUG(典型的如空指针引用),从而可以提高测试的效率。
三、Coverity典型缺陷说明
1、空指针引用(Null pointer dereferences)
描述:程序调用值为null的指针的任何方法,会引发空指针异
可能的后果:程序Crash,exit, restart,执行未授权代码或命令
Checker:FORWARD_NULL
Checker: NULL_RETURNS
2、资源泄漏(Resource leaks)
描述:程序未释放资源,或程序错误地释放了资源
可能的后果:Dos攻击,敏感数据泄漏,资源消耗
Checker: RESOURCE_LEAK
3、内存破坏(Memory - corruptions)
描述:
读写预期边界以外的内存缓冲区
使用未初始化的变量
函数/功能调用过程中使用了错误的参数取值
重复使用释放后的内存
可能的后果:程序Crash,exit, restart,执行未授权代码或命令
Checker: OVERRUN
4、内存非法访问(Memory - illegal accesses)
描述:
使用未初始化的变量
使用释放后的资源(CPU、内存、Socket、文件等)
函数返回堆栈变量的地址
可能的后果:程序Crash,exit, restart,资源消耗等
Checker: OVERRUN
Checker: USE_AFTER_FREE
Checker: RETURN_LOCAL
5、错误的表达式(Incorrect expression)
描述:使用错误的变量,不正确的类型转换
可能的后果:不符合预期的输出值,程序逻辑错误,运行时错误
Checker: COPY_PASTE_ERROR
6、未初始化变量(Uninitialized variables)
描述:变量使用前未初始化
可能的后果:程序逻辑不正确,产生错误的数据,程序Crash
Checker: UNINIT
四、Coverity支持的语言和能检测出的缺陷列表
Coverity支持以下语言和框架:
C/C++ C# Java JavaScript PHP Python ASP.NET Objective-C JSP Node.js Ruby Android
支持检测的主要缺陷类型列表:
- API usage errors
- Best practice coding errors
- Build system issues
- Buffer overflows
- Class hierarchy inconsistencies
- Code maintainability issues
- Concurrent data access violations
- Control flow issues
- Cross-site scripting (XSS)
- Cross-site request forgery (CSRF)
- Deadlocks
- Error handling issues
- Hard-coded credentials
- Incorrect expression
- Insecure data handling
- Integer handling issues
- Integer overflows
- Memory – corruptions
- Memory – illegal accesses
- Null pointer dereferences
- Path manipulation
- Performance inefficiencies
- Program hangs
- Race conditions
- Resource leaks
- Rule violations
- Security best practices violations
- Security misconfigurations
- SQL Injection
- Uninitialized members
Coverity更多详细信息参见:
https://www.synopsys.com/software-integrity/resources/datasheets/coverity.html#CWEcoverage
相关推荐
此外,Coverity Connect还提供了URL构造功能和导出缺陷输出的功能,以及如何隐藏内置视图和更改日期格式的显示。 最后,针对Coverity Policy Manager的使用,用户将学习到策略管理、度量、筛选器、报告、仪表板和...
本指南介绍了每 种检查器,并解释了如何以及何时使用建模来改进分析结果。它还包含关于常用 Web 应用程序安全问题和 问题修复的详细信息。 有关运行静态分析的信息,请参阅 Coverity Analysis 8.7.1 用户和管理员...
Coverity 8.7.1 命令与 Ant 任务说明书 包括Coverity Analysis、Coverity Platform 和 Coverity Desktop 说明 如果你想对cov-analyze,cov-build,cov-run-desktop 等等有关coverity命令用法有更多了解的话,可以...
本节将详细介绍Coverity Connect和Coverity Analysis的最低硬件要求,以及数据库大小的指导。 6.1 Coverity Connect硬件: 根据不同的部署选项,Coverity Connect可能需要不同配置的硬件资源。 6.2 Coverity ...
本文将详细介绍如何在Visual Studio 2017中安装并配置Coverity插件,以及如何将分析结果上传到服务器的过程。 #### 二、安装Coverity插件 在Visual Studio 2017或更高版本中,首先需要下载并安装Coverity的桌面端...
Coverity功能介绍 Coverity是业界领先的静态源代码分析工具,能够检测和解决C、C++、Java源代码中的严重缺陷。通过对构建环境、源代码与开发过程的综合分析,Coverity建立了获得高质量软件的标准。静态源代码分析...
coverity是一款代码漏洞扫描工具 Coverity代码静态检测工具
本参考指南主要涵盖了Coverity Analysis、Coverity Platform以及Coverity Desktop的相关命令,帮助用户更好地理解和操作Coverity进行代码分析。 一、Coverity Analysis Commands 1. `cov-analyze`:这个命令是...
jenkins插件--synopsys-coverity用作安全扫描自动化
jar包,官方版本,自测可用
Coverity分析器旨在帮助开发者在编码阶段就能发现并修复潜在的软件缺陷和安全漏洞,从而提高软件质量与安全性。本手册涵盖了Coverity Analysis和Coverity Connect两大部分,旨在帮助用户全面理解和高效使用该工具。 ...
它们深知软件失败可能带来的严重后果以及代码质量的重要性,因此信赖Coverity静态分析帮助它们实现高水平的软件完整性。 #### 强大的分析技术 Coverity静态分析背后的技术确保了目前最准确和全面的静态分析,其...
coverity报告生成器
jar包,官方版本,自测可用
描述通过 SOAP api 与 Coverity CIM 交互的实用程序。 请参阅: : Coverity 记录了一个 SOAP api,用于与 Coverity“连接”服务器交互。 请参阅: /docs/en/api/cov_platform_web_service_api_ref.html 这个 repo ...
C语言编程代码错误检查工具coverity命令详细参考, 。
jar包,官方版本,自测可用