「 安全工具介绍 」软件成分分析工具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

相关文章

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

Java中最全最基础的IO流概述和简介案例分析

《Java中最全最基础的IO流概述和简介案例分析》JavaIO流用于程序与外部设备的数据交互,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),处理... 目录IO流简介IO是什么应用场景IO流的分类流的超类类型字节文件流应用简介核心API文件输出流应用文

使用python制作一款文件粉碎工具

《使用python制作一款文件粉碎工具》这篇文章主要为大家详细介绍了如何使用python制作一款文件粉碎工具,能够有效粉碎密码文件和机密Excel表格等,感兴趣的小伙伴可以了解一下... 文件粉碎工具:适用于粉碎密码文件和机密的escel表格等等,主要作用就是防止 别人用数据恢复大师把你刚删除的机密的文件恢

Java中HashMap的用法详细介绍

《Java中HashMap的用法详细介绍》JavaHashMap是一种高效的数据结构,用于存储键值对,它是基于哈希表实现的,提供快速的插入、删除和查找操作,:本文主要介绍Java中HashMap... 目录一.HashMap1.基本概念2.底层数据结构:3.HashCode和equals方法为什么重写Has

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

MySQL慢查询工具的使用小结

《MySQL慢查询工具的使用小结》使用MySQL的慢查询工具可以帮助开发者识别和优化性能不佳的SQL查询,本文就来介绍一下MySQL的慢查询工具,具有一定的参考价值,感兴趣的可以了解一下... 目录一、启用慢查询日志1.1 编辑mysql配置文件1.2 重启MySQL服务二、配置动态参数(可选)三、分析慢查

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

基于Python实现进阶版PDF合并/拆分工具

《基于Python实现进阶版PDF合并/拆分工具》在数字化时代,PDF文件已成为日常工作和学习中不可或缺的一部分,本文将详细介绍一款简单易用的PDF工具,帮助用户轻松完成PDF文件的合并与拆分操作... 目录工具概述环境准备界面说明合并PDF文件拆分PDF文件高级技巧常见问题完整源代码总结在数字化时代,PD