Docker 安全公告

Docker Desktop 4.34.2 安全更新:CVE-2024-8695 和 CVE-2024-8696

最后更新于 2024 年 9 月 13 日

Cure53 报告了 Docker Desktop 中与 Docker Extensions 相关的两个远程代码执行 (RCE) 漏洞,已在 9 月 12 日发布的 4.34.2 版本中修复。

  • CVE-2024-8695:通过精心制作的扩展描述/更新日志,恶意扩展可以在 Docker Desktop 4.34.2 之前利用远程代码执行 (RCE) 漏洞。[严重]
  • CVE-2024-8696:通过精心制作的扩展发布者 URL/附加 URL,恶意扩展可以在 Docker Desktop 4.34.2 之前利用远程代码执行 (RCE) 漏洞。[高危]

在扩展市场中未发现利用这些漏洞的现有扩展。Docker 团队将密切监控并认真审查所有发布新扩展的请求。

我们强烈建议您更新到 Docker Desktop 4.34.2。如果您无法立即更新,可以作为临时解决方案禁用 Docker Extensions

SSO 强制启用时 CLI 密码登录弃用

最后更新于 2024 年 7 月

SSO 强制执行首次引入时,Docker 提供了一个宽限期,以便在通过 Docker CLI 对 Docker Hub 进行身份验证时可以继续使用密码。这样做是为了让组织更容易地使用 SSO 强制执行。建议配置 SSO 的管理员鼓励使用 CLI 的用户,在宽限期结束前切换到个人访问令牌 (PAT)

宽限期将于 2024 年 9 月 16 日结束,届时在 SSO 强制执行的情况下,将无法再通过 Docker CLI 使用密码对 Docker Hub 进行身份验证。受影响的用户必须切换到使用 PAT 继续登录。

在 Docker,我们希望为我们的开发者和组织提供最安全的体验,而此次弃用是朝着这个方向迈出的重要一步。

SOC 2 Type 2 证明和 ISO 27001 认证

最后更新于 2024 年 6 月

Docker 很高兴地宣布,我们已获得 SOC 2 Type 2 证明和 ISO 27001 认证,且没有任何例外或重大不符项。

安全是 Docker 运营的基础支柱,并已融入我们的整体使命和公司战略。Docker 的产品是用户社区的核心,而我们的 SOC 2 Type 2 证明和 ISO 27001 认证表明了 Docker 对用户群体持续的安全承诺。

更多信息,请参阅博客公告

Docker 安全建议:runc、BuildKit 和 Moby 中的多个漏洞

最后更新于 2024 年 2 月 2 日

Docker 始终将软件的安全性和完整性以及用户的信任放在首位。Snyk Labs 的安全研究人员在容器生态系统中识别并报告了四个安全漏洞。其中一个漏洞 CVE-2024-21626 与 runc 容器运行时有关,另外三个漏洞影响 BuildKit( CVE-2024-23651CVE-2024-23652CVE-2024-23653)。我们向社区保证,我们的团队正与报告者和开源维护者密切合作,积极协调和实施必要的补救措施。

我们致力于保持最高的安全标准。我们已于 1 月 31 日发布了 runc、BuildKit 和 Moby 的修补版本,并于 2 月 1 日发布了 Docker Desktop 更新,以解决这些漏洞。此外,我们最新的 BuildKit 和 Moby 版本包含了 CVE-2024-23650CVE-2024-24557 的修复程序,这些漏洞分别由独立研究人员和 Docker 内部研究计划发现。

受影响的版本
runc<= 1.1.11
BuildKit<= 0.12.4
Moby (Docker Engine)<= 25.0.1 和 <= 24.0.8
Docker Desktop<= 4.27.0

如果我正在使用受影响的版本,该怎么办?

如果您正在使用受影响的 runc、BuildKit、Moby 或 Docker Desktop 版本,请务必更新到最新版本,链接如下表所示

修补版本
runc>= 1.1.12
BuildKit>= 0.12.5
Moby (Docker Engine)>= 25.0.2 和 >= 24.0.9
Docker Desktop>= 4.27.1

