译者 | 李睿 审校 | 孙淑娟 软件架构师Bob和安全开发工程师Alice是何保一家软件开发初创公司的成员
。以下是用程他们之间关于开发一套新的微服务的对话。 Bob说:“你听到通知了吗 ?序的性客户交易已经敲定。我们可以开始为他们在云平台上使用的安全金融服务开发分析应用程序。” Alice:“太棒了!何保那么应该使用哪种编程语言构建应用程序?用程” Bob
:“还没有确定。它可以基于任何一种软件编程语言 ,序的性但更重要的安全是亿华云它必须是安全的。我们所有的何保系统及其应用程序都应该打上最新的安全补丁,并且软件版本应该始终以正确的用程配置运行。 我会通过电子邮件给你发送详细的序的性业务用例和技术要求。简而言之,安全它将是何保持续集成和交付的快速发展。那么你建议我们使用什么工具进行端到端安全扫描 ?用程” Alice说:“当然
,云计算我会向你发送一份工具清单,序的性这些工具将使我们能够在生产部署之前检测和修复漏洞。我认为需要有一种有前途的方法来扫描和消除代码或应用程序可能带来的网络安全风险
。” Bob说:“太好了
,我们更喜欢采用开源扫描工具,但如果有的话
,你可以列出对流行的第三方专有工具的见解
。” Alice开始探索关于代码扫描主题的各种现有资源。根据Bob提供的免费模板需求规范,她考虑了所有关键领域,例如代码的静态分析
、面向互联网的用户界面(UI)和API端点的动态分析以及依赖包的漏洞扫描。 而几天过去了 ,她仍然感到困惑
,难以做出决定,因为得到的大部分信息都是基于用户角色和软件可用性规范而不是以代码为中心的 ,模板下载虽然这从开发人员角度来看是有用的,并且可以适应需求
。 以下将深入了解各个安全扫描工具内容(这足以帮助Alice做出决定)
。 以下是各种安全扫描工具的类别: WhiteSource具有SAST和SCA功能来执行代码的安全扫描。SAST能力可用于检测源代码中的漏洞
,SCA可用于检测开源依赖项中的漏洞 。WhiteSource帮助开发人员修复漏洞。它与Jenkins、Bamboo
、AzureDevOps、GIT和TFS集成
。 SonarQube是一个用于检查代码质量的开源平台
,并与GitHub
、BitBucket、GitLab、Maven、Gradle
、Travis 、Jenkins 、Bamboo和Azure DevOps集成。SonarQube可以测量关键指标,包括错误、代码缺陷
、安全漏洞和重复代码。SonarQube支持创建SonarQube插件 ,这有助于自定义代码规则。 Code Risk Analyzer获取所有基于Git的代码、配置和部署工件,构建依赖关系图,并运行合规性控制检查管道
。它会生成一个物料清单(BOM)文件,其中列出了所有第三方操作系统包和应用程序包的依赖关系
。它会发现物料清单(BOM)文件中列出的包中的漏洞。Code Risk Analyzer仅支持IBM Cloud®Continuous Delivery托管的github.com存储库、Git存储库和问题跟踪存储库。它可以启用CRA来扫描拉取请求和合并。 HCL AppScan是一个全面的、基于云的应用程序安全解决方案,与构建环境 、DevOps工具和IDE集成 。AppScanon Cloud提供一整套测试技术(SAST、DAST、IAST和开源)以提供最广泛的覆盖范围
。它可以使用AppScan UI设置误报。 Gosec是一个安全工具,可以对Golang项目的安全漏洞进行静态代码分析 。Gosec通过将所有源代码加载到AST(抽象语法树)中来工作,并应用一组内置规则来查找常见错误,例如代码中的秘密。它允许用//#nosecG101G102识别误报 。 Zed Attack Proxy(ZAP)是一种免费的
、开源的动态扫描工具
,由开放式Web应用程序安全项目(OWASP)维护。ZAP专为Web应用程序的渗透测试而设计 。它设置警报过滤器以设置误报。 工具名称 用途 支持的语言 忽略列表 优点 缺点 WhiteSource Scanning 开源库扫描工具
。漏洞通过MITRE和NVD验证 Java、C#、C++、Golang、Node.js、Ruby
、.Net 、Dockerfiles、Javascript 等 Whitesource的配置文件以包含忽略列表 漏洞影响的细节很清楚 ,可用于所有依赖项的许可证类型分类与 Eclipse
、VsCode 、IntelliJ 等集成,问题在存储库中修复后会自动关闭 图像扫描(操作系统包)和源代码扫描不包括在内
。 HCL ASOC 源代码静态扫描和动态扫描工具 Android、Kotlin、Java 、c/c++、Golang
、Groovy 、JS
、Python
、PHP
、Scala、Ruby
、TypeScript等 在UI中标记误报 一款涵盖静态代码和动态代码扫描的工具。 扫描Dockerfile问题误报太多 误报太多。 误报设置适用于行号 ,因此每次行号更改时都必须重新设置误报。 主要关注 SQL 注入和 CSRF 相关漏洞, 不是广泛的源代码扫描。 IBM CRA 依赖扫描。 不是源代码扫描。 使用 security.snyk.io 作为 CVE 数据库 Java, Node.js, Python, Golang, Docker files, Kubernetes, Terraform .cra/.fileignore(可以排除开发依赖项(--excludedev)) 执行基本映像(操作系统包)扫描。 可以集成到管道中
。 自动创建的问题没有很多细节(管道有细节但没有链接到问题)。 修复后的问题不会自动关闭 。 运行管道时可能出现重复
,如果Dockerfile需要传递ARG,需要确保将ARG设置为环境变量
。还可以使用Docker BUILDFLAG环境变量
。 仅支持IBM Cloud® Continuous Delivery托管的Github.com存储库、Git存储库和问题跟踪存储库 。 OWASP ZAP 开源渗透测试工具 Java, Python, Node.js, .NET, PHP或者Go 可以在 UI 中设置误报。 使用配置文件忽略警报。 稳定的渗透测试/动态扫描解决方案。 自动更新和拉取请求分析
。 提供四种不同的扫描模式。 •安全的 •受保护 •标准 •攻击 需要更好的报告格式。 主动扫描很危险,根据应用程序可能会创建/修改/删除数据。 SonarQube 源代码质量和安全扫描工具 。漏洞通过MITRE和NVD验证 Java(包括 Android)、C#、C、C++、JavaScript、TypeScript 、Python、Go、Swift、COBOL、Apex、PHP、Kotlin、Ruby
、Scala 等 没有Sonar可以用来排除扫描代码中的一行 对Java
、C、C++等语言进行广泛的源代码扫描,用于在代码中检测
: •错误 •代码缺陷 •安全漏洞 •重复代码 提供有关如何修复代码的详细信息 根据OWASPTop10和CWETop25标准跟踪项目安全性 。 商业版不支持GitHub集成。 企业版价格高昂。 不扫描依赖项。这需要将插件集成到SonarQube。 定义政策/规则是一项挑战。 测试覆盖报告需要第三方覆盖工具集成。 Gosec GoLang的代码分析工具 。漏洞由NVD验证 GoLang //#nosec G101 可以自定义Gosec以排除或包含某些测试。 gosec-track-suppressions可用于查看所有抑制。 Gosec将在Go模块打开时自动获取正在分析的代码的依赖关系。 支持多种输出格式 ,如text、json
、yaml、csv、sonarqube
、JUnit XML、html和golint。 映射CWE而不是CVE报告每个问题。 尽管Alice之前没有操作安全扫描工具的经验,但她不想尝试每种工具,因为它们会为原型新软件应用程序环境带来集成问题的成本。 安全扫描工具的选择是团队必须做出的重要决定。调查结果将进一步导致关键决策 ,例如在安全扫描失败的情况下阻止代码交付
,或在动态代码扫描的情况下,记录可审计的可追溯过程以确认测试的安全接受(即接受或忽略错误正数)。 而了解这些工具比较的细节之后,Alice将这些工具推荐给Bob,而这些工具很快就能入围
。 对于Bob来说,显著避免使用不良的扫描工具比找到最好的工具更重要
。Alice和Bob为此都很高兴 ,因为可以节省更多的时间,让他们专注于实际业务需求开发产品。 原文标题 :Take Control of Your Application Security,作者:Josephine E. Justin,Deepika Kothamasu,Swathi Pemmaraju
1.类别
2.工具
(1)WhiteSource Scan3.工具比较