通用漏洞披露 (CVE)

什么是 CVE?

CVE 是公开披露的软件或硬件网络安全缺陷。每个 CVE 都分配有一个唯一标识符(例如,CVE-2024-12345),并包含一个标准化描述,允许组织持续跟踪和处理漏洞。

在 Docker 的上下文中,CVE 通常与基础镜像或应用程序依赖项中的问题有关。这些漏洞范围从轻微的错误到严重的安全风险,例如远程代码执行或权限提升。

为什么 CVE 很重要?

定期扫描和更新 Docker 镜像以缓解 CVE 对于维护安全合规的环境至关重要。忽略 CVE 可能导致严重的安全漏洞,包括:

  • 未经授权的访问:漏洞利用可授予攻击者未经授权的系统访问权限。
  • 数据泄露:敏感信息可能被暴露或窃取。
  • 服务中断:漏洞可能被利用来中断服务或导致停机。
  • 合规性违规:未能解决已知漏洞可能导致不符合行业法规和标准。

Docker 强化镜像如何帮助缓解 CVE

Docker 强化镜像 (DHI) 从一开始就旨在最大限度地降低 CVE 风险。通过采用安全优先的方法,DHI 在 CVE 缓解方面具有以下优势:

  • 减少攻击面:DHI 采用无发行版方法构建,剥离了不必要的组件和包。这种镜像大小的减小(比传统镜像小 95%)限制了潜在漏洞的数量,使攻击者更难利用不必要的软件。

  • 更快的 CVE 修复:DHI 由 Docker 维护,并提供企业级 SLA,持续更新以解决已知漏洞。严重和高危 CVE 会迅速修补,确保您的容器保持安全,无需人工干预。

  • 主动漏洞管理:通过使用 DHI,组织可以主动管理漏洞。镜像附带 CVE 和漏洞暴露 (VEX) 提要,使团队能够及时了解潜在威胁并采取必要的措施。

扫描镜像中的 CVE

定期扫描 Docker 镜像中的 CVE 对于维护安全的容器化环境至关重要。虽然 Docker Scout 已集成到 Docker Desktop 和 Docker CLI 中,但 Grype 和 Trivy 等工具提供了替代扫描功能。以下是使用每个工具扫描 Docker 镜像中 CVE 的说明。

Docker Scout

Docker Scout 已集成到 Docker Desktop 和 Docker CLI 中。它提供漏洞洞察、CVE 摘要以及指向修复指南的直接链接。

使用 Docker Scout 扫描 DHI

要使用 Docker Scout 扫描 Docker 强化镜像,请运行以下命令:

$ docker scout cves <your-namespace>/dhi-<image>:<tag>

示例输出

    v SBOM obtained from attestation, 101 packages found
    v Provenance obtained from attestation
    v VEX statements obtained from attestation
    v No vulnerable package detected
    ...

有关更详细的过滤和 JSON 输出,请参阅 Docker Scout CLI 参考

Grype

Grype 是一款开源扫描器,可根据 NVD 和发行版 advisories 等漏洞数据库检查容器镜像。

使用 Grype 扫描 DHI

安装 Grype 后,您可以通过拉取镜像并运行扫描命令来扫描 Docker 强化镜像:

$ docker pull <your-namespace>/dhi-<image>:<tag>
$ grype <your-namespace>/dhi-<image>:<tag>

示例输出

NAME               INSTALLED              FIXED-IN     TYPE  VULNERABILITY     SEVERITY    EPSS%  RISK
libperl5.36        5.36.0-7+deb12u2       (won't fix)  deb   CVE-2023-31484    High        79.45    1.1
perl               5.36.0-7+deb12u2       (won't fix)  deb   CVE-2023-31484    High        79.45    1.1
perl-base          5.36.0-7+deb12u2       (won't fix)  deb   CVE-2023-31484    High        79.45    1.1
...

Trivy

Trivy 是一款用于容器和其他工件的开源漏洞扫描器。它检测操作系统包和应用程序依赖项中的漏洞。

使用 Trivy 扫描 DHI

安装 Trivy 后,您可以通过拉取镜像并运行扫描命令来扫描 Docker 强化镜像:

$ docker pull <your-namespace>/dhi-<image>:<tag>
$ trivy image <your-namespace>/dhi-<image>:<tag>

示例输出

Report Summary

┌──────────────────────────────────────────────────────────────────────────────┬────────────┬─────────────────┬─────────┐
│                                    Target                                    │    Type    │ Vulnerabilities │ Secrets │
├──────────────────────────────────────────────────────────────────────────────┼────────────┼─────────────────┼─────────┤
│ <namespace>/dhi-<image>:<tag> (debian 12.11)                                 │   debian   │       66        │    -    │
├──────────────────────────────────────────────────────────────────────────────┼────────────┼─────────────────┼─────────┤
│ opt/python-3.13.4/lib/python3.13/site-packages/pip-25.1.1.dist-info/METADATA │ python-pkg │        0        │    -    │
└──────────────────────────────────────────────────────────────────────────────┴────────────┴─────────────────┴─────────┘

使用 VEX 过滤已知不可利用的 CVE

Docker 强化镜像包含签名的 VEX (Vulnerability Exploitability eXchange) 证明,用于识别与镜像运行时行为无关的漏洞。

使用 Docker Scout 时,这些 VEX 声明会自动应用,无需手动配置。

要手动检索支持 VEX 证明的工具的 VEX 证明:

$ docker scout attest get \
  --predicate-type https://openvex.dev/ns/v0.2.0 \
  --predicate \
  <your-namespace>/dhi-<image>:<tag> --platform <platform> > vex.json

例如:

$ docker scout attest get \
  --predicate-type https://openvex.dev/ns/v0.2.0 \
  --predicate \
  docs/dhi-python:3.13 --platform linux/amd64 > vex.json

这将创建一个包含指定镜像的 VEX 声明的 vex.json 文件。然后,您可以将此文件与支持 VEX 的工具一起使用,以过滤掉已知不可利用的 CVE。

例如,对于 Grype 和 Trivy,您可以使用 --vex 标志在扫描期间应用 VEX 声明

$ grype <your-namespace>/dhi-<image>:<tag> --vex vex.json
© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.