在现代的 DevOps 或 DevSecOps 环境中,SCA 激发了“左移”范式的采用。提早进行持续的 SCA 测试,使开发人员和安全团队能够在不影响安全性和质量的情况下提高生产力。前期在博文《「 网络安全常用术语解读 」软件成分分析SCA详解:从发展背景到技术原理再到业界常用检测工具推荐》中介绍了SCA的产生背景、技术原理及主流检测工具,本文结合博主对Black Duck工具的深度使用来展开介绍业界排名 Top 1 的Black Duck工具。
1. 工具的发展历程
Black Duck是一款知名的软件成分分析(SCA)工具,它帮助开发人员和组织识别其软件项目中的开源组件,并管理这些组件带来的法律和安全性风险。
Black Duck Software成立于2002年,总部位于美国马萨诸塞州。该公司专注于提供开源软件管理和安全解决方案。Black Duck的成立初衷是为了帮助企业和开发人员更好地管理日益增长的开源软件使用,特别是在合规性和安全性方面。
在2017年,Black Duck被Synopsys以6.65亿美元收购,成为Synopsys软件完整性集团的一部分。
细心的读者可以从上图中发现,大家耳熟能详的静态代码扫描工具Coverity、Codenomicon旗下的Fuzz测试工具DEFENSICS都早已被Synopsys并购。
此次收购加强了Synopsys在软件安全解决方案领域领导者的地位,并扩展了其产品线。
2. 工具原理
SCA 工具可检查包管理器、清单文件、源代码、二进制文件、容器镜像等。识别出的开源会被编制成物料清单 (BOM),然后与各种数据库进行比较,包括国家漏洞数据库 (NVD)。
这些数据库包含有关已知和常见漏洞的信息。NVD 是美国政府的漏洞存储库。Synopsys 拥有自己的内部漏洞数据库 Black Duck 知识库,这是业内最全面的开源项目、许可证和安全信息数据库。
SCA 工具还可以将 BOM 与其他(通常是商用性)数据库进行比较,以发现代码相关许可证并分析总体代码质量(版本控制、历史贡献等)。通过将 BOM 与数据库进行比较,安全团队能够识别关键的安全和法律漏洞,并迅速采取措施加以修复。
3. 工具能力
Black Duck提供一系列依赖关系发现技术,帮助用户清楚了解应用程序构成,以便他们能够有效评估和管理风险,除此之外,Black Duck提供了一系列功能,以支持开发团队在整个软件开发生命周期中管理开源组件:
- 依赖识别:自动识别软件中的开源组件和依赖关系,包括直接和间接依赖。
- 二进制分析:它为软件工件提供构建后的分析,以检测恶意软件的存在,例如可疑文件、潜在不需要的应用程序和可疑文件结构。扫描报告会呈现二进制文件中包含公网IP,邮箱,密钥等信息,多维度帮忙用户识别文件风险。
- 代码片断分析:片段分析将代码片段(例如由AI编码工具包含的代码片段)与它们的原始开源项目进行匹配,以识别通过片断方式引用开源代码的情况,当前很多SCA工具还不具备的能力,如国内知名开源的OpenSCA工具,其开源版本仅能通过包管理器配置文件来解析依赖,无法识别片断引入的场景。
- CodePrint分析:CodePrint分析是一种方法,它可以检测源文件和目录中的依赖关系,即使这些依赖关系没有被包管理器明确声明。这很重要,因为并非所有代码都包括关于其依赖关系的正确元数据,有些项目可能会在没有使用包管理器的情况下手动包含文件。这种分析有助于确保所有使用的组件都被识别并得到适当管理。
- 容器扫描:容器扫描是一种安全和合规的实践,涉及分析容器镜像以识别开源依赖项。这是逐层进行的,以确保容器中的所有组件都被计入。通过结合二进制分析(查看编译后的组件)和CodePrint分析,这个过程可以识别已声明和未声明的依赖项,这对于维护安全且合规的容器化环境至关重要。
- C/C++扫描:C/C++扫描是一种专门的分析技术,可以准确识别C/C++应用程序中使用的开源依赖项和库。这一点很重要,因为C/C++程序通常不使用包管理器,并且依赖项可以直接包含在源代码中。这种扫描技术帮助开发者和组织管理这些依赖项,跟踪许可,并确保软件符合开源许可和安全政策。
- 许可证合规性管理:分析组件的许可证,确保所有开源组件的使用符合其许可证要求,并避免潜在的许可证冲突,并提供许可证兼容性建议,可自动生成许可证报告。
- 安全漏洞扫描:持续监控开源组件的安全漏洞,并与国家漏洞数据库(NVD)等资源保持同步。
- 风险评估:评估开源组件的安全性和合规性风险,帮助用户确定哪些组件需要优先关注。
- 策略管理:允许用户定义和执行关于组件使用的策略,例如禁止使用某些高风险的组件。
- 版本升级建议:提供组件升级建议,帮助用户迁移到更安全的版本。
- 集成支持:与主流的IDE、CI/CD工具和源代码管理系统集成,以便在开发流程中无缝地执行SCA。结合策略管理功能可防止开发团队使用风险组件,并在发布流程中包含这些组件时阻止构建过程。
- 知识库:提供庞大的开源组件知识库,帮助用户了解组件的详细信息。但是当前知识库是SaaS服务方式提供,不支持私有化部署。
若想了解更多具体细节,可以参阅如下文档:
- Black Duck手册.pdf (访问密码: 6277)
- Black Duck 二进制分析手册.pdf (访问密码: 6277)
- Black Duck 2024年开源软件安全分析报告.pdf (访问密码: 6277)
- Gartner 应用安全测试魔法四象限.pdf (访问密码: 6277)
4. 工具优缺点
工具优点:
- 多语言支持
- 多文件格式支持
- 同时支持源码(源码工程、源码文件、源码片断)SCA、二进制(构建后的软件、固件、安装包)SCA,组件识别能力优秀
- 知识库全面,并且拥有自己的漏洞数据源,漏洞来自于BDSA,由Synopsysy网络安全研究中心提供和维护
工具缺点:
- 知识库不支持离线部署,需要访问SaaS服务
- 工具来自美国,对于有国产化诉求的企业或组织不适合
- 商务较高,让多数中小企业望而却步
5. 参考
[1] Strategic Acquisitions
[2] Software Composition Analysis Language, Package Manager, and File Suppor