Checkmarx是一款SAST,主要扫描安全问题和最佳实践的问题;SonarQube主要是扫描代码质量和最贱实践问题,最近也添加了一些安全规则的扫描的支持。下面是比较两款工具的主要参数的不同点,仅供参考。
类型 | 参数 | Checkmarx | Sonarqube |
基本功能 | 支持语言 | JavaScript,Java,PHP,Python, Swift,Go,Apex,Scala,.Net,C,C++, Android,Ruby,Perl,Groovy,PL/SQL, | JavaScript, Java, PHP, Python, C,C++,C#,JS/TS,Kotlin,Flex, HTML5,ObjetiveC,Ruby,Scala,Swift,T-SQL,VB6,XML |
是否需要可构建的代码 | NO | Yes | |
是否支持扫描二进制文件 | NO | NO | |
是否支持自定义规则 | Yes | Yes | |
支持的框架结构(只列出常见的Java和JS的主要常用框架) | Struts,JPA,Spring MVC/Boot,iBatis,Hibernate ,Jquery,Node.js,Ajax,Angular.js,Express.js,Handlebars, ReactJS,Vue.js | Struts, Spring,Hibernate,Thymeleaf ReactJS,Vue.js,Flow | |
是否可以修改漏洞的修改方案和漏洞描述 | Yes | 对于Java语言不支持,只针对C#和JS提供有限的支持, 可以添加扩展描述 | |
在UI中显示源代码和调用栈互动 | Yes | NO,只显示漏洞触发点的代码。 | |
支持的安全漏洞类型 | 对于Java,JS和C#,每种语言都大于200种 | Java(35),JS(28),C#(13) | |
是否支持增量扫描 | 支持 | 对于C++支持,对于java不支持。 | |
工具主要焦点 | 主要集中代码安全和最佳实践 | 主要集中在代码质量和最佳实践,也支持一些安全类型 | |
报告格式 | PDF,Excel,XML,CSV | HTML,PDF(需要安装插件) | |
集成 | 是否提供IDE插件 | Yes | Yes |
支持CI/CD集成 | Jenkins,Bamboo, TeamCity,Azure Pipelines, AWS CodeBuild, AWS Code Pipeline, Sonarqube,CLI | Jenkins,Github Action, Gilab CI, Azure Pipelines, Bitbucket,Pipelines | |
与其他工具集成能力 | 提供SDK,API和CLI与其他工具集成 | Jira,Confuluence,Butler。大部分的SAST都会提供插件与之集成。 | |
其他 | 客户支持 | 提供各种支持,包括专家一对一支持和技术支持。 有些支持需要支付费用才能提供。 | 在大陆没有官方支持 |
文档 | 完整的文档和手册以及培训资料 | 文档通常落后,导致一些人通过使用来编写书籍来指导, 不过通常也跟不上版本发布的节奏。 | |
价格 | 高 | 社区版本免费,不过,有些功能必须要企业版才提供。 | |
Forrester wave for SAST Q1 2021 | Accuracy | 2.40 | 2.00 |
Remidiation Guidance & education | 5.00 | 1.00 | |
Breadth of Coverage | 4.20 | 1.80 | |
Rule Management | 4.00 | 2.80 | |
SDLC ingtegration | 3.40 | 2.65 | |
效率(只针对安全规则) | 误报率 | 高(可以通过改进规则降低) | 高(不能改规则) |
扫描速度 | 快 | 慢(需要编译,比较耗时) | |
准确度 | 高(Java高40-50%, JS高25-35%) | 低 |
*所有的分数都是基于0(弱)->5(强)。
如果是关注安全编码,Checkmarx还是更胜一筹,SonarQube对于代码质量的扫描效果更好,如果想两者兼而顾之,很多企业一般都是结合两种工具一起用于提高代码的质量和安全。Checkmarx也提供了plugin(Plugins | Checkmarx.com)供和SonarQube集成。