代码质量与安全9款流行SAST工具大对比,来看哪一款适合你

静态代码分析也称为静态应用程序安全测试(SAST),它是一组旨在分析应用程序源代码、字节码和二进制文件以识别缺陷和漏洞的技术。简而言之就是在未运行程序的情况下通过对程序的分析,发现程序中潜在的漏洞和安全隐患。

SAST工具的好处

在知道了什么是静态代码分析以及它的好处后,您就有必要了解一下市场上都有哪些好用的SAST工具。

流行的静态应用程序安全测试(SAST)工具

Klocwork:

适用于C、C++、C#、Java、JavaScript、Python和Kotlin,可识别软件安全性、质量和可靠性问题,帮助强制遵守标准。Klocwork专为企业DevOps和DevSecOps构建,可扩展到任何规模的项目,与大型复杂环境、CI/CD等各种开发人员工具集成,并为整个企业提供控制、协作和报告,这使得Klocwork成为静态分析器的上佳选择,它可以保持高开发速度,同时强制执行持续的安全和质量合规性。

Klocwork能够自动化扫描1000多种代码缺陷,包括空指针、资源及内存泄漏、未捕获的异常、除零等。支持静态检测软件应用的安全漏洞,包括SQL注入、被污染的数据、缓存溢出、弱代码实现及其它多种常见应用安全漏洞。

支持语言:C,C++,C#,Java,JavaScript,Python,Kotlin

HelixQAC:

一款适用于功能安全和标准合规性领域的领先静态代码分析器。30多年来,HelixQAC凭借其对C/C++语言深入且精准的分析而享誉业界,并成为需要满足苛刻合规要求的严格监管和安全关键行业的首选静态代码分析器。

HelixQAC提供权威的度量指标分析能力,包括60多种C语言度量和20多种C++度量。并且提供方便的二次开发接口,让软件质量工程师定制符合自身要求的规范。它与VisualStudio和Eclipse完全集成,同时能够与第三方CI(如Jenkins)集成。

HelixQAC已经获得SGS-TüV的一系列功能安全认证,包括IEC61508,ISO26262,EN50128,IEC60880和IEC62304。此外,它也取得了ISO9001|TickITplusFoundationLevel认证。

支持语言:

C,C++11,C++14,C++17,C++20等各种版本的C/C++语言标准

SonarQube:

SonarQube是一个管理代码质量的平台(社区版免费),用于管理代码的质量,它会从多个角度维护检测代码质量,通过插件形式支持多种语言的代码质量管理和检测。它可以安装sonar-cxx插件,内置了一系列C/C++代码检查工具,还可以应用在CI/CD流程中,和Jenkins打通,可以在提交代码后检查代码是否有坏味道,不符合规范的代码就拒绝被合入master。

包括Java、C#、JavaScript、TypeScript、C/C++、COBOL及其他29种语言。

Coverity:

位列IDC前10名软件质量具供应商的静态分析具商,能够快速、准确地分析当今的规模(百万、甚千万的代码)、复杂度代码。Coverity解决了影响源代码分析有效性的很多关键问题:构建集成、编译兼容性、误报率、有效的错误根源分析等。

Coverity误报率小于15%,可与现有环境无缝集成,拥有灵活的可扩展性和强大的可配置性。

JavaScript,Java,PHP,Python,Swift,Go.Net,C,C++,C#,Android,Ruby,Perl,Objective-C,Swift,Kotlin

Fortify:

FortifySoftware为30多种主要语言及其框架提供准确的支持,并提供由行业领先的软件安全研究(SSR)团队支持的敏捷更新。它使您的应用程序符合广泛的漏洞覆盖范围,包括超过1000个SAST漏洞类别,这些漏洞类别能够符合OWASPTop10、CWE/SANSTop25、DISASTIG和PCIDSS等标准。

Fortify的安全编码规则包拥有数十万条规则,覆盖600多种安全漏洞,可以对漏洞进行筛选、排序、过滤,调整级别,并生成报表。

但Fortify误报率和漏报率都较高,并且与DevOps消息传递工具集成不佳,难以集成。它缺少API支持,二次开发难度高。对语言的支持也很落后,不支持Dart编程语言,对IaC的支持也需要扩展到其他平台。

ABAP/BSP、ActionScript、Apex、ASP.NET、C#(.NET)、C/C++、Classic、ASP(带有VBScript)、COBOL、ColdFusionCFML、Go、HTML、Java(包括Android),JavaScript/AJAX,JSP,Kotlin,MXML(Flex),ObjectiveC/C++,PHP,PL/SQL,Python,Ruby,Swift,T-SQL,VB.NET,VBScript,VisualBasic,XML,JSON/YAML、TerraformHCL和Docker(Dockerfile)

Checkmarx:

Checkmarx提供了一个全面的白盒代码安全审计解决方案,帮助企业在软件开发过程中查找、识别、追踪绝大部分主流编码中的技术漏洞和逻辑漏洞,帮助企业以低成本控制应用程序安全险。