如果您无法及时更新到不受影响的版本,请遵循以下最佳实践来降低风险

  • 仅使用受信任的 Docker 镜像(例如 Docker Official Images)。
  • 不要从未经信任的源或 Dockerfile 构建 Docker 镜像。
  • 如果您是使用 Docker Desktop 的 Docker Business 客户且无法更新到 v4.27.1,请确保启用 加固型 Docker Desktop 功能,例如
  • 对于 CVE-2024-23650、CVE-2024-23651、CVE-2024-23652 和 CVE-2024-23653,避免使用不受信任源的 BuildKit 前端。前端镜像通常在 Dockerfile 中指定为 #syntax 行,或在使用 buildctl build 命令时通过 --frontend 标志指定。
  • 要减轻 CVE-2024-24557 的影响,请确保在构建镜像时使用 BuildKit 或禁用缓存。通过 CLI,这可以通过 DOCKER_BUILDKIT=1 环境变量(如果安装了 buildx 插件,则对于 Moby >= v23.0 为默认值)或 --no-cache flag 来完成。如果您直接使用 HTTP API 或通过客户端使用,可以通过将 /build API endpointnocache 设置为 trueversion 设置为 2 来完成。

技术细节和影响

CVE-2024-21626(高危)

在 runc v1.1.11 及更早版本中,由于某些文件描述符泄露,攻击者可以通过使新生成的容器进程(来自 runc exec)在主机文件系统命名空间中拥有工作目录,或诱骗用户运行恶意镜像并允许容器进程通过 runc run 访问主机文件系统,从而获得对主机文件系统的访问权限。攻击还可以用于覆盖半任意主机二进制文件,从而实现完整的容器逃逸。请注意,在使用更高级别的运行时(例如 Docker 或 Kubernetes)时,可以通过运行恶意容器镜像而无需额外配置,或在启动容器时传递特定的工作目录选项来利用此漏洞。在 Docker 的情况下,也可以在 Dockerfile 中利用此漏洞。

此问题已在 runc v1.1.12 中修复。

CVE-2024-23651(高危)

在 BuildKit <= v0.12.4 中,两个并行运行的恶意构建步骤如果共享具有子路径的相同缓存挂载,可能会导致竞态条件,从而使构建容器可以访问主机系统中的文件。这仅在使用恶意项目的 Dockerfile 构建时才会发生。

此问题已在 BuildKit v0.12.5 中修复。

CVE-2024-23652(高危)

在 BuildKit <= v0.12.4 中,使用 RUN --mount 的恶意 BuildKit 前端或 Dockerfile 可以欺骗用于移除为挂载点创建的空文件的功能,使其删除容器外部主机系统上的文件。这仅在使用恶意 Dockerfile 时才会发生。

此问题已在 BuildKit v0.12.5 中修复。

CVE-2024-23653(高危)

除了将容器作为构建步骤运行之外,BuildKit 还提供了基于构建镜像运行交互式容器的 API。在 BuildKit <= v0.12.4 中,可以使用这些 API 请求 BuildKit 以提升的权限运行容器。通常,只有在 buildkitd 配置和初始化构建请求的用户都启用了特殊的 security.insecure 权限时,才允许运行此类容器。

此问题已在 BuildKit v0.12.5 中修复。

CVE-2024-23650(中危)

在 BuildKit <= v0.12.4 中,恶意 BuildKit 客户端或前端可以精心构造请求,导致 BuildKit 守护程序崩溃并发生 panic。

此问题已在 BuildKit v0.12.5 中修复。

CVE-2024-24557(中危)

在 Moby <= v25.0.1 和 <= v24.0.8 中,如果镜像从头(FROM scratch)构建,经典构建器缓存系统容易受到缓存中毒攻击。此外,对某些指令(最重要的是 HEALTHCHECKONBUILD)的更改不会导致缓存未命中。了解用户所使用 Dockerfile 的攻击者可以通过让他们拉取一个经过特殊构造的镜像来毒化其缓存,该镜像将被视为某些构建步骤的有效缓存候选项。

此问题已在 Moby >= v25.0.2 和 >= v24.0.9 中修复。

Docker 产品受哪些影响?

Docker Desktop

Docker Desktop v4.27.0 及更早版本受到影响。Docker Desktop v4.27.1 已于 2 月 1 日发布,包含了 runc、BuildKit 和 dockerd 二进制文件的修补程序。除了更新到此新版本外,我们鼓励所有 Docker 用户认真使用 Docker 镜像和 Dockerfile,并确保您的构建仅使用受信任的内容。

与往常一样,在更新之前,您应该检查 Docker Desktop 的操作系统系统要求( WindowsLinuxMac),以确保完全兼容。

Docker Build Cloud

任何新的 Docker Build Cloud 构建器实例都将配置最新的 Docker Engine 和 BuildKit 版本,因此不会受到这些 CVE 的影响。现有 Docker Build Cloud 构建器也已推出更新。

其他 Docker 产品不受这些漏洞的影响。

