静态分析工具COBOT与Testbed对比

一、静态代码分析工具类型

目前市场上静态分析工具基本分为三种类型:

1、编码规则检测型:主要用于对编码的风格进行检查,典型标准为MISRA 1998/2004/2008/2012, GJB 5369、GJB8114等。

2、语义缺陷检测主要用于发现代码中真正的缺陷,典型标准为:CWE、CVE、ISO17961等标准。

3、安全漏洞检测型:主要用于发现代码中的安全漏洞,典型标准为:CWE、CVE、CERT-C、OWASP、GB/T等标准。

二、静态分析简介

编码规则检测

无需对程序进行模拟执行分析,也无需利用全路径覆盖技术,只需对代码进行AST(抽象语法树)分析,并利用字符串匹配即可找出编码规则的问题。典型的编码规则包括:if/else后面没有大括号、变量字母首字母必须大写、头文件之前不能有可执行代码、循环体必须用大括号括起来等。但编码规则的风格并不会导致程序崩溃或致命性错误。

语义缺陷检测

一般来说只能采用动态的方式发现,但静态分析利用其全路径覆盖技术,能发现一般动态测试难以发现的缺陷,这也是近些年测试领域都购买静态分析工具的主要原因。典型的语义缺陷:内存泄露、代码不可达路径、空指针解引用、数组越界等。程序缺陷会导致程序崩溃和致命性错误,直接影响军用武器的崩溃、坠毁、运行错误,造成毁灭性损害。

安全漏洞检测

安全漏洞是指由于程序设计考虑不周而产生的可能会对程序本身、系统或数据带来潜在危害的代码问题。代码漏洞可以表现在很多方面,算法本身或者代码本身的问题都可能会造成代码漏洞。典型的安全漏洞包括:缓冲区溢出、线程死锁、SQL注入/命令行注入、远程服务拒绝访问等。敌人通过代码安全漏洞侵入我方指挥系统或武器控制系统,导致我方的武器被控制。

三、静态代码分析工具简介

编码规则检测工具:

Testbed为规则检查工具的代表,市场占有量非常大,但随着时间的推移,大家从规则匹配转向了用静态分析工具检查Bug,所以规则检查型工具占有量比开始时候已经减少,但仍有一些比较落后的单位还在继续采购此类工具。同时,市面上有很多开源工具可直接进行编码风格的检测。

语义缺陷检测工具:

COBOT(库博)为国内语义缺陷检测工具的代表,完全具有自主国产化支持产权,国内唯一一家通过CWE认证,近年来逐渐成为军工企业的首选语义缺陷检测工具。该工具通过算法全路径遍历每条可执行路径,发现传统意义上只有通过动态测试才能发现的代码缺陷,如内存泄漏、空指针解引用、缓冲区溢出等问题。该类工具能够发现动态测试用例无法覆盖的缺陷,在开发阶段或者测试阶段使用均可。

代码安全漏洞检测工具:

COBOT(库博)为国内唯一一家代码安全漏洞分析工具的代表,完全具有自主国产化支持产权,国内唯一一家通过CWE认证,近年来主要成为军工单位、民用单位、国家级、省市级测评中心的首选工具,该工具可模拟代码执行并进行模拟攻击,发现程序中的安全漏洞。

四、COBOT与Testbed功能概览 

    通过上图可以看出,Testbed在动态测试方面支持单元测试,覆盖率测试,弥补了静态测试的不足。

COBOT(库博)计划在2017年,完成代码静态测试+动态测试相结合的方式研发,填补国内动静结合测试工具的空缺,从而更好的为军工单位提供军工软件测试工作的辅助。

、综合比较

工具名称

编码标准

语义缺陷

安全漏洞

缺陷定制

误报/

漏报

检测效率

Testbed

800余种国际编码规则,国内标准较少

不支持

不支持

很难

规则:

2%/5%

每小时

100万行

库博

更多,完全覆盖GJB标准及国际MISRA标准.GB/T系列。

支持

支持

支持

规则:

1%/3%

语义

5%/10%

每小时

150万行


通过上表对比可以看出:

1、Testbed虽然支持编码规则的检测,但不支持语义及缺陷的检测,只能检测编码风格,并不能发现程序的致命缺陷。

2、而COBOT(库博)即可检测程序中的致命缺陷以及安全漏洞,还可检测GJB以及国际MISRA的编码规则,覆盖范围更广,检测更全面。

3、通过对开源工程的测试,进行误漏报率的对比,发现COBOT(库博)的误漏报率相比Testbed较低,因COBOT主打国内市场,在众多军工单位进行大量试用及使用,吸取了众多单位的意见和建议,更加符合国内军工单位的使用习惯及测试要求。

4、此外库博在功能上还可以进行计划任务,检测队列,检测并发的功能支持。

静态分析工具COBOT与Testbed对比_第1张图片

你可能感兴趣的:(网络,安全,运维)