Checkmarx是一家以色列高科技软件公司,是世界上著名的代码安全扫描软件Checkmarx CxSAST的生产商,拥有应用安全测试的业内前沿解决方案-CxSAST、CxOSA、CxIAST。分别对应的SAST、SCA和IAST三类应用安全测试类型工具。
Checkmarx CxSAST主要功能是查找安全漏洞、质量缺陷、逻辑问题和后门代码。是一个独特的源代码分析解决方案,该工具可用于识别、跟踪和修复源代码中技术上和逻辑上的缺陷,比如软件安全漏洞、质量缺陷问题和业务逻辑问题等。
Checkmarx使用 .net开发,必须安装在Windows上,它的规则也是类似.net语言的语法。其安装通常使用sql server数据库。
Checkmarx:订阅式和永久式。订阅式每年付费、永久式一次性付费。订阅式缺点是如果不续费,产品无法继续使用。订阅式每年的价格大约在50万人民币左右。还有一种方式按照用户数进行收费,不过用户可以同时登入。
Checkmarx提供了一个针对静态代码安全审计的解决方案,帮助企业在软件开发过程中查找、识别、追踪绝大部分主流编码中的技术漏洞和逻辑漏洞,帮助企业以低成本控制应用程序安全风险。CxSAST无需搭建软件项目源代码的构建环境即可对代码进行数据流分析。通过与各种SDLC组件的紧密集成,CxSAST可实现分析过程的完全自动化,并为审计员和开发人员提供对结果和补救建议的即时访问。
优势:
- 支持24种开发语言。
- 无需编译便可检测(Checkmarx早期针对编译型语言是编译后检测,几年前才调整为不需要编译就能检测)。
- 可以定制规则(虽然说门槛很高,用途不大,定制规则基本上无法发现高危漏洞,自定义规则主要是对违反安全编码规范的检测。但是由于很多国内客户被这些国外厂商洗脑,给出了一个美好的想象,实际上很难在生产中运用)。
- 支持增量检测(基于Git/SVN的增量检测,实际上是一种借助代码仓管给出的增量代码(包括新增,修改的文件)进行的检测)。
- 分析是java文件,非class文件。
- 误报率较高,一般在30-40%左右。
- 支持多个安全漏洞的关联分析。
劣势:
- 安装在Windows平台上。
- 默认检测规则比较差,适用性不强。
- 漏报率相对较高。
- 检测效率较低,一般在30-40万左右/小时。
- 无法支持国产服务器部署。
支持的24种开发语言:
Java、JSP、JS、SQL、VB.NET、H5、Kotlin、Ruby、ASP.net、TypeScript、Scala、ASP、C++、VB、PHP、Apex(AppExchange platform)、Stroooy、C#、ES5/ES6、Python、Go、visualForce、Swift、C
支持产生检测报告格式:
支持PDF、Excel、RTF、CSV和XML形式。
关于自定义规则说明:
Checkmarx把词法分析、语法分析的结果保存在数据库中,用户可以基于开放式查询语言(其内置查询语言CxQL允许对查询进行添加、修改和分组)编写查询语句,也就是通过类似SQL语句编写,完成自定义规则。一般用户是很难添加自己的定制查询语句,也很难使用自己定制的语句发现深层次的安全漏洞。
对编译型语言是针对源代码本身进行检测的解释:
Checkmarx CxEnterprise通过自行研发的综合词法分析、语法分析等分析技术,自动对软件源代码分析,并直接建立了代码元素及代码元素之间关系的逻辑图。然后Checkmarx CxEnterprise对这个内部代码图进行查询。
其缺陷模式匹配原理:
Checkmarx CxEnterprise包含针对所有编程语言已知数百个安全漏洞和质量缺陷问题预先设定好的查询(query)列表。可以查询全面而又广泛的代码安全和质量缺陷,同时使用Checkmarx CxEnterprise CxAudit 审计工具,您可以根据您自己的软件安全、质量保证和业务逻辑需要配置并自定义的查询(Query),以满足公司或者个人特定的代码安全策略及代码安全基线标准要求。
checkmarks的缺陷规则就是一个一个的查询,这个查询定义了如何从数据流网中找到我们关心的数据流。
checkmarks内置了100多个函数,客户可以利用这种函数找到关心的数据流的起点,终点。当然也可以定义净化点,比如设置某个API调用作为一个净化点,就不会报出经过该净化点的安全漏洞。
Checkmarx CxSuite插件组成:
CxManager - 直观的源代码安全扫描结果管理。
CxDeveloper –扫描源代码,定位安全缺陷。
CxViewer - 审查代码扫描结果以便于安全缺陷修复。
CxConsole- 命令行接口实现团队项目集中扫描和自动化。
CxAudit - 调查或者研究源代码,分析技术和逻辑安全问题,定制代码安全查询规则。CxAudit是Checkmarx产品套件CxSuite的一部分。该产品的设计旨在帮助安全风险管理人员编写具体的查询程序来加强公司的最佳实践和遵循标准安全规范,实现和制定公司安全策略,然后将其分配给开发团队进行统一的安全扫描。
支持检测的安全漏洞主要包括:
SQL注入、跨站脚本、代码注入、缓存溢出、参数篡改、跨站请求伪造、HTTP响应拆分、日志伪造、拒绝服务、会话固定、未处理的异常、未释放的资源、未经验证的输入、危险的文件、硬编码密码等等。
Checkmarx的深层次不足:
- 不支持模块引擎语言,比如Velocity、Freemarker、Thymeleaf等;
- 对前后端分离的项目分析无法支持,如后端Spring MVC,前端VUE无法关联分析;
- 不支持 vue、react等框架文件的分析。
- Cheackmarx不会对Spring依赖注入的情况,数据流经常是不完整的,注入的接口类不能进入内部分析,会造成一定的漏报。
- 对一些ORM框架不能进行数据流分析,如Mybatis、Spring data jpa等,实际执行sql操作的类都是运行时产生的,比如mapper接口实现类,Checkmarx不会分析不同的框架,造成了一定的误报。
(结束)