如何评价 SonarQube?
SonarQube 是一种流行的开源代码质量工具,也执行安全分析,非常适合大多数团队,但是,对于将安全视为重要要求的团队来说,它会有所不足,并且必须由更强大的安全分析工具来补充或取代。
什么是 SonarQube
SonarQube 最初是作为源代码质量分析工具诞生的,然后迅速成为最常用的 DevOps 工具之一,用于获取有关编码最佳实践、约定和代码性能的建议。最近在 2018 年,添加了一些安全功能。随着时间的推移,由于应用程序安全测试 (AST) 工具的普遍采用以及对发布安全代码的重要性的更高认识,SonarQube作为安全工具的受欢迎程度也有所提高。
SonarQube 是一个开源版本和几个商业产品,包括一个企业版本。
用于 AppSec 的 SonarQube
SonarQube 包含一组静态分析 (SAST)规则,用于查找应用程序代码中的安全漏洞,但SonarQube 不是专门为安全分析构建的解决方案。作为参考,在 600 多条 Java 规则中,不到 50 条规则被视为安全漏洞。
静态分析 (SAST) 的工作原理是查看应用程序的源代码并模拟应用程序的执行以查找可能表明存在安全风险的可疑模式。SonarQube 使用静态污点跟踪,这有助于发现一些比简单的正则表达式匹配更细微的风险,但众所周知会产生大量的误报,必须由专家手动验证才能对开发人员有所帮助。
一些高级静态数据流技术在开源版本中不可用,需要付费的企业许可证订阅。
您的团队应该使用SonarQube吗?
现代软件开发过程是一项复杂的操作,需要多个团队和工具。每个应用程序都有自己的稳定性、性能和安全要求,具体取决于业务用例。
在这种情况下,很难广泛推荐或阻止特定工具。让我们来看看 SonarQube 作为安全分析工具的优缺点,并提供一些通用指南。
SonarQube 优点
超多语言支持:
SonarQube 支持超过 25 种编程语言。但是,某些语言仅在企业版中可用。
长期开源项目:
SonarQube 品牌受到许多团队的信任,并已得到验证。它是最受推荐的免费应用程序安全测试解决方案之一。很容易下载和实验来评估适合度。
轻松集成:
Sonarqube 可以轻松集成到大多数 CI/CD 管道、IDE 和 DevOps 工具链中。
SonarQube 的缺点
误报和低检测率:
根据OWASP 基准,一种衡量安全工具准确性的科学方法,SonarQube 报告了近 20% 的误报。有关更多详细信息,请参阅 OWASP 基准测试部分。
基于扫描的方法:
SonarQube 通过离线扫描代码来工作。如果项目很复杂,这个过程会很慢,并且会延迟开发过程。
需要访问源代码:
SonarQube 需要直接访问应用程序的源代码。这意味着它无法验证预编译的依赖项,例如外部合作伙伴提供的开源包、遗留代码和模块。目前,很多代码检测工具可以检测源代码或者编译后的文件。
结果很快过时:
应用程序更改时,SonarQube 结果已过时,必须执行新的扫描过程。这让每个人都感到沮丧,因为没有人愿意在可能已经改变的结果上浪费时间。
不适用于生产系统:
由于扫描方法和需要访问源代码,SonarQube 不适用于生产系统。