最近因为要提高代码安全,需要调查一下市场上的SAST工具,看看是否有哪些工具能够更好滴满足公司提高安全开发和安全集成的需求。经过大量的调查把各种工具的一些特性罗列如下:
参数 | Checkmarx | ShiftLeft | Snyk | Coverity | Veracode | Contrast | Fortify | Sonarqube | CodeQL | Semggrep |
支持语言 | JavaScript, Java,PHP, Python, Swift,Go Scala,.Net, C,C++, Android, Ruby,Perl, Groovy | JavaScript, Java,Golang, Python, Scala,C# | JavaScript, Java,TS, C#, PHP, Python, Ruby,GO | JavaScript, Java,PHP, Python, Swift,Go .Net, C,C++,C# Android, Ruby,Perl, Objective-C, Swift, Kotlin | JavaScript, Java,PHP, Python, Swift,Go Scala,.Net, C,C++,C# Cordova,Kotlin, Groovy,Titanium | Java | JavaScript, Java,PHP, Python, Swift,Go .Net, C,C++,C# Android, Ruby, Objective-C, Swift,Kotlin | JavaScript, Java,PHP, Python, C,C++,C#, JS/TS | JavaScript, Java, Python, Go .Net, C,C++,C#, Ruby, TypeScript | JavaScript, Java,PHP, Python, Go, Kotlin, C,C++,C#, HTML |
是否需要可 构建的代码 | NO | NO | Yes | Yes | NO | NO | Yes | Yes | Yes | NO |
是否支持 扫描二进 制文件 | NO | Yes | NO | NO | Yes | Yes | NO | NO | NO | NO |
是否支持 自定义规 则 | Yes | Yes | NO | NO | Yes | Yes | Yes | Yes | Yes | Yes |
支持的框 架结构 (只列出 常见的 Java和JS 的主要常 用框架) | Struts,JPA, Spring MVC/Boot, iBatis, Hibernate ,Jquery, Node.js, Ajax, Angular.js, Express.js, Handlebars, ReactJS, Vue.js | Struts 2.x, Spring MVC, Spring WebFlux, Node.js, Angular.js, ReactJS, Vue.js | Apache Camel, Struts, Spring MVC, Spring JDBC, React, Vue.js, Express, jQuery | Spring MVC/Boot, HIbernate, iBatis, JPA, Struts, Handlebars, jQuery, Angular.js, vue.js, jQuery | Spring Boot, Spring Core, Spring Data Access, Spring MVC, Spring Security, Struts, Servlets, Hibernate Angular.js, Node,js, React.js, vue.js, Handlebars, Hogan.js, Mustache.js | J2EE, Jsp, Spring MVC | SpringMVC, Node,js, Angular,js, jQuery | Struts, Spring, Hibernate, Thymeleaf Vue.js, Flow | Spring MVC, Spring Boot, Mybatis, iBatis,JPA, Handlebars, jQuery, Angular,js, vue.js, node.js | Vue.js |
是否提供 IDE插件 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
支持CI、 CD集成 | Jenkins, Bamboo, TeamCity, Azure Pipelines, AWS CodeBuild, AWS Code Pipeline, Sonarqube,CLI | Jenkins, Github, Gitlab CI, Azure Pipelines, Bitbucket Pipelines, Bamboo, Circle CI, GoCD, TeamCity, Travis | Jenkins, Circle CI | Jenkins, Azure Devops | CLI | Unknown | Bamboo, Jenkins, Github Action, Gitlab CI, Azuer pipelines, Bitbucket pipelines, AWS | Jenkins, Github Action, Gilab CI, Azure Pipelines, Bitbucket Pipelines | CLI | Unknown |
是否可以 修改漏洞 的修改方 案和漏洞 描述 | Yes | Unknown | Unknown | NO | Unknown | Unknown | NO | NO,不过,可以添加扩展描述。 | Yes | Yes |
在UI中显 示源代码 和调用栈 互动 | Yes | NO | Yes | Yes | Yes | Unknown | Yes | No. Only show the trigger point. | Yes | Unknown |
对于Unknown的部分,后续会再补充,如果您知道一些,也欢迎回复本文章,我看到后,会及时更新。
这里只是列出来参考,具体信息还需要去各个工具的网站消息调查。当然,这几条只是大概了解一个工具是否能够在大方向上满足SAST扫描的需求。关于SAST最终的指标,误报率和漏报率以及扫描速度,还需要亲自去试用并且认真测试才能够拿到一手资料。