深圳市中易科技有限责任公司

coverity

Coverity是业界领先的代码静态检查工具,是Synopsys核心软件产品之一,支持C/C++、C#、Java、Python等多种语言的质量缺陷和和安全问题的分析与修复。Coverity拥有业界最高的代码检查准确率,能够挖掘深层次的代码质量问题,同时能够检查OWASP top 10和CWE Top 25安全问题,并可和业界主流应用生周期工具集成,从而帮助企业在研发前期发现并解决问题,以最小的成本保证软件产品研发质量和安全。

Coverity能够找到的 C/C++ 缺陷


资源泄露 :

– 内存泄露

– Microsoft COM 内存泄露

– Object资源泄露

– 不当delete

未初始化变量

– 返回语句丢失

– 未初始化的指针/标量/数组 读写

– 类或结构体中未初始化的数据成员

并发缺陷

– 死锁

– 竞态条件(Race conditions)

– 阻塞调用误用

算术错误

– 负变量不当使用

– 异常符号扩展

– 整数溢出

– 除零异常

内存崩溃

– 内存访问溢出

– 字符串长度计算错误

– 缓冲区溢出

– 写指针溢出

– 负数组索引写入

– 内存错误分配

– 错误的内存释放

非法内存访问

– 不正确的delete操作

– 溢出指针读取

– 越界读取

– 返回指针至本地变量

– 负数组索引读取

– 已释放指针读/写

– 不兼容的指针转换

控制流缺陷

– 逻辑/结构死代码

– Switch语句中break遗失

– 非本地资源不当使用


程序假死

– 死循环

– 双重锁或解锁丢失

– 负循环边界值

– 线程死锁

– 持锁过程中调用sleep()

空指针引用

– Null检查后引用空指针

– 直接引用返回的空指针

– Null检查前引用空指针

错误处理缺陷

– 未验证的返回值

– 未获取异常

– 负变量不当使用

代码维护性缺陷

– 多返回语句

– 无效变量

异常代码

– 复制/粘贴错误

– 格式错误

– 输入变量调换

不安全的数据处理

– 不可信的循环数据源

– 使用非可信数据源读写数组/指针

– 使用非可信数据源格式化字符串

性能缺陷

– 值传递大参数

– 使用大堆栈

安全措施违反

– 缓冲区溢出

– 固定长度缓冲区写入

– 非安全函数调用

– 非安全临时文件使用

– 检查/使用时间不一致

– 用户空间指针不当使用

API错误使用

– 非安全chroot调用

– 错误的迭代器使用

– printf() 参数不匹配


Coverity能够找到的 Java 缺陷:


类层次结构不一致

Web 应用安全缺陷(OWASP Top 10)

– 跨站脚本攻击

– SQL 注入

– 命令行注入

– 路径遍历…

资源泄露

– 数据库连接资源泄露

– 资源泄露

– Socket & Stream 泄露

并发数据访问异常

– 变量非原子更新

– 双重检查锁定

– 数据竞态条件

– Volatile非原子更新

– Servlet 属性无效锁定

– 单例模式竞态条件

程序假死

– 线程死锁

– 死锁

空指针引用

– Null检查后引用空指针

– 直接引用返回的空指针

– Null检查前引用空指针

API 使用错误

– 无效迭代器使用

– 不可修改的集合错误

– 已释放资源调用

性能缺陷

– 低效率方法使用

– 在循环中连接字符串

– 冗余同步

逻辑错误

– 不可达代码

– 未使用变量

– 常量表达式

– 非本地资源不当使用

– 整数溢出

– 不当分号

类层次结构不一致

– 调用 super.clone() 或 supler.finalize()失败

– 父函数调用丢失

– 构造函数中使用虚函数

控制流缺陷

– 在Finally模块中返回

– Switch语句中break丢失

错误处理缺陷

– 未验证的返回值

数据库操作

– 不正确的实体哈希

– Load函数返回值错误验证

– 不完全持续周期

– get()不当使用

代码可维护性缺陷

– 调用已过期方法

– 显式垃圾收集

– 非静态方法中设置静态变量

– 复制/粘贴错误

– 不可达代码

可疑代码

– 参数次序错误

格式错误



Coverity能够找到的 C# 缺陷


资源泄露

– 数据库连接资源泄露

– 资源泄露

– Socket & Stream 泄露

API 使用错误

– 已释放资源调用

并发数据访问异常

– 变量非原子更新

– 数据竞态条件

性能缺陷

– 低效率方法使用

– 在循环中连接字符串

– 冗余同步

程序假死

– 线程死锁

– 死循环

可疑代码

– 复制/粘贴错误

– 参数次序错误

– 格式错误



类层次结构不一致

– 调用 base.close() 或 base.dispose()失败

– 父函数调用丢失

控制流缺陷

– 可疑的额外分号

– 不一致比较

– 不兼容的类型比较

空指针引用

– Null检查后引用空指针

– 直接引用返回的空指针

– Null检查前引用空指针

算术错误

– 错误移位操作

– 不正确的表达式

– 表达式计算过程中溢出




Copyright ©深圳市中易科技有限责任公司技术支持:创同盟