Synopsys,中文新思作为应用安全领域最强公司,一直占据gartner魔力象限的第一的位置,那么它的静态分析工具Coverity支持那些缺陷的检测呢?今天我简单整理了一下,并没有与其全部checker进行对齐,大家通过这些列出的缺陷,可以洞见新思在C/C++开发语言的缺陷检测方面下的功夫,覆盖了我们能想到,或者不能想到的很多类型缺陷。
资源泄漏 | 内存泄漏 |
Microsoft COM内存泄漏 | |
Object 资源泄漏 | |
不当delete | |
未初始化变量 | 返回语句丢失 |
未初始化的指针/标量/数组读写 | |
类或结构体中未初始化的数据成员 | |
算数错误 | 负变量不当使用 |
异常符号扩展 | |
整数溢出 | |
除零异常 | |
内存崩溃 | 内存访问溢出 |
字符串长度计算错误 | |
缓冲区溢出 | |
写指针溢出 | |
负数组索引写入 | |
内存错误分配 | |
错误的内存释放 | |
释放后引用 | |
多次释放 | |
不正确的内存分配 | |
缓冲区溢出 | |
不匹配的数组新建/删除 | |
非法内存访问 | 不正确的delete操作 |
溢出指针读取 | |
越界读取 | |
返回指针至本地变量 | |
负数组索引读取 | |
已释放指针读写 | |
不兼容的指针转换 | |
控制流缺陷 | 逻辑/结构死代码 |
Switch语句中break遗失 | |
非本地资源不当使用 | |
逻辑错误导致的死代码 | |
未初始化变量 | |
负数的无效引用 | |
竞争和锁 | 死循环 |
双重锁或解锁丢失 | |
负循环边界值 | |
线程死锁 | |
持锁过程中调用sleep | |
死锁 | |
竞争条件(Race conditions) | |
阻塞调用误用 | |
空指针引用 | NULL检查后引用空指针 |
直接引用返回的空指针 | |
NULL检查前引用空指针 | |
错误处理缺陷 | 未验证的返回值 |
未获取异常 | |
负变量不当使用 | |
代码维护性缺陷 | 多返回语句 |
无效变量 | |
异常代码 | 复制/粘贴错误 |
不安全的数据处理 | 不可信的循环数据源 |
使用非可信数据源读写数组/指针 | |
使用非可信数据源格式化字符串 | |
性能缺陷 | 值传递大参数 |
使用大堆栈 | |
性能下降 | 内存泄漏 |
文件句柄泄漏 | |
定制的内存和网络资源泄漏 | |
数据库连接泄漏 | |
不正确的程序行为 | 逻辑错误导致的死代码 |
未初始化变量 | |
负数的无效引用 | |
不正确的APIs使用 | STL使用错误 |
API错误处理 | |
安全缺陷 | 整型溢出 |
缺失的/不充分的恶意数据和字符串输入的验证 | |
格式化字符串的不安全 | |
SQL注入攻击 | |
交叉站点脚本攻击 | |
隐含的缺陷 | 整个系统折衷 |
服务拒绝攻击 | |
优先权扩张 | |
保密数据泄漏 | |
数据丢失 | |
仲裁代码执行 |
(结束)