Docker Engine 29.x 授权插件绕过与 docker cp 漏洞
Moby / Docker Engine 29.x 在 2026 年修复了授权插件绕过、BuildKit 问题和 3 项归档处理漏洞。CVE-2026-41567 可在宿主机上以 root 执行代码,但需要恶意镜像和压缩归档上传同时成立。
段子原句“Docker 29 + Kubernetes”
- 编号
CVE-2026-34040CVE-2026-33997CVE-2026-41567CVE-2026-41568CVE-2026-42306- 严重度
- 最高 CVSS 3.1 8.8(CVE-2026-34040)
- 利用状态
- 未见利用未见利用:官方未报告在野利用。利用需要特定配置或操作者触发。
- 对段子公司
- 29.5.1 之前的 29.x 都受 3 项归档处理漏洞影响。AuthZ 绕过只影响依赖请求体做授权判断的插件。
- 影响范围
- 官方未公布受影响主机数。Kubernetes 的 CVE-2026-19444 是 Windows 上的
kubectl cp问题,与 Docker 29 无关。 - 修复版本
- →29.5.2(含 29.5.1 安全修复和回归修复)
- →至少 29.3.1(AuthZ 与 BuildKit)
结论
2026 年 Moby/Docker Engine 29.x 至少修复了授权插件绕过和 docker cp 相关漏洞。[1] [2] 这些问题需要特定配置或操作者触发,官方未报告受影响安装数或在野利用。升级到 Engine 29.5.1 可修复 5 月披露的三项归档处理漏洞,升级到 29.3.1 可修复 3 月披露的问题。[1] [2]
事件经过
这不是单一事故,而是 2026 年 Moby 29.x 连续披露的安全问题。2026-03-25,Moby 发布 GHSA-x744-4wpc-v9h2,标记 CVE-2026-34040;条件满足时,请求体可在转发给 AuthZ 插件前被丢弃。[3]
2026-05-18,Moby 披露三项 docker cp 漏洞,并在 29.5.1 修复。它们分别可能造成宿主机 root 代码执行、任意空文件或目录创建、以及 bind mount 重定向。[1] [4] [5] [6]
此外,29.3.1 同期修复了插件安装权限校验和 BuildKit 文件路径处理问题。它们不是授权插件绕过,也不是同一成因。[2]
技术细节
| 编号 | CVSS | 受影响范围 | 根因及效果 | 修复版本 |
|---|---|---|---|---|
| CVE-2026-34040 | 8.8 High,CVSS 3.1 | Docker Engine / Moby 小于 29.3.1 | 特制请求使 daemon 将缺少请求体的请求转发给 AuthZ 插件。依赖请求体作判断的插件可能放行本应拒绝的操作。 | 29.3.1 |
| CVE-2026-33997 | 未评分 | Engine 小于 29.3.1 | docker plugin install 的权限验证可被部分绕过。 | 29.3.1 |
| CVE-2026-33748 | 未评分 | BuildKit,随 Engine 29.3.1 更新 | Git URL #ref:subdir 片段校验不足,可越出预期仓库范围读取文件。 | 29.3.1 中的 BuildKit 修复 |
| CVE-2026-33747 | 未评分 | BuildKit,随 Engine 29.3.1 更新 | 不可信 frontend 可将文件写到 BuildKit state 目录之外。 | 29.3.1 中的 BuildKit 修复 |
| CVE-2026-41567 | 7.2 High,CVSS 3.1 | Engine 小于 29.5.1 | daemon 以宿主 root 执行从容器文件系统解析出的 xz 或 unpigz 等解压程序,可导致容器到宿主机代码执行。 | 29.5.1 |
| CVE-2026-41568 | 6.1 Moderate,CVSS 3.1 | Engine 小于 29.5.1 | docker cp 建立挂载点时存在 TOCTOU 符号链接竞态,可在宿主机创建任意空文件或目录。 | 29.5.1 |
| CVE-2026-42306 | 7.2 High,CVSS 3.1 | Engine 小于 29.5.1 | docker cp 建立 bind mount 时存在符号链接竞态,可把挂载导向宿主机任意路径。 | 29.5.1 |
CVE-2026-34040 仅影响使用 AuthZ 插件的部署。攻击者还需有向 Docker API 发请求的本地权限。[3] 29.3.1 修补了请求体转发逻辑。[2] [3]
CVE-2026-41567 需要恶意容器镜像,并需要操作者向容器上传压缩归档。普通 docker cp 默认传输未压缩 tar,不受该条件影响。[4] CVE-2026-41568 和 CVE-2026-42306 需要容器进程持续替换挂载目标路径中的符号链接,并由操作者发起 docker cp 或调用归档 API。没有 volume mount 的容器不受两项竞态问题影响。[5] [6]
影响范围
披露覆盖 Docker Engine / Moby 29.x 的多类功能。公开公告没有提供受影响主机数、用户数、下载量、数据外泄量或经济损失数字。[1] [2] [3]
CVE-2026-41567 可能造成宿主机 root 级代码执行,但需恶意镜像和压缩归档上传同时成立。两项 docker cp 竞态需容器挂载与路径替换时序条件。CVE-2026-34040 仅影响把请求体用于授权判断的 AuthZ 插件配置。[3] [4] [5] [6]
Docker Desktop 与 Engine 需区分。Docker 官方公告将 Desktop 漏洞单独列出,例如 4.86.0 修复的 CVE-2026-17106;目前查到的 Engine GHSA 未声明 Docker Desktop 版本范围。[7] 因此不能据此断言 Desktop 全部受影响或全部不受影响。使用 Desktop 内置 Engine 的用户应升级 Desktop,并确认随附 Engine 修复版本。
未找到官方报告称上述漏洞已遭在野利用。公开资料也没有可靠证据量化利用事件。
Kubernetes 官方 CVE feed 列有 CVE-2026-19444,描述为 Windows 上 kubectl cp 路径穿越。它是 Kubernetes kubectl 问题,不是 Docker Engine 29 漏洞。[8] 未找到同期 Kubernetes CVE 与这些 Moby 漏洞存在共同根因或依赖关系的证据。
时间线
- 2026-03-25 UTCMoby 发布 CVE-2026-34040 安全公告。修复版本为 29.3.1。[3]
- 2026-03-31 UTCNVD 为 CVE-2026-34040 记录发布日期,并列出 Engine 小于 29.3.1。[9]
- 2026-05-18 UTC
- 2026-05-20 UTCDocker 发布 Engine 29.5.2,修复 29.5.1 引入的 docker cp 回归。[2]
- 2026-08-10 UTCDocker Desktop 4.86.0 修复独立的 CVE-2026-17106。[7]
修复与缓解
- 将 Docker Engine 升级到 29.5.2 或更高版本。29.5.2 包含 29.5.1 安全修复及回归修复。[1] [2]
- 至少升级到 29.3.1,修复 CVE-2026-34040、CVE-2026-33997 和列出的 BuildKit 问题。[2] 未升级的 29.4.x 仍低于 29.5.1,因此仍受
docker cp三项漏洞影响。 - Docker API 仅向可信用户开放。AuthZ 插件不得单独依赖可能缺失的请求体作关键授权判断。[3]
- 只运行可信容器镜像。不要把压缩归档上传给不可信容器。[4]
- 不要对不可信运行容器使用
docker cp。使用 AuthZ 插件限制PUT /containers/{id}/archive和HEAD /containers/{id}/archive。[5] [6] - Desktop 用户应更新到当前受支持版本,并核实捆绑 Engine 版本。官方针对 CVE-2026-17106 给出的 Desktop 修复版本为 4.86.0。[7]
对段子中公司的影响
段子明确部署 Docker 29,因此如果实际版本低于 29.3.1,且启用了依赖请求体判定的 AuthZ 插件,CVE-2026-34040 就可能相关。若版本低于 29.5.1,并有恶意容器、volume mount、路径竞态或压缩归档上传条件,docker cp 漏洞也可能影响宿主机。[3] [4] [5] [6]
“Docker 29”不是足够精确的版本信息。29.3.1 之后仍需更新到 29.5.1 或更高版本以覆盖后续 docker cp 修复。Kubernetes 和 Traefik Ingress 的存在不会自动触发这些漏洞;漏洞入口是 Docker API、容器镜像和 docker cp 归档处理。Traefik 的 mTLS fail-open 可能扩大未经信任请求到达内部服务的风险,但不能替代触发条件,也不会单独构成利用证据。
存疑与未验证
- 未找到官方确认的在野利用、公开 PoC 造成的事件数或受害组织数。
- 未找到漏洞造成的数据泄漏、财务损失或受影响下载量统计。
- GHSA 给出披露日但未明确时区。本报告按 UTC 日期呈现,不推定精确时刻。
- 未找到把 Moby Engine GHSA 的适用版本映射到各 Docker Desktop 版本的官方矩阵。
- Kubernetes 的 CVE-2026-19444 涉及
kubectl cp,但未验证其与 Docker Engine 事故有关。
参考资料
调研截止 2026-10-22 UTC+8 · 未验证的内容已在正文中标注 · 数字以原始来源为准