通用漏洞披露 (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