Docker 安全公告
Docker Desktop 4.34.2 安全更新:CVE-2024-8695 和 CVE-2024-8696
最近更新时间 2024 年 9 月 13 日
Cure53 报告了 Docker Desktop 中两个与 Docker 扩展相关的远程代码执行 (RCE) 漏洞,并于 9 月 12 日在 4.34.2 版本中修复。
- CVE-2024-8695:在低于 4.34.2 的 Docker Desktop 中,通过构建的扩展描述/更改日志存在的远程代码执行 (RCE) 漏洞可被恶意扩展滥用。[严重]
- CVE-2024-8696:在低于 4.34.2 的 Docker Desktop 中,通过构建的扩展 publisher-url/additional-urls 存在的远程代码执行 (RCE) 漏洞可能被恶意扩展滥用。[高]
在 Extensions Marketplace 中未找到利用这些漏洞的现有扩展。Docker 团队将密切监控并认真审查发布新扩展的任何请求。
我们强烈建议您更新到 Docker Desktop 4.34.2。如果您无法及时更新,则可以禁用 Docker 扩展作为解决方法。
在强制实施 SSO 时弃用 CLI 上的密码登录
上次更新时间 7月, 2024
首次引入 SSO 强制时,Docker 提供了一个宽限期,以便在对 Docker Hub 进行身份验证时继续允许在 Docker CLI 上使用密码。这是允许的,因此组织可以更轻松地使用 SSO 强制。建议配置 SSO 的管理员鼓励使用 CLI 的用户切换到个人访问令牌,以预期此宽限期结束。
宽限期将于 2024 年 9 月 16 日结束,实施 SSO 时,密码将无法再通过 Docker CLI 向 Docker Hub 进行身份验证。受影响的用户需要切换到使用 PAT 才能继续登录。
在 Docker,我们希望为我们的开发人员和组织提供最安全的体验,而此次弃用是朝着这个方向迈出的重要一步。
Docker 安全建议:runc、BuildKit 和 Moby 中存在多个漏洞
最近更新时间 2024 年 2 月 2 日
Docker 将软件的安全性和完整性以及用户的信任放在首位。Snyk Labs 的安全研究人员发现并报告了容器生态系统中的四个安全漏洞。其中一个漏洞 CVE-2024-21626 与 runc 容器运行时有关,其他三个漏洞影响 BuildKit(CVE-2024-23651、CVE-2024-23652 和 CVE-2024-23653)。我们想向社区保证,我们的团队与报告者和开源维护者合作,一直在努力协调和实施必要的补救措施。
我们致力于维护最高的安全标准。我们已于 1 月 31 日发布了 runc、BuildKit 和 Moby 的修补版本,并于 2 月 1 日发布了 Docker Desktop 的更新以解决这些漏洞。此外,我们最新的 BuildKit 和 Moby 版本包括 CVE-2024-23650 和 CVE-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 版本,请确保更新到最新版本,如下表所示:
如果您无法及时更新到不受影响的版本,请遵循以下最佳实践来降低风险:
- 仅使用受信任的 Docker 镜像(例如 Docker 官方镜像)。
- 不要从不受信任的来源或不受信任的 Dockerfile 构建 Docker 镜像。
- 如果您是使用 Docker Desktop 的 Docker Business 客户,但无法更新到 v4.27.1,请确保启用强化的 Docker Desktop 功能,例如:
- 增强的容器隔离,可减轻 CVE-2024-21626 在从恶意镜像运行容器时的影响。
- Image Access Management 和 Registry Access Management,使组织能够控制其用户可以访问的镜像和存储库。
- 对于 CVE-2024-23650、CVE-2024-23651、CVE-2024-23652 和 CVE-2024-23653,请避免使用来自不受信任来源的 BuildKit 前端。前端镜像通常指定为 Dockerfile 上的 #syntax 行,或者使用
--frontend
标志。buildctl build
命令。 - 要缓解 CVE-2024-24557,请确保在构建镜像时使用 BuildKit 或禁用缓存。在 CLI 中,这可以通过
DOCKER_BUILDKIT=1
环境变量(如果安装了 buildx 插件,则为 Moby >= v23.0 的默认值)或--no-cache flag
.如果您直接或通过客户端使用 HTTP API,则可以通过将 HTTP API 的 API 设置为nocache
自true
或version
自2
对于 /build API 端点。
技术细节和影响
CVE-2024-21626(高危)
在 runc v1.1.11 及更早版本中,由于某些文件描述符泄露,攻击者可以通过导致新生成的容器进程(来自runc exec
) 在主机文件系统命名空间中拥有一个工作目录,或者通过诱骗用户运行恶意镜像并允许容器进程通过以下方式访问主机文件系统runc run
.这些攻击还可以适应覆盖半任意主机Binaries,从而允许完全容器逃逸。请注意,当使用更高级别的运行时(例如 Docker 或 Kubernetes)时,可以通过运行恶意容器镜像而不进行额外配置或在启动容器时传递特定的 workdir 选项来利用此漏洞。对于 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 中,恶意 BuildKit 前端或 Dockerfile 使用RUN --mount
可能会欺骗删除为 mountpoints 创建的空文件的功能,使其从主机系统中删除容器外部的文件。仅当用户使用恶意 Dockerfile 时,才会发生这种情况。
此问题已在 BuildKit v0.12.5 中修复。
CVE-2024-23653(高危)
除了将容器作为构建步骤运行外,BuildKit 还提供了基于构建镜像运行交互式容器的 API。在 BuildKit <= v0.12.4 中,可以使用这些 API 来要求 BuildKit 以提升的权限运行容器。通常,只有在特殊security.insecure
Entitlement 由 BuildKitd 配置启用,并由初始化构建请求的用户允许。
此问题已在 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 中,如果镜像是从头开始构建的,则经典构建器缓存系统容易出现缓存中毒。此外,对一些说明的更改(最重要的是HEALTHCHECK
和ONBUILD
) 不会导致缓存未命中。知道某人正在使用的 Dockerfile 的攻击者可以通过让他们拉取特制的镜像来毒害他们的缓存,该镜像将被视为某些构建步骤的有效缓存候选者。
此问题已在 Moby >= v25.0.2 和 >= v24.0.9 中修复。
Docker 产品会受到什么影响?
Docker 桌面
Docker Desktop v4.27.0 及更早版本会受到影响。Docker Desktop v4.27.1 于 2 月 1 日发布,包括 runc、BuildKit 和 dockerd Binaries补丁。除了更新到此新版本之外,我们还鼓励所有 Docker 用户认真使用 Docker 镜像和 Dockerfile,并确保在构建中仅使用受信任的内容。
与往常一样,您应该在更新之前检查您的作系统(Windows、Linux、Mac)的 Docker Desktop 系统要求,以确保完全兼容。
Docker 构建云
任何新的 Docker Build Cloud Builder 实例都将预置最新的 Docker Engine 和 BuildKit 版本,因此不会受到这些 CVE 的影响。更新也已推出给现有的 Docker Build Cloud 构建器。
没有其他 Docker 产品受这些漏洞的影响。
咨询链接
- 朗克
- 构建套件
- 白鲸
Text4Shell CVE-2022-42889
上次更新时间:2022 年 10 月
CVE-2022-42889 已在流行的 Apache Commons Text 库中发现。此库 1.10.0 及以下版本(不含 1.10.0)受此漏洞影响。
我们强烈建议您更新到最新版本的 Apache Commons Text。
在 Docker Hub 上扫描镜像
在 2021 年 10 月 21 日 1200 UTC 之后触发的 Docker Hub 安全扫描现已生效 正确识别 Text4Shell CVE。此日期之前的扫描不会 当前反映了此漏洞的状态。因此,我们建议 您可以通过将新镜像推送到 Docker Hub 来触发扫描,以查看 漏洞报告中的 Text4Shell CVE。有关详细说明,请参阅在 Docker Hub 上扫描镜像。
受 CVE-2022-42889 影响的 Docker 官方镜像
许多 Docker 官方镜像包含易受攻击的 Apache Commons 文本。下面列出了 Docker 官方镜像 可能包含易受攻击的 Apache Commons Text 版本:
我们更新了 Apache Commons Text 设置为最新版本。其中一些镜像可能不是 由于其他原因而容易受到攻击。我们建议您同时查看上游网站上发布的指南。
日志 4j 2 CVE-2021-44228
上次更新时间:2021 年 12 月
Log4j 2 中的 Log4j 2 CVE-2021-44228 漏洞是一个非常常见的 Java 日志记录库,允许远程执行代码,通常来自攻击者容易获得的上下文。例如,在 Minecraft 服务器中发现了它,它允许将命令输入到聊天记录中,然后将这些命令发送到记录器。这使它成为一个非常严重的漏洞,因为日志记录库的使用非常广泛,并且可能很容易被利用。许多开源维护者正在努力修复和更新软件生态系统。
Log4j 2 的易受攻击版本是版本 2.0 到版本 2.14.1(含)。第一个修复版本是 2.15.0。如果可以,我们强烈建议您更新到最新版本。如果您使用的是 2.0 之前的版本,您也不会受到攻击。
如果您使用这些版本,则可能不会受到攻击,因为您的配置 可能已经缓解了这个,或者你的事情 log 可能不包含任何用户输入。然而,这可能很难验证 而不了解所有可能详细记录的代码路径,以及它们的位置 可能会从中获取输入。因此,您可能希望使用 易受攻击的版本。
漏洞:CVE-2021-45046
作为对 CVE-2021-44228 的更新,版本 2.15.0 中的修复是 不完全的。已发现其他问题,并通过 CVE-2021-45046 和 CVE-2021-45105 进行跟踪。 要更全面地修复此漏洞,我们建议您尽可能更新到 2.17.0。
在 Docker Hub 上扫描镜像
在 2021 年 12 月 13 日 1700 UTC 之后触发的 Docker Hub 安全扫描现已生效 正确识别 Log4j 2 CVE。此日期之前的扫描不会 当前反映了此漏洞的状态。因此,我们建议 您可以通过将新镜像推送到 Docker Hub 来触发扫描,以查看 漏洞报告中的 Log4j 2 CVE。有关详细说明,请参阅在 Docker Hub 上扫描镜像。
受 Log4j 2 CVE 影响的 Docker 官方镜像
上次更新时间:2021 年 12 月
许多 Docker 官方镜像包含易受攻击的 日志 4j 2 CVE-2021-44228。下表列出了 Docker 官方镜像 可能包含易受攻击的 Log4j 2 版本。我们将这些镜像中的 Log4j 2 更新到最新版本。其中一些镜像可能不是 由于其他原因而容易受到攻击。我们建议您同时查看上游网站上发布的指南。
存储 库 | 修补版本 | 其他文档 |
---|---|---|
沙发基地 | 7.0.3 | Couchbase 博客 |
Elasticsearch | 6.8.22, 7.16.2 | Elasticsearch 公告 |
Flink | 1.11.6, 1.12.7, 1.13.5, 1.14.2 | Flink 关于 Log4j CVE 的建议 |
地理网络 | 3.10.10 | Geonetwork GitHub 讨论 |
Lightstreamer (光流) | 等待信息 | 等待信息 |
Logstash | 6.8.22, 7.16.2 | Elasticsearch 公告 |
新4J | 4.4.2 | Neo4j 公告 |
索尔 | 8.11.1 | Solr 安全新闻 |
索纳奎贝 | 8.9.5, 9.2.2 | SonarQube 公告 |
风暴 | 等待信息 | 等待信息 |
注意
尽管 xwiki 镜像可能被检测为易受攻击 通过一些扫描仪,作者认为这些镜像不会受到 Log4j 2 的攻击 CVE 作为 API jar 不包含该漏洞。 Nuxeo 镜像已弃用,不会更新。