Text4Shell CVE-2022-42889

最近更新日期:2022 年 10 月

在流行的 Apache Commons Text 库中发现了 CVE-2022-42889 漏洞。受此漏洞影响的版本是 1.10.0 之前的版本(不包含 1.10.0)。

我们强烈建议您更新到最新版本的 Apache Commons Text

在 Docker Hub 上扫描镜像

在 2021 年 10 月 21 日世界协调时 12:00 后触发的 Docker Hub 安全扫描现在可以正确识别 Text4Shell CVE。在此日期之前的扫描目前不反映此漏洞的状态。因此,我们建议您通过将新镜像推送到 Docker Hub 来触发扫描,以便在漏洞报告中查看 Text4Shell CVE 的状态。有关详细说明,请参阅在 Docker Hub 上扫描镜像

受 CVE-2022-42889 影响的 Docker Official Images

许多 Docker Official Images 包含易受攻击的 Apache Commons Text 版本。以下列出了可能包含易受攻击的 Apache Commons Text 版本的 Docker Official Images:

我们已将这些镜像中的 Apache Commons Text 更新到最新版本。其中一些镜像可能由于其他原因而不易受攻击。我们建议您也查阅上游网站上发布的指南。

Log4j 2 CVE-2021-44228

最近更新日期:2021 年 12 月

在非常常见的 Java 日志库 Log4j 2 中,Log4j 2 CVE-2021-44228 漏洞允许远程代码执行,通常可以在攻击者容易获得的上下文中进行。例如,在 Minecraft 服务器中发现了此漏洞,允许将命令输入到聊天日志中,然后将这些日志发送到日志记录器。这使得它成为一个非常严重的漏洞,因为日志库被广泛使用,并且可能很容易被利用。许多开源维护者正在努力修复和更新软件生态系统。

Log4j 2 的易受攻击版本包括 2.0 到 2.14.1 版本。第一个修复版本是 2.15.0。如果可能,我们强烈建议您更新到最新版本。如果您使用的是 2.0 之前的版本,则不受影响。

如果您正在使用这些版本,您可能不会受到影响,因为您的配置可能已经缓解了此问题,或者您日志记录的内容可能不包含任何用户输入。但是,如果不详细了解所有可能记录日志的代码路径以及它们可能从哪里获取输入,则很难验证这一点。因此,您可能需要升级所有使用易受攻击版本的代码。

CVE-2021-45046

作为对 CVE-2021-44228 的更新,版本 2.15.0 中的修复程序是不完整的。已识别出更多问题,并以 CVE-2021-45046CVE-2021-45105 跟踪。为了更完整地修复此漏洞,我们建议您尽可能更新到 2.17.0。

在 Docker Hub 上扫描镜像

在 2021 年 12 月 13 日世界协调时 17:00 后触发的 Docker Hub 安全扫描现在可以正确识别 Log4j 2 CVE。在此日期之前的扫描目前不反映此漏洞的状态。因此,我们建议您通过将新镜像推送到 Docker Hub 来触发扫描,以便在漏洞报告中查看 Log4j 2 CVE 的状态。有关详细说明,请参阅在 Docker Hub 上扫描镜像

受 Log4j 2 CVE 影响的 Docker 官方镜像

最近更新日期:2021 年 12 月

许多 Docker Official Images 包含易受攻击的 Log4j 2 CVE-2021-44228 版本。下表列出了可能包含易受攻击的 Log4j 2 版本的 Docker Official Images。我们已将这些镜像中的 Log4j 2 更新到最新版本。其中一些镜像可能由于其他原因而不易受攻击。我们建议您也查阅上游网站上发布的指南。

仓库修补版本其他文档
couchbase7.0.3Couchbase 博客
Elasticsearch6.8.22, 7.16.2Elasticsearch 公告
Flink1.11.6, 1.12.7, 1.13.5, 1.14.2Flink 关于 Log4j CVE 的建议
Geonetwork3.10.10Geonetwork GitHub 讨论
lightstreamer等待信息等待信息
logstash6.8.22, 7.16.2Elasticsearch 公告
neo4j4.4.2Neo4j 公告
solr8.11.1Solr 安全新闻
sonarqube8.9.5, 9.2.2SonarQube 公告
storm等待信息等待信息

注意

尽管 xwiki 镜像可能被一些扫描器检测为存在漏洞,但作者认为这些镜像不受 Log4j 2 CVE 的影响,因为 API jar 包不包含该漏洞。 Nuxeo 镜像已被弃用,将不再更新。

页面选项