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

news2024/11/15 17:17:27

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1606086.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

open Gauss 数据库-05 openGauss数据库备份恢复指导手册

发文章是为了证明自己真的掌握了一个知识,同时给他人带来帮助,如有问题,欢迎指正,祝大家万事胜意! 目录 前言 openGauss数据库备份恢复 1 实验介绍 1.1 关于本实验 1.2 实验目的 2 实验前提 3 物理备份和恢复…

Day3 权限管理

Day3 权限管理 这里会总结构建项目过程中遇到的问题,以及一些个人思考!! 学习方法: 1 github源码 文档 官网 2 内容复现 ,实际操作 项目源码同步更新到github 欢迎大家star~ 后期会更新并上传前端项目 创建管理员…

技术周刊的转变:如何平衡热爱与现实?

大家好,我是那个自己打脸自己的猫哥,本来说周刊不做订阅制的,现在却推出了订阅专栏。今天想为自己辩护一下,同时聊聊技术周刊今后的发展计划。 首先回顾一下我过去的想法吧,然后再解释为什么会突然出现转变。 出于对…

Stable Diffusion 3 API 发布!超越Midjourney v6和DALL-E 3

Stable Diffusion 3 于 2 月首次宣布作为预览版发布。而今天,StabilityAI 正式推出了 Stable Diffusion 3 和 Stable Diffusion 3 Turbo API 的API接口服务。 Stability AI 称仍在持续改进该模型,并没有说明发布日期。模型还没发布,但API先来…

Python | Leetcode Python题解之第28题找出字符串中的第一个匹配项的下标

题目: 题解: class Solution:def strStr(self, haystack: str, needle: str) -> int:# Func: 计算偏移表def calShiftMat(st):dic {}for i in range(len(st)-1,-1,-1):if not dic.get(st[i]):dic[st[i]] len(st)-idic["ot"] len(st)1re…

JS-39-underscore01-初识underscore

一、underscore简介 前面我们已经讲过了,JavaScript是函数式编程语言,支持高阶函数和闭包。 函数式编程非常强大,可以写出非常简洁的代码。例如Array的map()和filter()方法: use strict; var a1 [1, 4, 9, 16]; var a2 a1.ma…

数据结构书后习题

p17 1&#xff0c; 个人解答&#xff1a; int DeleteMinElem(SqList &L,int &min) {int j 0;if (L.length 0){printf("error!");return 0;}int min L.data[0];for (int i 1; i < L.length; i){if (L.data[i] < min){min L.data[i];j i;}}L.dat…

电工与电子技术选择题填空题计算题复习题含参考答案

答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 电工与电子技术复习题 一 . 单选题&#xff08;共 33 题&a…

[渗透测试学习] TwoMillion-HackTheBox

TwoMillion-HackTheBox 信息搜集 nmap扫描一下 nmap -sV -v 10.10.11.221扫描结果 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0) 80/tcp open http nginx 3851/tcp f…

SAP 技巧:如何查询TCODE的节点路径。

目录 SAP 技巧&#xff1a;如何查询TCODE的节点路径。 步骤一&#xff1a;在命令栏里输入&#xff1a;Search_SAP_Menu 会弹出以上页面&#xff0c;然后输入你想查询的T-code。回车。 步骤二&#xff1a;找到正确路径&#xff0c; SAP 技巧&#xff1a;如何查询TCODE的节点路…

0418WeCross搭建 + Caliper测试TPS

1. 基本信息 虚拟机名称&#xff1a;Pure-Ununtu18.04 WeCross位置&#xff1a;/root/wecross-demo 2. 搭建并启动WeCross 参考官方指导文档 https://wecross.readthedocs.io/zh-cn/v1.2.0/docs/tutorial/demo/demo.html 访问WeCross网页管理平台 http://localhost:8250/s/…

变频超声波驱鸟器,变电站驱鸟

随着春夏季来临&#xff0c;各种鸟类活动也愈发频繁。这一时期&#xff0c;变电站内有很多中大型鸟类&#xff0c;选择在户外架空高压裸导线龙门架、主变进线支撑架等重要设备上筑巢停留&#xff0c;它们筑巢所用的枝干和各类杂物&#xff0c;时常会掉落&#xff0c;引发设备短…

SQL Server Management Studio 显示行号

前言 在使用 SQL Server Management Studio (SSMS) 进行数据库管理和查询时&#xff0c;能够看到代码的行号是非常有用的。这可以帮助您更容易地定位代码错误、讨论特定的代码行&#xff0c;或者在执行长查询时快速找到特定行。在本文中&#xff0c;我将向您展示如何在 SSMS 中…

怎么你出的MES方案像屎一样?

最近在一个群里面&#xff0c;大家普遍感受到制定MES技术方案变得越来越困难&#xff0c;客户也变得越来越挑剔&#xff0c;方案的复杂度也在不断增加。在竞标过程中&#xff0c;各方技术水平的差距变得越来越小&#xff0c;这让人们感到相当困扰。考虑到这一问题&#xff0c;我…

OpenHarmony多媒体-ohos_videocompressor

介绍 videoCompressor是一款ohos高性能视频压缩器。 目前实现的能力&#xff1a; 支持视频压缩 使用本工程 有两种方式可以下载本工程&#xff1a; 开发者如果想要使用本工程,可以使用git命令 git clone https://gitee.com/openharmony-sig/ohos_videocompressor.git --…

U盘文件突然消失?别急,这里有数据恢复的终极攻略!

在日常的工作和生活中&#xff0c;U盘几乎成了我们随身携带的“数据小仓库”&#xff0c;存放着各种重要的文件。然而&#xff0c;就在某一天&#xff0c;你突然发现U盘中的文件神秘失踪&#xff0c;仿佛从未存在过一般。这种突如其来的U盘文件消失&#xff0c;无疑让人措手不及…

docker拉取镜像速度慢

解决办法是配置阿里云镜像加速 在docker desktop的docker engine里添加 "registry-mirrors": ["https://owzy8hoh.mirror.aliyuncs.com"] 修改以后重启docker 参考&#xff1a; 【docker】Windows10系统下安装并配置阿里云镜像加速_docker desktop 配置…

MySQL中InnoDB的行级锁

InnoDB 实现了以下两种类型的行锁。 共享锁&#xff08;S&#xff09;&#xff1a;又称为读锁&#xff0c;简称S锁&#xff0c;共享锁就是多个事务对于同一数据可以共享一把锁&#xff0c;都能访问到数据&#xff0c;但是只能读不能修改。 排他锁&#xff08;X&#xff09;&am…

仿真科普|从设计到研发,CAE仿真技术为汽车智造保驾护航

2024年3月28日&#xff0c;对于汽车产业来说&#xff0c;是历史性的一天&#xff0c;作为近年汽车行业发布会流量最大的一次&#xff0c;小米SU7的发布让整个汽车圈为之沸腾&#xff0c;成功收割全平台热搜。时至今日&#xff0c;小米汽车依然热度不减。 随着“蔚、小、理、特…

利用米家通断器与双控开关改造排风扇,或手动或定时运行

改造前的排风扇接线图如下&#xff1a; 改造要求&#xff1a;实现手动与智能运行两种控制方式&#xff0c;互不影响。 改造后的米家通断器与双控开关接线图如下&#xff1a; 默认米家通断器与双控开关都是关闭状态。