lCheckmarxCxSAST扫描源代码高度准确且灵活,也可扫描开源组件、交互式代码和基础架构。扫描的结果能够无缝集成到超过25种开发工作流、环境和基础架构中。Checkmarx支持本地部署、云端部署和混合部署,对APPSec友好。

Checkmarx的误报率较高,许多误报需要人工筛选,并且它扫描API的功能不齐全。在特定用例的情况下,它与CI集成有些困难。

JavaScript,Java,PHP,Python,Swift,GoScala,.Net,C,C++,Android,Ruby,Perl,Groovy

Veracode:

对于寻找企业级SAST工具的公司来说,Veracode是很好的选择。Veracode只针对安全问题,跨流水线执行代码检查,以便发现安全漏洞,并将IDE扫描、流水线扫描和策略扫描作为其服务的一部分。它会创建用于审计的代码评估,作为程序的一部分。

Veracode易于配置和快速上手提供二进制扫描,能够减少对于代码的误报可指出代码中的真实漏洞,并提出解决方案提供可自定义的仪表板,带有直观、友好的用户界面。

JavaScript,Java,PHP,Python,Swift,GoScala,.Net,C,C++,C#,Cordova,Kotlin,Groovy,Titanium

PolySpace:

Mathwork旗下的代码静态检查工具,可以识别嵌入式软件C和C++代码中的运行时错误、并发问题、安全漏洞和其他缺陷。使用静态分析,包括语义分析,PolyspaceBugFinder可分析软件控制流、数据流和过程间行为。它在检测到缺陷之后立即突出显示错误,可在开发过程的早期阶段鉴别和修复Bug。

可检查代码是否符合编码规则标准,如MISRAC、AUTOSARC++14、CERTC、和自定义命名约定。它可以生成报告,其中包括发现的Bug、代码违规和代码质量指标,如圈复杂度。Mathwork通过IECCertificationKit(forISO26262andIEC61508)和DOQualificationKit(forDO-178),可提供对行业标准的支持。

对于嵌入式开发,国内应用较少,且工程搭建配置复杂。不同的芯片、不同的编译器经常在搭建完工程后,编译不能通过,需要修改代码和配置。

支持编译器:

GCC,VisualC++,Clang,Keil,Diab(WindRiver),NXPCodeWarrior,GreenHills,IAREmbeddedWorkbench,TASKING,TexasInstruments,ARM

是什么造就了出色的SAST工具?

支持左移

越早发现编码缺陷,修复该缺陷就越快、越容易。优秀的SAST工具能够与现有的开发人员工作流和工具链集成,支持左移理念。

最大限度降低误报率

检测误报的一种方法是使用已知安全问题的示例应用程序。使用多种工具扫描应用程序,并选择误报率最低的SAST工具。此过程将帮助您评估该工具与规则和策略的配合情况。除此之外,好的SAST还需要能够创建常见误报的知识库,并与团队共享。

与CI/CD有效集成

如果遇到安全问题,CI/CD流水线可能会破坏构建。与此流水线集成的SAST工具能够在开发人员提交存在安全问题的代码时立即警告他们,包括漏洞的详细信息以及如何修复它。

快速扫描

扫描速度在快节奏的DevSecOps环境中至关重要。一旦SAST工具进入流水线的关键路径,慢速扫描就会降低开发人员的工作效率,并可能导致开发人员减少提交频率。或者,有的开发人员会绕过安全测试。

