1.灵脉SAST
悬镜安全Xmirror公司产品
核心能力
Al多模检测引擎
轻量级检测引擎检出速度更快,并支持不编译检测和编译检测,检测场景灵活。
核心引擎均内置大量第三方库并支持常用框架,支持过程间污点跟踪分析和API扫描识别敏感参数,检出结 果更全面精准。
深度融合SCA
融合SCA 双倍Al驱动引擎进行同步检测,并支持组件漏洞可达性分析,一次检测双重安全。
多维检测分析
从检测语言、缺陷类型、缺陷等级、OWASP TOP10、缺陷趋势等维度全面分析软件安全状况,通过丰富的视 图直观展示检测情况,快速定位至常发缺陷问题。
检测项目管理
支持以项目组形式进行代码审计项目管理,支持对多部门、多项目组的团队级代码审计管理功能。
个性化规则定制
支持自定义缺陷规则清单、规则模板、白名单、文件路径过滤等内容,并支持灵活设定污点跟踪参数,在高效 筛选和过滤潜在安全漏洞的同时精准地追踪和定位代码污点数据流,从而大幅提升安全缺陷的排查效率和追溯 的准确性。
生成定制化报告
可灵活配置报告内容,包括跟踪路径、修复建议、审计日志等,生成多格式、多维度的定制化报告。
产品价值
快速精准
提供快速检测能力,检测速度可达百万行/小时;
基于Al大模型智能聚类分析,检测结果精确,各语言误报率不超过15%,漏报率不超过13%。
全面覆盖
提供7000+典型缺陷检查规则;
支持C/C++、Java、Python、GO、VB.NET、PHP、JavaScript、CSS、Scala、Kotlin等30+主流开发语言; 支持CERT、CWE、OWASP TOP10等安全标准,及GJB-8114、MISRAC2012 等军工、汽车行业标准;
支持SVN、Github、Gitlab、Gitee、Gerrit等源码仓库工具的集成配置;
支持禅道、Jira、Bugzilla等项目与事务跟踪系统对接,支持Jenkins、Gitlab-CI、蓝鲸等流水线的集成; 支持IntelliJIDEA、Eclipse、Visual Studio Code等IDE的插件集成;
支持邮箱、企业微信、钉钉的推送服务。
易用
支持多种语言混合检查,无需繁琐配置即可对源代码和二进制制品进行扫描;
内置海量规则和适配多种应用场景的规则集,覆盖最新的安全漏洞和编码实践; 提供详尽的缺陷修复建议和缺陷闭环审计流程,真正实现开箱即用。
闭环
提供从检测到审计修复全流程操作;
支持多维度质量统计报告,提供概要和详细报表两种类型。
2、Coverity
https://www.synopsys.com/zh-cn.html
美国Synopsys公司产品,国内注册新思科技公司
支持C、C++、Java、C#、javascript、Ruby、Python语言,支持C# 7、VS2017、Clang 4.0、gcc7等编译器
。能够发现导致系统崩溃的缺陷(内存错误、逻辑错误、指针错误等)安全性问题和并发方面缺陷。
强调了有多种引擎:路径流程引擎(对应控制流图);数据跟踪引擎(整型和布尔型数据分析);统计引擎;过程间调用引擎(文件或工程级函数调用关系图);数据传播引擎(过程间调用和数据追踪引擎的结合),上下文敏感的过程间分析能力。类型流程引擎(类层次关系分析);加速引擎(消除冗余路径)、增量分析引擎(通过缓存数据分析变化后的数据)。提出了软件DNA图谱概念。具有足够的构建系统和源代码信息,编译器生成可执行代码的数据,能够从软件DNA图谱构建一个执行程序。
Coverity提供先进的和可配置的用于检测软件语义缺陷和安全隐患的静态源代码分析解决方案。
主要不足时需要配置编译器。误报率比较低,但是漏报率较多,互联网企业用得较多,但是在联网情况下,可能出现泄漏代码问题。华为购买了Coverity,但是出现了安全问题,曾出现升级时代码被传到国外服务器。
3、Klocwork
官网:http://www.klocwork.com/
美国rogue wave公司产产品。
Klocwork支持的语言种类多,能够分析C、C++和Java代码;
国内用的最为广泛的静态分析工具,由加拿大北电于1996年研发,是中国最早的能够检测语义缺陷的静态分析工具。2015年版本号为V10,也就是大家常说的K10,目前最新版可能是K12
能够发现的软件缺陷种类全面,既包括软件质量缺陷,又包括安全漏洞方面的缺陷,还可以分析对软件架构、编程规则的违反情况;
软件分析功能全面,既能分析软件的缺陷,又能进行可视化的架构分析、优化;
能够分析软件的各种度量;
能够提供与多种主流IDE开发环境的集成;
能够分析超大型软件(上千万代码行)。
在程序生成前尽快找到问题,意味着之后更少的测试和较少影响成本和进度。它会继续持续集成,只有Klocwork支持流行的CI(Continuous Integration)工具,执行分析提交期间的渐进式代码变化,跟上快速的发布周期。Klocwork在提交之前、提交期间和提交之后识别开发者眼中的关键安全性、可靠性和代码标准问题。
总结
非侵入式检测
准确率达到90%
描述非常清晰,详细的问题产生流程跟踪(具体每一步骤所涉及的源代码文件、行数),基本上一看就清楚问题的产生来源)
跨文件/模块的分析能力,对于大型软件非常重要
主要不足是Klocwor误报率比较高,升级费用很高,客户被绑架。对License控制较为严格,用户退出一个license后,其他人要使用需要等7天才能使用。
4、Checkmarx
https://www.checkmarx.com/
以色列CheckmarxCxSuite的产品。
主要功能是查找安全漏洞、质量缺陷、逻辑问题和后门代码。是一个独特的源代码分析解决方案,该工具可用于识别、跟踪和修复源代码中技术上和逻辑上的缺陷,比如软件安全漏洞、质量缺陷问题和业务逻辑问题等。
毋须构建或编译软件项目的源代码,Checkmarx CxEnterprise通过虚拟编译器自动对软件源代码分析,并直接建立了代码元素及代码元素之间关系的逻辑图。然后Checkmarx CxEnterprise对这个内部代码图进行查询。
Checkmarx CxEnterprise包含针对所有编程语言已知数百个安全漏洞和质量缺陷问题预先设定好的查询(query)列表。可以查询全面而又广泛的代码安全和质量缺陷,同时使用Checkmarx CxEnterprise CxAudit 审计工具,您可以根据您自己的软件安全、质量保证和业务逻辑需要配置并自定义的查询(Query),以满足公司或者个人特定的代码安全策略及代码安全基线标准要求。
Checkmarx CxEnterprise的扫描结果可以以静态报表形式展示,也可以通过可以对软件安全漏洞和质量缺陷在代码的运行时的数据传递和调用图跟踪的代码缺陷的全过程,同时还可以提供对安全漏洞和质量缺陷进行修复提供指导建议。也可以对结果进行审计,从而消除误报。
5、Fortify
美国HP_fortify,重点是安全漏洞的检测。Forify 支持语言超过20种,是检测工具中支持语言最多的工具。
内使用最为广泛的静态分析工具,虽然支持很多种安全漏洞,但需要用户做很多的二次开发工作。
不足是误报率和漏报率都比较高。目前在国内代理商以光盘价格出货。如果企业只是想少花钱,引入一个安全扫描工具,倒是一个好的选择。
6、Testbed
美国LDRA Testbed/TBrun 软件测试产品功能:编码规则、度量、覆盖率、生成测试用例。
前身为Liverpool大学开发,能够支持C/C++数千种条目的规则检测,包括MISRA C/C++, GJB5369等,是最早进入中国市场的静态分析工具,在军队、军工广泛使用,但其技术仅支持编码规则类检测,无法进行语义缺陷分析,导致一些常用的运行时缺陷无法发现或者较高误漏报,由此市场占有率逐步下降。截止到2015年其版本号为9.5。
创景公司是总代理。目前很多代理商代理该工具销售,军工企业、汽车制造等采购该工具较多。
主要采用DERA(欧洲防务标准)和MISRA(汽车软件标准),GJB5369。判断是否违反编程规则,只能算是语义语法检测工具,无法满足安全检测需要。原来不支持GJB 8114,最新版本也刚刚加入对GJB 8114的支持。支持Ada、C、C++、Cobal、Coral 66、Fortran、Pascal、PL/1等语言
7、PinPoint
源伞科技由香港科大团队创立的, 用自动程序分析技术保障软件质量。307个C/C++缺陷检测器,覆盖95条CWE规则。
该工具研发上投入上还是欠缺,虽然采用了主流的检测引擎,但是打磨的不太好,对于100万行代码可能需要超过10小时的检测,这在工程上基本是无法接受的。
8、C++ test
美国Parasoft公司研发的支持C、C++静态分析的工具,该工具除了可以检测编码规则外,还能检测少量的语义缺陷,此外能够进行测试用例生成,进行单元测试。
Parasoft C++test 是一款自动化测试工具,自动测试C/C++类、函数或部件,而不需要编写测试用例、测试驱动程序或桩调用代码。
主要用于嵌入式软件单元级别测试。
9、PC-Lint
PC-Lint 是GIMPEL SOFTWARE公司开发的C/C++软件代码静态分析工具,它的全称是PC-Lint/FlexeLint for C/C++,PC-Lint 能够在Windows、MS-DOS和OS/2平台上使用,以二进制可执行文件的形式发布,而FlexeLint 运行于其它平台,以源代码的形式发布。PC-lint 在全球拥有广泛的客户群,许多大型的软件开发组织都把PC-Lint 检查作为代码走查的第一道工序。PC-Lint不仅能够对程序进行全局分析,识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针以及冗余的代码,还能够有效地帮你提出许多程序在空间利用、运行效率上的改进点。
PC-Lint和FlexeLine是强大的静态分析工具,检查C、C++源代码,寻找错误,小故障,不一致,不可移植的结构,冗余代码等。
PC-Lint 能够检查出很多语法错误和语法上正确的逻辑错误,PC-Lint 为大部分错误消息都分配了一个错误号,编号小于1000的错误号是分配给C 语言的,编号大于1000的错误号则用来说明C++的错误消息。下表列出了PC-Lint 告警消息的详细分类:
10、QAC
英国PRQA公司成立于1986年,总部位于英国Hersham。主要编码规则测试。QAC/QAC++能够对C/C++代码规则进行自动检查,报告所违反的编程标准和准则。侧重于MISRA规则((ISO,MISRA C,JVF,EC++等)。能够发现1300多种C语言问题、800多种C++的问题,可以支持所有编译器的扩展、配置简单灵活,分析速度非常快,分析报告可以是excel、word、pdf、图表等多种形式,在线帮助相关联,可以及时得到问题的解释和示例。。QAC/QAC++提供了编程规则的二次开发接口,允许添加其它的自定义的编程规则。提供几十种C/C++复杂度度量,包括圈复杂度、静态路径统计和Myer's interval等,还可以扩展定制的复杂度度量。
QAC/QAC++能够提供另外两种静态分析的能力:软件结构分析和质量度量.
软件结构分析包括:函数控制结构图、函数调用树、数据引用关系图,文件包含关系。供多种多样的可视化输出,包括函数结构图、函数调用树、外部参考、文件包含关系和统计的度量分析。
可用于Windows和Unix平台,有方便易用的GUI图形界面,可以和流行的开发环境集成。QAC支持的语言有C、C++、Java、Fortran;
QAC可支持的平台有Microsoft Windows、Sun Solaris、HP-UX、Redhat Linux、Slackware Linux。
QAC根据严重程度从低到高分为0~9级,9级为最严重,0级为最轻微。
9级为ERRORS,必须先修复9级的错误,才能做其他级别的代码静态分析。
11、AppScan
IBM 安全类工具。对网站和移动应用进行扫描,识别安全漏洞并给出修复建议。
IBM Security AppS增强网站应用和移动应用的安全,提高应用安全程序管理,加强合规性。通过在使用前扫描你的网站和移动应用,AppScan使你可以识别安全漏洞并产生报告和修复建议。
IBM工具,在国内销售情况不是太好,该工具市场占用率极低,基本上被淘汰出具。
12、codesonar
商业,免费30天试用,在Jenkins插件中。静态分析工具,实现了几个静态分析工具基准。寻找静态内存,资源管理,并发性和其它缺陷的工具。
CodeSonar,GrammaTech公司的王牌静态分析SAST工具,识别那些可能导致系统崩溃的错误、意外行为和安全漏洞。
CodeSonar被证明可以提供最深层的静态分析,能够寻找比市场上其他的静态分析工具更多的重要缺陷。Code Sonar实现了最好的几个静态分析工具基准,寻找静态内存、资源管理、并发性和其他缺陷。
通过分析源代码和二进制包,CodeSonar使团队可以分析完整的应用程序,使你可以控制你的代码供应链,从而在程序开发生命周期早期移除成本最高的最难找的缺陷
但是通过笔者实际上运用该工具,基本上扫描不出多少缺陷和漏洞。
13、PVS-Studio
是一个C、C++、C#源代码程序的错误检测工具,进行静态代码分析,产生一个报告帮助程序员寻找和修复错误。
14、OpenLogic
扫描源代码和二进制文件,确认开源代码和授权,管理开源政策和审批,报告安全漏洞,以及提供开源技术支持。
15、cppcheck
免费的C++代码检测工具
16、cpplint
cpplint 是 一个python脚本, google使用它作为自己的C++ 代码规范 检查工具.如果你的C++代码遵循的也是 google 的C++代码风格, 那么这个脚本对你来说就非常实用.
19、FindBugs
FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。在FindBugs的GUI中,需要先选择待扫描的.class文件(FindBugs其实就是对编译后的class进行扫描,藉以发现一些隐藏的bug。)。如果你拥有这些.class档对应的源文件,可把这些.java文件再选上,这样便可以从稍后得出的报告中快捷的定位到出问题的代码上面。此外,还可以选上工程所使用的library,这样似乎可以帮助FindBugs做一些高阶的检查,藉以发现一些更深层的bug。选定了以上各项后,便可以开始检测了。
可以发现许多代码中间潜在的bug。比较典型的,如引用了空指针(null pointer dereference), 特定的资源(db connection)未关闭,等等。如果用人工检查的方式,这些bug可能很难才会被发现,或许永远也无法发现,直到运行时发作…当除掉了这些典型的(classic) bug后,可以确信的是,我们的系统稳定度将会上一个新的台阶。
FindBugs的运行环境可能是这四个工具之中最苛刻的了。它工作在j2se1.4.0或以后的版本中,需要至少256MB内存。它的安装非常简单,下载之后简单的解压即可。为了与ant配合使用,它提供了对应的ant task。
20、FindSecBugs
Find-Sec-Bugs 是一款本地 bug 扫描插件 “FindBugs-IDEA” 的 Java 安全漏洞规则扩展库,它支持在多种主流 IDE 环境进行安装:Eclipse, IntelliJ, Android Studio 和 NetBeans。
扫描范围:只扫描 Java 代码,支持主流的 Java 开发框架,比如 Spring-MVC, Struts 等。
扫描漏洞类型:通过扫描源代码,能够发现128种不同的安全漏洞类型。
FindSecBugs检测效率比较慢,误报率和漏报率相对比较高。国内有些安全厂商集成了该工具,市场上销售。
20、PMD
开源检测工具。PMD的运行环境是j2se1.3或以后版本,安装过程同样也是解压即可。对应ant task的使用:
检测效果不是太理想。
21、Polyspace
软件运行时错误检测工具.运行时错误(Run-time Errors)就是软件在动态运行时出现的错误,是所有的软件错误中最具风险的。根据ANSI C的定义,C语言中的典型运行时错误主要是:
运行时错误属于潜在的威胁,广泛的存在各种软件中。根据Berkeley大学与 IBM Watson的研究报道指出所有IBM大型软件的漏洞中,30%-40%是运行时错误引起的。
PolySpace使用语义分析技术,它依靠大量的数学定理提供的规则分析软件的动态行为。语义分析技术没有使用简单的穷举法,却有能力在更普通的模式下表达程序的状态,还能提供规则进行巧妙的处理。简单来说,语义分析技术可以通过静态的方法,能够发现动态的运行时错误。PolySpace根据软件的源代码,对软件进行抽象,这种突破性的方法使得程序员在写代码的同时,就能精确的而且自动的查明软件的运行时错误。
支持Ada语言。
22、Infer
Infer是facebook开源的一款代码静态分析工具,现支持的语言有Java、Objective-C、C和C++; 对Android和Java代码可以发现null pointer exceptions和resource leaks等;对iOS、C和C++代码可以发现memory leak等。infer只支持Mac和Linux系统
23、BlueMorpho(闪蝶)
BlueMorpho是独立运行的B/S程序,安装简单,无需额外配置参数文件。
在Windows下运行Bluemorpho windows安装包,注意有32位和64位两个版本,
安装完成后,在开始-程序-BlueMorpho文件夹里运行Sart bluemorho server启动分析server.
Server启动后,在开始-程序-BlueMorpho文件夹里运行BlueMorpho即可访问闪蝶源码分析平台。
BlueMoropho提供两种方式上传source code, 手工上传和同步从Mainframe下载COBOL源码。
代码上传或下载到BlueMorpho以后,即可点击任意程序进行源码分析。
24、腾讯 TscanCode
TscanCode支持以下类型规则扫描:
空指针检查,包含可疑的空指针,判空后解引用比如Crash等共3类subid检查。
数据越界,Sprintf_S越界共1类subid检查。
内存泄漏,分配和释放不匹配同1类subid检查。
逻辑错误,重复的代码分支,bool类型和INT进行比较,表达式永远True或者false等共18类检查。
可疑代码检查,if判断中含有可疑的=号,自由变量返回局部变量等共计15类检查。
运算错误,判断无符号数小于0,对bool类型进行++自增等,共计11类检查。
25、阿里 P3C是Java编码规范
代码规范检查插件p3c,是根据《阿里巴巴Java开发手册》转化而成的自动化插件。目前主要阿里系的公司内部使用为主。
26、360fireline 火线
360火线(Fireline)是360公司技术委员会牵头,Web平台部Qtest团队开发的一款免费静态代码分析工具。主要针对移动端Android产品进行静态代码分析。其最为突出的优点就是资源泄漏问题的全面检测。同时,火线与360信息安全部门合作,推出了一系列针对移动端安全漏洞的检测规则。360火线提供免费使用,扫描速度快,并支持Android Studio插件,Jenkins插件,Gradle部署等多种集成方式。
火线目前是360公司发布流程中必不可少的环节,在每次代码编译审核时提供静态代码分析检测,为代码审计人员、开发人员分别提供审核和修改代码的依据。目前火线在360发布流程中已累计运行超过500天,扫描文件数2千万+,扫描代码量超过45亿行。火线最近推出的Android Studio插件360 Fireline Plugin下载量已达到4000+。
火线拥有四大类规则,分别为安全类,内存类,日志类,基础类。
• 安全类:根据360信息安全部门最权威的SDL专门定制,每一条SDL都有真实的攻击案例
• 内存类:各种资源关闭类问题检测(本次评测的重点)
• 日志类:检测日志输出敏感信息内容的规则
• 基础类:规范类、代码风格类、复杂度检查规则
(详见官网:http://magic.360.cn)
Github上搜索TestCasesProject,可以找到他们上传的testcase,c语言和Java语言