docker通过sbom获取组件版本和漏洞编号的方法

 更新时间:2025年05月29日 10:41:23   作者:din4e  
本文主要介绍了docker通过sbom获取组件版本和漏洞编号的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

最近做 SCA 测试,需要获取镜像的组件和漏洞,使用 docker scout 工具,通过 sbom 获取组件名称、版本和漏洞编号。

docker scout

获取组件信息

docker scout sbom --format spdx --output 2025.05.25.sbom.spdx.json nginx:stable-perl
    v SBOM of image already cached, 244 packages indexed
    v Report written to 2025.05.25.sbom.spdx.json

使用 SCA 工具处理组件信息。

获取 CVE 编号

在这里插入图片描述

docker scout cves --format sbom nginx:stable-perl > sbom.cve.json

按行输出 CVE 编号

import json
import re
from charset_normalizer import detect

def extract_cve_ids(file_path):
    """
    Extract all CVE IDs from a JSON file.
    """
    cve_pattern = re.compile(r'CVE-\d{4}-\d{4,}')  # Regex pattern for CVE IDs
    cve_ids = []

    # Detect the file encoding
    with open(file_path, 'rb') as file:
        raw_data = file.read()
        detected = detect(raw_data)
        encoding = detected['encoding']

    # Read the JSON file with the detected encoding
    with open(file_path, 'r', encoding=encoding) as file:
        data = json.load(file)

    # Recursively search for CVE IDs in the JSON structure
    def search_cve(obj):
        if isinstance(obj, dict):
            for key, value in obj.items():
                search_cve(value)
        elif isinstance(obj, list):
            for item in obj:
                search_cve(item)
        elif isinstance(obj, str):
            matches = cve_pattern.findall(obj)
            cve_ids.extend(matches)

    search_cve(data)
    return cve_ids

# File path to 1.json
file_path = "sbom.cve.json"

# Extract CVE IDs and print them
cve_ids = extract_cve_ids(file_path)
print("\n".join(cve_ids))

到此这篇关于docker通过sbom获取组件版本和漏洞编号的方法的文章就介绍到这了,更多相关docker sbom获取组件版本和漏洞内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • 重启docker服务应用自启停命令(推荐)

    重启docker服务应用自启停命令(推荐)

    这篇文章主要介绍了重启docker服务应用自启停命令,文中给大家提到了服务器重启后启动Docker命令,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • Docker Compose资源配额管理实现限制容器CPU与内存使用

    Docker Compose资源配额管理实现限制容器CPU与内存使用

    在容器化部署中,资源竞争是最常见的稳定性隐患,当一个服务异常占用CPU或内存时,可能导致整个应用集群异常,本文将系统讲解Docker Compose的资源配额管理方案,感兴趣的可以了解一下
    2026-04-04
  • docker-compose命令如何删除image的镜像

    docker-compose命令如何删除image的镜像

    这篇文章主要介绍了docker-compose命令如何实现删除image的镜像方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • Docker中处理持久化存储(如数据库)的方法详解

    Docker中处理持久化存储(如数据库)的方法详解

    在使用Docker容器时,容器的生命周期通常是短暂的,当容器被删除后,其内部的数据也会随之丢失,然而,对于像数据库这样需要持久化存储数据的应用来说,这是不可接受的,所以本文给大家介绍了Docker中处理持久化存储(如数据库)的方法,需要的朋友可以参考下
    2025-06-06
  • Docker私有仓库的搭建和界面化管理详解

    Docker私有仓库的搭建和界面化管理详解

    这篇文章主要给大家介绍了关于Docker私有仓库的搭建和界面化管理的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Docker具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • docker环境变量配置不生效/ect/profile的解决方法

    docker环境变量配置不生效/ect/profile的解决方法

    docker在使用过程中,有时候自定义容器实例中的某些配置文件,本文主要介绍了docker环境变量配置不生效/ect/profile的解决方法,感兴趣的可以了解一下
    2023-08-08
  • 一文教你如何通过 Docker 快速搭建各种测试环境

    一文教你如何通过 Docker 快速搭建各种测试环境

    这篇文章主要介绍了一文教你如何通过 Docker 快速搭建各种测试环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • docker部署SpringCloud微服务项目方式

    docker部署SpringCloud微服务项目方式

    这篇文章主要介绍了docker部署SpringCloud微服务项目方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 使用Docker命令查看容器最后300行实时日志

    使用Docker命令查看容器最后300行实时日志

    在日常的容器化应用管理中,日志是排查问题、监控运行状态的重要工具,Docker 提供了简便的命令来查看容器日志,帮助开发者和运维人员快速定位问题,本篇博客将详细介绍如何使用 Docker 命令查看指定容器的最后 300 行实时日志,需要的朋友可以参考下
    2025-03-03
  • 使用Docker运行SQL Server的实现

    使用Docker运行SQL Server的实现

    这篇文章主要介绍了使用Docker运行SQL Server的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07

最新评论