THE END
1.SAST及静态代码分析的工作原理BlackDuck静态应用安全测试 (SAST) 也称静态分析,是一种测试方法,通过分析源代码发现容易让组织的应用受到攻击的安全漏洞。SAST 在编译代码之前扫描应用。它也称为白盒测试。 SAST 解决哪些问题? SAST 在软件开发生命周期 (SDLC) 的早期阶段进行,因为测试时不需要应用运行,并且可以在不执行代码的情况下进行测试。它能帮助开发https://www.synopsys.com/zh-cn/glossary/what-is-sast.html
2.探讨代码质量管理体系建设:从静态分析到持续审查的全流程方案一、静态分析在代码质量管理中的重要性 静态分析是指在代码运行之前对代码进行的一种分析,通过检查代码本身的结构和语法,以发现潜在的问题和错误。静态分析可以帮助我们在代码实际运行https://www.jianshu.com/p/8f19accd1798
3.开源项目SDF常见问题解决方案运行示例代码以确认安装成功。 python examples/example.py 2. OpenVDB 安装问题 问题描述: 项目依赖于 OpenVDB 库,但 OpenVDB 的安装过程可能比较复杂,尤其是对于不熟悉 C++ 编译的用户。 解决步骤: 克隆OpenVDB 仓库: 从GitHub 克隆 OpenVDB 的源代码。 https://blog.csdn.net/gitblog_00673/article/details/144390928
4.虚拟现实开发语言与全面执行计划数据,静态版探索之旅摘要:,,本文探讨了虚拟现实开发语言与全面执行计划数据的关系,并介绍了静态版探索之旅。文章指出,虚拟现实开发语言是实现虚拟现实应用的关键,而全面执行计划数据则为开发过程提供了重要支持。通过静态版探索之旅,可以更好地理解虚拟现实技术的潜力和应用场景。文章强调了虚拟现实技术在当代社会的重要性,并展望了其未来的http://good.hnspacenet.com/post/53295.html
5.modifytextfieldlog·PullRequest!50344·OpenHarmony/此Pull Request 需要通过一些审核项 类型 指派人员 状态 审查 已完成 (1/1) 已完成 (3/3) 测试 已完成 (1/1) +12 -2 frameworks/core/components_ng/pattern/text_field/text_field_event_hub.h 100644 -> 100644 365 371 { 366 372 if (onWillDeleteEvent_https://gitee.com/openharmony/arkui_ace_engine/pulls/50344/files
6.如何利用AIGC完成项目的数据流分析AIGC是一种利用人工智能技术生成内容的技术,包括图像、文本、代码等。通过深度学习模型,AIGC能够自动进行内容生成与优化,提高工作效率和创造力。在数据流分析中,AIGC可以用于自动检测数据流中的异常、预测数据趋势和生成优化方案。 4. 利用AIGC进行数据流分析的方法 https://blog.51cto.com/u_16123429/12789031
7.PolySpace能够发现RunTimeError的静态分析工具PolySpace是一款静态分析测试工具,它能对被测代码进行静态扫描,查找出可能存在Run-Time Error的代码段。我觉得这个功能可以说是创新性的。传统的静态分析工具,比如Logiscope,只能帮助使用人员分析程序的流程结构,统计程序的复杂性,或者是审查代码的编码规范性;而传统的Run-Time Error工具,比如著名的BoundChecker,以及Purifyhttp://www.cnitblog.com/qiuyangzh/archive/2006/01/18/6241.html
8.PolyspacePolyspace 产品系列 Polyspace 产品通过在整个开发生命周期中测试和监控软件质量来保证关键代码的安全。 Polyspace Access 识别编码缺陷,查看静态分析结果,并监控软件质量指标。 Polyspace Code Prover Server 持续并详尽地验证 CI 管道中的关键 C 和 C++ 代码语句。 https://cn.mathworks.com/products/polyspace.html
9.静态代码分析静态代码分析也称静态分析,作为一种软件验证活动,它不要求执行代码,而是通过分析源代码实现质量、可靠性和安全性目的。使用静态分析,您可以识别可能危害您应用安全的缺陷和安全漏洞。静态分析不产生测试用例编写和代码检测配置的开销,因此可以较为经济地衡量和跟踪软件质量指标。 https://ww2.mathworks.cn/discovery/static-code-analysis.html
10.Polyspace静态程序代码分析高效遵循多重规范单是这项改变就为我们整体工作流程带来重大改善,因为它建立了一个闸门机制,确保开发人员只有在他们的程序代码完整通过合适的软件质量目标,并且解决或证明在静态分析找到的任何问题时,才能够成功完成收取要求。 在软件整合及测试期间,Polyspace产品被使用来执行以整合程序代码的软件质量目标为基础的静态分析。在此阶段, https://www.eepw.com.cn/article/202309/450902.htm
11.汽车软件单元测试集成测试系统测试的区别详解静态测试 静态代码测试是一种分析源代码的过程,用于查找潜在的编码错误、代码缺陷和安全漏洞。静态代码测试并不直接运行程序,而是检查代码的结构、语法、命名规范、代码复杂度等方面的问题。静态代码检测可以在软件开发早去提供安全问题反馈,帮助开发人员在编译和运行代码之前发现潜在的问题。 https://www.eet-china.com/mp/a343242.html
12.最新MATLABR2018a/Simulink软件破解版补丁工具爱在灵灵久博客·覆盖率组合功能,可以用来组合多次测试运行(文件的)的覆盖率结果 oPolyspace Code Prover ·用于AUTOSAR软件组件静态分析的AUTOSAR支持 二、软件下载: 登陆官网https://cn.mathworks.com拉至页面底部,用邮箱申请试用软件。 、三、安装教程: 图文教程:https://pan.baidu.com/s/1h0NbgcLV-iVEoLTrprIrSg密码: ctyhttp://blog.az009.com/13951.html
13.代码审计工具汇总linux应用程序windows学会利用自动化代码审计工具、是每一个代码审计人员必备的能力。Fortify SCA Java、JSP、ASP.NET、C#、VB.NET、C、C++、COBOL、ColdFusion https://www.fortify.com Windows、Mac OS X 、 Linux 是一个静态的、白盒的软件源代码安全测试工具Checkmarx CxSuite JAVA、ASP.NET(C#、VB.NET)、JavaScript、Jscript、Chttps://www.163.com/dy/article/G8U4M7BF05319Y7J.html