「 安全工具介绍 」软件成分分析工具Black Duck,业界排名TOP 1的SCA工具

2024-04-19 00:44

本文主要是介绍「 安全工具介绍 」软件成分分析工具Black Duck,业界排名TOP 1的SCA工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在现代的 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

这篇关于「 安全工具介绍 」软件成分分析工具Black Duck,业界排名TOP 1的SCA工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/916222

相关文章

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

Olingo分析和实践之EDM 辅助序列化器详解(最佳实践)

《Olingo分析和实践之EDM辅助序列化器详解(最佳实践)》EDM辅助序列化器是ApacheOlingoOData框架中无需完整EDM模型的智能序列化工具,通过运行时类型推断实现灵活数据转换,适用... 目录概念与定义什么是 EDM 辅助序列化器?核心概念设计目标核心特点1. EDM 信息可选2. 智能类

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

Olingo分析和实践之ODataImpl详细分析(重要方法详解)

《Olingo分析和实践之ODataImpl详细分析(重要方法详解)》ODataImpl.java是ApacheOlingoOData框架的核心工厂类,负责创建序列化器、反序列化器和处理器等组件,... 目录概述主要职责类结构与继承关系核心功能分析1. 序列化器管理2. 反序列化器管理3. 处理器管理重要方

基于Python实现简易视频剪辑工具

《基于Python实现简易视频剪辑工具》这篇文章主要为大家详细介绍了如何用Python打造一个功能完备的简易视频剪辑工具,包括视频文件导入与格式转换,基础剪辑操作,音频处理等功能,感兴趣的小伙伴可以了... 目录一、技术选型与环境搭建二、核心功能模块实现1. 视频基础操作2. 音频处理3. 特效与转场三、高

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自