工具学习_CVE Binary Tool
1. 工具概述
CVE Binary Tool 是一个免费的开源工具,可帮助您使用国家漏洞数据库(NVD)常见漏洞和暴露(CVE)列表中的数据以及Redhat、开源漏洞数据库(OSV)、Gitlab咨询数据库(GAD)和Curl中的已知漏洞数据来查找软件中的已知脆弱性。该工具有两种主要操作模式:
- 二进制扫描程序:可帮助您确定哪些包可能已作为软件的一部分包含在内。该程序包括 360 检查器,扫描程序主要适用于常见的、易受攻击的开源组件,如openssl、libpng、libxml2和expat。
- 组件列表扫描程序:用于扫描各种格式的已知组件列表,包括.csv、几种linux分发包列表、特定语言的包扫描仪以及几种软件物料清单(SBOM)格式。
它旨在用作您的持续集成系统的一部分,以实现定期漏洞扫描,并为您的供应链中的已知问题提供预警。它还可以用于自动检测组件和创建SBOM。CVE Binary Tool 的工作流程图如下所示:
下载 CVE 数据:CVE 数据来自 NVD、Redhat、OSV、Gitlab 以及 Curl。默认情况下,这每天发生一次,而不是每次运行扫描;首次运行时,下载所有数据可能需要一些时间。
创建/读取组件列表:使用二进制检查器和语言组件列表(如python的requirements.txt)的组合创建组件列表(包括版本);阅读 SBOM(使用标准化软件物料清单格式的现有组件列表。)
创建 CVE 列表:这将查找从现有物料清单中找到或读取的所有组件,并报告与之相关的任何已知问题。
CVE 评估:根据已有的知识对 CVE 的严重程度进行评估。
生成报告:以一种或多种格式(控制台、json、csv、html、pdf)生成报告。
2. 工具使用
2.1 安装 CVE Binary Tool
通过 pip 实现 CVE Binary Tool 的安装,代码如下所示:
pip install cve-bin-tool
首次使用时(默认情况下,每天一次),该工具将从一组已知的漏洞数据源下载漏洞数据。由于NVD的可靠性问题,从3.3版本开始,我们将在https://cveb.in/默认情况下,而不是直接联系NVD。如果您希望直接从NVD服务器获取数据,则必须提供自己的NVD_API_KEY才能使用其API。
2.2 CVE Binary Tool 使用方式
使用二进制扫描程序查找已知漏洞:要在目录或文件上运行二进制扫描程序,请执行以下操作
cve-bin-tool <directory/file>
默认情况下,该工具假设您正在尝试扫描整个目录,但如果您为其提供一个列出依赖关系的.csv或.json文件,它将把它视为物料清单。您还可以直接使用--input-file选项指定物料清单文件,或按照以下说明扫描SBOM。
扫描SBOM文件以查找已知漏洞:要扫描软件物料清单文件(SBOM),请执行以下操作
cve-bin-tool --sbom <sbom_filetype> --sbom-file <sbom_filename>
有效的 sbom_filetype 包括 SPDX、CycloneDX 以及 SWID。扫描 SBOM 文件中的产品名称不区分大小写。SBOM 扫描操作指南提供了其他 SBOM 扫描示例。
生成 SBOM:除了扫描SBOM外,CVE Binary Tool 还可以用于从扫描中生成 SBOM,如下所示
cve-bin-tool --sbom-type <sbom_type> --sbom-format <sbom-format> --sbom-output <sbom_filename> <other scan options as required>
有效的 sbom_type 包括 SPDX 和 CycloneDX,生成的 SBOM 将包括产品名称、版本以及供应商,未提供许可证信息。SBOM 生成指南提供了其他SBOM生成示例。
生成 VEX:除了扫描VEX,CVE二进制工具还可以用于从扫描中生成VEX,如下所示:
cve-bin-tool --vex-type <vex_type> --vex-output <vex_filename> <other scan options as required>
有效的 vex_type 是CSAF、CycloneDX和OpenVEX。VEX 生成指南提供了其他VEX生成示例。
漏洞分类:--triage-input-file 选项可用于在扫描目录时添加额外的分类数据,如备注、评论等,以便输出反映此分类数据,从而节省重新分类的时间(用法:cve bin tool--trianges-input-filetest.vex/path/to/scan)。支持的格式是 CycloneDX VEX 格式,可以使用 --VEX 选项生成。常见的使用方式包括:
- 通过 cve-bin-tool /path/to/scan --vex triage.vex 指令生成 triage 文件
- 使用您最喜欢的文本编辑器编辑 triage.vex,以提供所列漏洞的分类信息。
- 通过 cve-bin-tool /path/to/scan --triage-input-file triage.vex 指令使用 triage 文件作为新的扫描依据。
应该可以在不同运行的 cve-bin-tool 之间或与支持 CycloneDX VEX 格式的其他工具共享 triage 数据。这对于扫描相关产品或容器的团队、出于合规原因需要使用多种工具的团队、拥有提供漏洞分类指导的中央安全策略组的公司等尤其有用。
离线使用:在运行扫描时指定 --offline 选项可确保 cve-bin-tool 不会尝试下载最新的数据库文件或检查该工具的更新版本。
请注意,在工具可以脱机模式运行之前,您需要获取漏洞数据的副本。离线操作指南包含有关如何设置数据库的更多信息。
在 GitHub Action 中使用 cve-bin-tool:如果你想将 cve-bin-tool 工具集成为 github 操作管道的一部分,你可以使用 cve-bin-tool 的官方github action。在此处查找更多详细信息。GitHub Action在安全选项卡上提供报告,该选项卡可供开源项目以及为该访问付费的GitHub客户使用。
如果您希望直接使用该工具,我们还提供了一个GitHub操作示例。对于希望将报告存储在证据柜中的团队或无法访问GitHub安全选项卡的团队来说,这可能是一个不错的选择。
输出选项:cve-bin-tool 默认提供基于控制台的输出。如果要提供另一种格式,可以使用 --format在命令行上指定此格式和文件名。有效格式为 CSV、JSON、console、HTML 以及 PDF。可以使用 --output file 标志指定输出文件名。您还可以使用逗号(',')作为分隔符指定多种输出格式:
cve-bin-tool file -f csv,json,html -o report
通过指定 --VEX 命令行选项,还可以以漏洞交换(VEX)格式报告报告报告的漏洞。然后,生成的VEX文件可以用作 --triange 输入文件,以支持 triange 过程。
如果您希望使用PDF支持,则需要单独安装reportlab库。如果您打算在安装 cve-bin-tool 时使用PDF支持,您可以指定它,并且 report-lab 将作为 cve bin 工具安装的一部分安装:
pip install cve-bin-tool[PDF]
如果你已经安装了cve-bin-tool,你可以在事后使用 pip 添加 reportlab:
pip install --upgrade reportlab
请注意,reportlab 已从默认的 cve-bin-tool 安装中删除,因为它有一个已知的cve关联(cve-2020-28463)。cve-bin-tool 代码使用推荐的缓解措施来限制添加到PDF的资源,以及额外的输入验证。这有点奇怪,因为它描述了PDF的核心功能:外部项目,如图像,可以嵌入其中,因此任何查看PDF的人都可以加载外部图像(类似于查看网页如何触发外部加载)。对此没有固有的“修复”,只有缓解措施,库的用户必须确保在生成时只将预期的项目添加到PDF中。
由于用户可能不希望安装带有开放的、不可修复的CVE的软件,我们选择仅对自己安装了库的用户提供PDF支持。安装库后,PDF报告选项将起作用。
3. 工具配置
您可以使用--config选项为工具提供配置文件。您仍然可以使用命令行参数覆盖配置文件中指定的选项。
相关文章:

