2021年软件测试工具总结——安全性测试工具
无论是早期的互联网时代,还是当今移动互联或万物互联时代,软件服务的安全性都至关重要,这也就迫使我们重视安全性测试。安全性测试一般围绕被保护的资产,通过代码和程序的分析来确定威胁或漏洞的严重程度,以及被利用的可能性和影响,来评估特定威胁或漏洞对企业造成负面影响的风险。除了综合的安全性风险评估之外,安全性测试一般有以下几种类型:
漏洞扫描:由工具自动对代码进行静态分析,以识别软件组件中是否存在已知的漏洞。 渗透测试:是在安全条件下模拟黑客对应用程序、软件、系统或网络进行网络攻击的过程。渗透测试可以发现未知的漏洞,如 zero-day威胁和商业逻辑漏洞,目前人们应用越来越多的渗透测试工具来完成测试任务。 应用程序的安全测试:针对web、Android/iOS移动App等特地的应用进行测试,包括收集这类应用程序的相关信息,发现系统漏洞或缺陷。 API安全测试:识别API和网络服务中的漏洞(如API注入、XML注入等)。API特别容易受到中间人(man in the middle,MiTM)攻击等威胁,如窃听API通信并窃取数据或凭证。 配置扫描,一般根据研究机构或合规标准指定的最佳实践列表来检查系统,识别软件、网络和其他计算系统的错误配置的过程。 安全审计,根据定义的法规和合规标准、安全要求来审查代码或架构,分析安全漏洞,评估硬件配置、操作系统和组织实践的安全状况。
虽然安全性测试工具有不同的分类,但一般可以简单分为以下四类:
动态应用安全测试(Dynamic Application Security Testing,DAST),一般指在测试或运行阶段,使用黑盒方法以发现漏洞的过程,如模拟黑客行为对应用程序进行动态攻击,分析应用程序的反应或动态运行状态,从而确定该应用是否易受攻击,如检测诸如内存损坏、不安全的服务器配置、跨站脚本攻击、用户权限问题、恶意SQL注入和其他关键漏洞等缺陷,如开源的Zed Attack Proxy (ZAP)。其优势:可进行逻辑漏洞检测;不分语言和框架,漏洞好复现;而其劣势:漏洞检出率和第三方框架检测效果较差,漏洞详细度较低;使用时入侵性较高,风险程度高
静态应用安全测试(Static Application Security Testing ,SAST)主要是通过分析应用的源代码或其编译版本(二进制文件)的语法、结构、过程、接口等来发现程序代码存在的安全漏洞,如之前介绍的 Klocwork、Helix QAC、HCL AppScan等,以及国内的腾讯xcheck、Wukong(悟空)等。其优势为:漏洞检出率和覆盖度高;使用时侵入性小,风险程度低;而其劣势有:漏洞检测误报高,耗时久。
交互式应用安全测试(Interactive Application Security Testing,IAST)是通过代理、VPN或者在服务端部署Agent程序,收集、监控应用程序运行时函数执行、数据传输,并与扫描器端进行实时交互,高效、准确的识别安全缺陷及漏洞,同时可准确确定漏洞所在的代码文件、行数、函数及参数,如CodeDx、Checkmarx CxIAST等。IAST相当于是DAST和SAST结合的一种互相关联运行时安全检测技术。其优势:漏洞检测误报率低,检测速度快,漏洞详细度高;而其劣势为:漏洞检测覆盖度较难以保证,支持的语言和框架被严格限制。
软件成分分析(Software Composition Analysis,SCA)是通过分析软件(特别是开源软件包)包含的一些信息和特征来实现对该软件的识别、管理、追踪的安全检测技术,如Synopsys Black Duck、RedRocket-SCA等。SCA理论上看是一种通用的分析方法,可对任何编程语言对象(源代码或编译的二进制文件)进行分析,对关注的对象是从文件内容,以及文件与文件之间的关联关系以及彼此组合成目标的过程细节,从而获得应用程序的画像—–组件名称+版本号,进而关联出存在的已知漏洞清单。
对SAST工具还可以进一步分为三代:
第1代 SAST工具,其特点是:快,但一般只能做风格类检测,缺陷检测误漏报太多(路径敏感检测无法进行),其典型的工具有:SonarQube、PMD、CheckStyle等开源工具。
第2代 SAST工具,既能做风格又能检测缺陷,但精度和效率有折衷,无法做到无误报无漏报,其典型工具有:RedRocket SAST, Coverity, Klocwork, Polyspace等;
第3代 SAST工具,动静结合的分析技术,无误报或低漏报,其典型工具有:NG SAST。
(Gartner对安全性测试工具厂商的能力对比分析)
在安全性测试工具,有一家公司的产品比较齐全,它就是QECon大会共创伙伴:Synopsys(新思),上述图中也显示Synopsys处在这个领域第一位,其主要工具有:
Coverity® (SAST):在编码开发过程中解决编码安全和质量缺陷 Black Duck® (SCA):在应用和容器中保护并管理开源风险 Polaris Code Sight™ IDE 插件:将应用安全性分析无缝集成到 IntelliJ、Eclipse 或 Visual Studio IDE 中 Seeker® (IAST):在 DevOps 流水线中自动执行 Web 安全测试 Tinfoil: 将 DAST 和 API 安全测试集成到开发和 DevOps 工作流中 Defensics® 模糊测试:识别服务和协议中的缺陷和零日漏洞 Red teaming:确保网络、物理和社交攻击面安全 渗透测试:抢在黑客攻击之前找出应用和服务中的漏洞 AppSec 计划制定:在专家的帮助下构建并加速应用安全计划 威胁和风险评估:了解 AppSec 计划需要解决的内外部安全风险
本篇文章介绍十大SAST工具和十大DAST工具
SAST:
| DAST:
|
........... SAST ...........
1. Checkmarx CxSAST
Checkmarx能提供较完整的软件安全测试及其解决方案,将应用安全与DevOps文化结合起来,使得开发人员能够更快地交付安全应用。其中CxSAST是高度准确和灵活的源代码分析产品,能够让组织自动扫描未经编译/构建的代码,识别最流行的编码语言中的数百个安全漏洞。
官网地址:https://checkmarx.com/
2. Codacy
Codacy是一款企业级安全保障工具,能够完成静态分析(安全和性能检查)、代码重复率、代码复杂性和测试覆盖率等分析,支持多种语言(Scala、Java、Java、Python、Ruby、PHP)、上千条规则和灵活定制,能够分析不同分支、忽视不相关的问题保持分析结果简洁、管理用户角色和权限等。
官网:https://www.codacy.com/
GitHub:https://github.com/codacy
3. Coverity
Coverity是一款快速、准确且高度可扩展的静态分析 (SAST) 工具,提供全面广泛的安全漏洞和质量缺陷检查规则,涵盖22种编程语言,超过70余种应用框架及常用的架构即代码(infrastructure-as-code)平台和文件格式,并支持云部署,并通过 CI、SCM、问题跟踪集成和 REST API,将 SAST 嵌入 DevOps 流水线。
官网:
https://www.synopsys.com/software-integrity/security-testing/static-analysis-sast.html
4. INSIDER CLI
Insider 源代码分析工具是一款社区驱动型方案,通过在源代码层级扫描漏洞以支持敏捷且高效的软件开发方法,适用于.NET 框架、JavaScript(Node.js)、Java(Android 与 Maven)、Swift 以及 C# 等。
官网:https://github.com/insidersec/insider
5. Kiuwan
Kiuwan是目前市场上技术覆盖和集成度最高的SAST和SCA平台。通过DevSecOps的方法,Kiuwan获得了出色的基准分数(如Owasp、NIST、CWE等),并提供了丰富的功能,超越了静态分析的范畴,能够满足SDLC中每一个利益相关者的需求。
官网:https://www.kiuwan.com/
6. LGTM.COM
LGTM是一款开源且高效的代码审查工具,可通过变体分析检查代码中的常见漏洞与披露(CVE),同时支持几乎所有主要编程语言,包括 C/C++、Go、Java、JavaScript/TypeScript、C# 以及 Python 等。LGTM 首先使用 CodeQL 技术识别问题、解决问题,并扫描类似的代码模式以避免出现进一步威胁。
官网:https://lgtm.com/
7. Reshift
Reshift 的核心目标是在不影响开发速度的前提下发现安全问题,这也使其成为推广 DevSecOps 的重要选项之一。Reshift 与集成开发环境(IDE)相融合,允许用户在代码审查、编译时以及持续集成的过程中识别漏洞并实时加以修复,所以它是较完美的轻量化 DevOps 安全测试解决方案。
官网:https://www.reshiftsecurity.com/
8. RedRocket-SAST
鸿渐SAST工具运用静态单赋值分析、控制依赖分析、域敏感分析、跨函数指针分析、值依赖分析等多种先进技术,并结合深度学习模式挖掘技术,极大保证分析的效率、精度和广度。支持片段代码检测和逻辑漏洞检测、全面支持国内编码标准,支持跨语言分析及典型框架并完全适配国产环境。
官网:http://www.redrocket.cn/
9. SonarQube
SonarQube 是最著名的静态代码分析工具之一,旨在清理并保护 DevOps 工作流及代码。通过对代码质量的持续分析,SonarQube 会定期检查以检测出 bug 及安全问题。SonarQube支持 27 种编程语言,包括 Java、Python、C#、C/C++、Swift、PHP、COBOL 以及 JavaScript 等,并能在 GitHub、Azure DevOps 等 repo 中直接分析代码,在代码审查期间提供即时反馈。
官网:https://www.sonarqube.org/
10. Veracode
Veracode静态分析工具能为为IDE和CI/CD管道中的开发人员提供快速、自动的反馈,在部署前执行完整的策略扫描,并就如何快速查找、确定优先级和修复问题提供明确的指导,而且误报率低。
官网:http://www.veracode.com
............ DAST ...........
1. Acunetix
Acunetix是有史以来第一个自动Web应用程序安全扫描仪,能够对任何网站或应用程序进行全面检查,足以识别一个框架中超过4500个单独的弱点或逃脱条款,包括各种SQL注入和XML注入等。该工具计划配备一个DeepScan爬虫,用于过滤HTML5网站和AJAX重量级的客户侧SPA。该工具与Linux和Windows操作系统兼容,同时也可以在网络上运行。
官网:https://www.acunetix.com/?ab=v1
2. Burp Suite
Burp Suite 是一个Web应用安全测试工具,其中Burp Proxy允许人工分析人员捕捉程序和目标应用程序之间的所有请求和反应,不仅具有一些基本的功能,如中间人、扫描器和介入者,也有一些高级功能,如爬虫、中继器、解码器、比较器、排序器、扩展器API等。Burp Suite Pro很可能是最神奇、最先进的网络应用程序的渗透测试工具,可以帮助测试人员修复和寻找弱点,并找到被测对象不明显的脆弱面。它是一个由不同的进步设备组成的 "套件",并且,最适合用于渗透测试。
官网:https://portswigger.net/burp
3. Intruder
Intruder是一个具有人工智能的渗透测试设备,它提供行业领先的安全检查、持续的观察能力,设置简单,可以在IT环境中找到各种安全缺陷,包括错误的配置、缺失的补丁、加密的弱点和未经认证区域的应用程序漏洞。此外,这种渗透测试工具的活动路线清晰,接收按上下文优先排序的可操作结果,更容易发现可能面临危险的缺陷,并得到解决这些缺陷的最成熟方法的建议。
官网:https://www.intruder.io/
4. Kali Linux
Kali Linux是一个开源的安全测试平台,包含了超过600种渗透测试工具,这些工具都是针对不同的数据安全工作而配备的,例如渗透测试、安全研究、计算机取证和逆向工程。
官网:https://www.kali.org/tools/
5. MetaSploit
Metasploit是一个开源的、先进且广泛使用的渗透测试框架,具有许多渗透方案的模拟功能,用于离散任务的元模块,如网络分段测试,能够发现超过1500种漏洞。
官网:https://www.metasploit.com/
6. Netsparker
Netsparker是一个最为准确的、简单易用的网络应用程序渗透测试工具,能够扫描任何网络相关的应用程序,覆盖超过1000种漏洞。它突突显其基于证明的扫描技术,它不仅仅是为了识别和区分弱点,而且还提供了一个概念证明,以确保它们不是虚假的报告。Netsparker能够发现网络应用程序中可能存在的SQL注入、XSS和不同的弱点,包括应用程序所提供的服务条件。它还能生成合规性相关的规则,告诉研发人员在当前环境下编写更安全的代码的最佳方法来防止安全缺陷。
官网:https://www.netsparker.com/
7. Nmap
NMap是Network Mapper的缩写。它是一个免费和开源的安全检查工具,用于网络调查和安全评估,如检查开放的端口、监督管理检修时间表、观察主机或管理的正常运行时间。它支持Linux、Windows、Mac OS、AmigaOS等,可用于弄清组织上有哪些主机可以使用、正在运行什么工作框架和版本、正在使用什么样的捆绑通道/防火墙等。
官网:https://nmap.org/
8. SQLmap
SQLmap是一个开源的、流行的且强大的渗透测试工具,用于识别那些影响各种数据集的SQL滥用和SQL注入漏洞。它具有一个强大的漏洞扫描引擎,支持大量的数据库服务,包括MySQL、Oracle、PostgreSQL、MS SQL Server等。此外,该测试工具支持六种类型的SQL注入方法。
官网:https://sqlmap.org/
9. W3af
W3af是一个Python开发的、流行且高效的Web应用渗透测试平台。可以用来检测网络应用程序中的200多种安全问题,包括SQL注入、跨站脚本、缓冲区溢出漏洞、CSRF漏洞、可猜测凭证、未处理的应用错误和不安全的DAV配置等等。它有一个图形和控制中心的用户界面,适用于Windows、Linux和Mac OS。
官网:http://w3af.org/
10. ZAP
ZAP(Zed Attack Proxy)是一个由OWASP开发的、毫无保留的开源网络应用程序安全扫描工具。ZAP支持Windows、Unix/Linux和Mac OS,能够发现网络应用中的各种安全漏洞,支持Web Socket、基于REST的API和动态SSL证书、强制浏览、拦截代理它安装和使用都简单,那些刚接触应用安全的人和专业的渗透分析员都能使用。
官网:https://www.zaproxy.org/
安全性测试工具还可以参考:
https://www.imedita.com/blog/top-security-testing-tools/
https://www.guru99.com/top-5-penetration-testing-tools.html
https://www.testbytes.net/blog/open-source-security-testing-tools/
https://www.cigniti.com/blog/security-testing-tools-need-know/
https://owasp.org/www-community/Source_Code_Analysis_Tools
https://bbs.huaweicloud.com/blogs/detail/293795
2021年软件测试工具总结——单元测试工具 2021年软件测试工具总结——接口测试工具 2021年软件测试工具总结——嵌入式软件测试工具 2021年软件测试工具总结——性能测试工具 敏捷测试流程千万种,开发测试协作第一条 软件测试人员迷茫之中如何找到职业发展的方向? 微访谈:数据驱动的软件研发效能提升