工具学习_CVE Binary Tool
1. 工具概述 CVE Binary Tool 是一个免费的开源工具,可帮助您使用国家漏洞数据库(NVD)常见漏洞和暴露(CVE)列表中的数据以及Redhat、开源漏洞数据库(OSV)、Gitlab咨询数据库(GAD&am…...

智观察 | 行业赛道里的AI大模型
“AI改变世界”被炒得热火朝天,结果就换来AI聊天? 实际上,在日常娱乐之下,AI正在暗暗“憋大招”,深入各行各业,发挥更专业的作用。 自动驾驶 最近“萝卜快跑”霸榜热搜长达一周,让无人驾…...

linux 进程 inode 信息获取
根据端口查找 ss -neltup | grep "$port"根据 pid 查找 ss -neltup | grep "pid$pid"根据 inode 查找 ss -neltup | grep "ino:$inode"根据pid查找进程打开的inode ls -al /proc/$pid/fd查看inode信息 cat /proc/$pid/net/tcp | grep $ino…...

计算机网络-网络层
负责在不同的网络之间转发数据包,基于数据包的 IP地址转发,每个数据包可以按照不同路径传输。网络层不负责丢包重传,以及数据包之间数据顺序的的问题。 网络设备 路由器工作在第三层:网络层,能看到网络层的地址&…...

机器学习:识别AI,GraphRAG,LoRA,线性变换,特征
1.AI识别 1.bitgrit 生成式 AI API 文档 生成式 AI 假图像检测 API 可用于以编程方式检测假图像(即由生成式 AI 创建的图像)。2.X Virality Prediction API 旨在预测推文的潜在病毒式传播力。https://bitgrit.net/api/docs/x_virality_prediction 2.Gr…...

阿里云SMS服务C++ SDK编译及调试关键点记录
一. 阿里云SMS服务开通及准备工作 在阿里云官网上完成这部分的工作 1. 申请资质 个人or企业 我这里是用的企业资质 2. 申请签名 企业资质认证成功后,会自动赠送一个用于测试的短信签名 也可以自己再进行申请,需要等待审核。 3. 申请短信模板 企…...

Flutter 正在迁移到 Swift Package Manager ,未来会弃用 CocoaPods 吗?
什么是 Swift Package Manager ?其实 Swift Package Manager (SwiftPM) 出现已经挺长一段时间了,我记得第一次听说 SwiftPM 的时候,应该还是在 2016 年,那时候 Swift 3 刚发布,不过正式出场应该还是在 2018 年的 Apple…...

PDF——分割pdf的10个工具
PDF分割器是一种可用于将PDF文档分割成更小的文档甚至单个页面的工具。分割 PDF 文档的主要原因是为了更容易共享。 但该过程的成功取决于您用于拆分 PDF 的工具。较简单的工具仅提供几个选项,可能并不适合所有类型的文档。我们将在本文中列出的 10 个最佳 PDF 分割…...

深入解析 Nginx 反向代理:配置、优化与故障排除
深入解析 Nginx 反向代理:配置、优化与故障排除 Nginx 是一个高性能的 HTTP 和反向代理服务器,它以其高并发和高可扩展性在业界享有盛誉。反向代理是 Nginx 的重要功能之一,通过反向代理可以实现负载均衡、安全代理、缓存等多种用途。本篇文…...

深度学习入门(一):感知机与输入数据
单层感知机与多层感知机 单层感知机(Single-Layer Perceptron)和多层感知机(Multi-Layer Perceptron,简称MLP)是神经网络的基本形式,用于执行各种机器学习任务,包括分类和回归。它们都基于早期…...

kubernetes 集群组件介绍
kubernetes 集群组件介绍 Kubernetes 架构 在Kubernetes(k8s)集群中,主节点(Master Node)和工作节点(Worker Node)都运行特定的软件组件,它们共同管理和运行容器化的应用程序。以下…...

Java | Leetcode Java题解之第327题区间和的个数
题目: 题解: class Solution {public int countRangeSum(int[] nums, int lower, int upper) {long sum 0;long[] preSum new long[nums.length 1];for (int i 0; i < nums.length; i) {sum nums[i];preSum[i 1] sum;}BalancedTree treap ne…...

开发一个MutatingWebhook
介绍 Webhook就是一种HTTP回调,用于在某种情况下执行某些动作,Webhook不是K8S独有的,很多场景下都可以进行Webhook,比如在提交完代码后调用一个Webhook自动构建docker镜像 准入 Webhook 是一种用于接收准入请求并对其进行处理的…...

【leetcode详解】另一棵树的子树 (C++递归:思路精析 过程反思)
思路详解: 总体框架: 对root树进行先序遍历,如果当前结点(记为cur)的值和subRoot的根节点值相等时,就开始判断 以cur为根节点的树 和 子树 是否结构一样? 如何判断两棵树是否结构完全相同? …...

物联网遇到人工智能,极快的加速物联网时代
近些年物联网已成为众多科技企业的战略目标,如智能家居等,在未来,手机、传感器等智能设备都走进了生活当中,据数据显示已经有80%以上的的智能手机配备了人工智能。人工智能也不陌生,自动驾驶、人脸识别这些应用场景都是…...

Vue3+Ts项目中经常遇到导入组件,vscode报无法找到模块xxx,xxx隐式拥有 “any“ 类型解决办法~
1、报错截图: 2、解决办法:在确保路径正确的情况下,你会在 src 目录下找到一个名为 env.d.ts 的文件(或者类似的名称)。在这个文件中,你可以声明 .vue 文件的模块类型。例如:(这告诉 TypeScript…...

郑州轻工业大学zzulioj1151~1159合集
郑州轻工业大学zzulioj1151~1159合集 郑州轻工业大学zzulioj1151~1159合集 1150数数多少个整数1151大整数加法题目描述1152: 二分搜索1153简易版最长序列题目描述1154: 校门外的树1155字符串比较 多实例题目描述1156单数变复数题目描述1157连续的n个1题目描述1158又是排序&…...

开发框架DevExpress XAF v24.2产品路线图预览——增强跨平台性
DevExpress XAF是一款强大的现代应用程序框架,允许同时开发ASP.NET和WinForms。XAF采用模块化设计,开发人员可以选择内建模块,也可以自行创建,从而以更快的速度和比开发人员当前更强有力的方式创建应用程序。 DevExpress XAF是一…...

程序员短视频上瘾综合症
一、是你疯了还是面试官疯了? 最近有两个学员咨询问题,把我给整得苦笑不得。大家来看看,你有没有同样的症状。 第一个学员说去一家公司面试,第一轮面试聊得挺好的。第二轮面试自我感觉良好,但是被面试官给Diss…...

image.convert()函数转换格式及显示图像的RGB三通道图像
引 言 视觉任务处理的图片按照图像通道深度分为单通道图像和多通道图像。单通道图像有grayscale灰度图、binary二值图、PNG图,多通道图像有三通道24位真彩色RGB图,8位伪彩色图像,YCbCr图像等。本文先介绍各种格式图像的特点,随后讲…...

C语言 ——— 在控制台实现扫雷游戏(一次展开一片,递归实现)
前言 两个数组,一个用来显示在控制台上,一个用来存放雷 两个数组的实际大小为11 * 11 ,而为了方便排查雷的个数,实际使用范围是9 * 9 test.c #include"mine_sweeping.h"void game() {// 存放雷char mine[ROWS][COL…...

el7升级Apache模块编译
1.背景 接续https://blog.csdn.net/nanhai_happy/article/details/140566070,由于升级升级Apache过程中,发现需要使用的mod_wsgi、mod_systemd和mod_cgi模块缺失,故接着解决继续编译生成。 2. 编译mod_cgi、mod_system 2.1 安装依赖 yum …...

Linux系统下的日志管理与ELK Stack实践
关于“Linux系统下的日志管理与ELK Stack实践”,这个主题涵盖了如何在Linux环境中高效地收集、解析、存储及分析日志,以及如何利用ELK Stack(Elasticsearch、Logstash、Kibana)这套工具来实现日志的集中管理和可视化。下面我会简要…...

C++入门基础知识
在之前我们学习了C语言和初阶数据结构的相关知识,现在已经有了一定的代码能力和对数据结构也有了基础的认识,接下来我们将进入到新的专题当中,这个专题就是C。在C中我们需要花费更大的精力和更长的时间去学习这门建立在C语言基础之上的计算机…...

Python爬虫技术 第28节 数据可视化
Python 爬虫设计结合数据可视化是一个非常强大的组合,可以用来分析和展示从网络获取的数据。以下是如何设计一个 Python 爬虫并结合数据可视化的详细步骤: 步骤 1: 确定数据源和目标 首先,确定你想要爬取的数据源和目标。例如,你…...

react中的装饰器
一、初见react装饰器 初初接触react,发现一些神秘符号和语法,觉得很神奇。类似这样: import React, { PureComponent, Fragment } from react; import {Form} from antd;Form.create() class UpdateForm extends PureComponent {。。。 }哇…...

Elasticsearch:用例、架构和 6 个最佳实践
1. 什么是 Elasticsearch? Elasticsearch 是一个开源分布式搜索和分析引擎,专为处理大量数据而设计。它建立在 Apache Lucene 之上,并由Elastic 支持。Elasticsearch 用于近乎实时地存储、搜索和分析结构化和非结构化数据。 Elasticsearch 的…...

tcp常用网络接口 linux环境
TCP(传输控制协议)网络通信是常见的网络应用形式,它提供了面向连接的、可靠的数据传输服务。TCP通信常用的接口主要包括以下几个方面: 常用接口 1. socket() int socket(int domain, int type, int protocol); 功能࿱…...

第10节课:JavaScript基础——网页交互的魔法
目录 JavaScript的作用JavaScript的基本语法基本语法规则变量、数据类型和运算符变量数据类型运算符 实践:使用JavaScript增强网页功能结语 JavaScript是一种高级的、解释型的编程语言,它使得网页能够从静态文档转变为具有动态交互性的应用程序。本节课将…...

springboot+vue+mybatis汽车租赁管理+PPT+论文+讲解+售后
汽车租赁系统是针对目前汽车租赁管理的实际需求,从实际工作出发,对过去的汽车租赁管理系统存在的问题进行分析,完善客户的使用体会。采用计算机系统来管理信息,取代人工管理模式,查询便利,信息准确率高&…...