发布日期: 2026 年 10 月 2 日
风险等级: 高危(High)
漏洞编号: CVE-2026-92543
涉及镜像: library/docker — 轩辕镜像 · Docker Hub
CVSS: 7.6(High,CVSS 4.0)
披露时间: 修复随 Docker Engine 29.8.2 于 2026 年 9 月 30 日发布;GHSA 发布于 2026 年 10 月 1 日
相关公告: GHSA-7cfq-22r6-qp73 · Docker Engine 29.8.2 发行说明 · docker-v29.8.2
一、漏洞概述
Docker Engine 在判断一个镜像仓库主机名是不是 insecure registry 时,使用 DNS 的任意匹配:只要解析结果里有一个地址落在 insecure 网段,就把这个主机名当成 insecure。引擎默认把环回网段 127.0.0.0/8 和 ::1/128 算进 insecure 范围。从配置里删掉 insecure-registries 并不能去掉这两段,它们是引擎自己加进去的。
连接仓库时,传输层会重新按主机名拨号,而不是只连那个落在环回网段里的地址。因此,恶意 DNS 如果对同一主机名同时返回一个环回地址和一个攻击者控制的地址,引擎就可能跳过证书校验,并回落到 HTTP。
影响有两面:仓库认证信息(经 X-Registry-Auth 发送的凭据)可能被发到持有无效证书的攻击者主机;攻击者也可能用恶意镜像替换原本可信的 tag,写进本地镜像库。
利用前提是能够操控该仓库主机名的 DNS 解析,攻击复杂度高(CVSS 中的 Attack Complexity 为 High)。按 digest 引用镜像可以约束镜像被替换,但不能单独防止凭据泄露。
二、漏洞状态
统计截止: 2026 年 10 月 2 日(UTC+8)
| 项目 | 状态 |
|---|---|
| 漏洞细节 | 已公开(GHSA-7cfq-22r6-qp73、Engine 29.8.2 发行说明) |
| 漏洞类型 | 证书校验被 insecure registry 判定绕过(CWE-295) |
| 受影响版本 | Docker Engine < 29.8.2;Go 模块 github.com/moby/moby/v2 < v2.0.0-beta.25 |
| 官方补丁 | Docker Engine 29.8.2;Go 模块 v2.0.0-beta.25 |
| 前置条件 | 能够让仓库主机名的 DNS 同时解析出环回地址与攻击者地址 |
| CISA KEV | 未列入 |
三、影响范围
1. 版本与发行形态
| 发行形态 | 受影响范围 | 修复 |
|---|---|---|
| 宿主机上的 Docker Engine / Moby | 29.8.2 之前 | 29.8.2 或更高 |
官方镜像 docker(含 dind,在容器里跑引擎) | 镜像内引擎 < 29.8.2 | 标签 29.8.2 或更高(Hub 已有 29.8.2、29.8.2-dind) |
引用 github.com/moby/moby/v2 的程序 | < v2.0.0-beta.25 | v2.0.0-beta.25 |
引擎跑在宿主机上时,升级对象是宿主机的 dockerd,不是把业务容器镜像重新拉一遍。
2. 典型受影响场景
- 仓库主机名的 DNS 可以被攻击者影响(恶意解析器、被污染的响应、不可信的上游 DNS)
- dockerd 能够向外连接到攻击者给出的地址
- 拉取私有仓库时会附带 registry 凭据
只把镜像改成 digest 引用,可以降低 tag 被替换后仍被当作原镜像使用的可能,凭据仍可能在错误的连接上发出。
四、修复建议
1. 升级 Docker Engine 到 29.8.2 或更高(推荐)
| 形态 | 最低建议安全版本 |
|---|---|
| 宿主机 Docker Engine | 29.8.2 |
官方 docker 镜像中的引擎 | 29.8.2 / 29.8.2-dind |
按你的安装方式升级宿主机引擎(软件源、官方安装脚本或厂商安装包),然后执行:
bashdocker version
确认 Server 版本为 29.8.2 或更高。
在容器里运行 Docker Engine(包括 dind)时,将官方镜像标签固定到 29.8.2 或更高。
Docker Hub: docker
轩辕镜像: library/docker
bashdocker pull docker.xuanyuan.run/library/docker:29.8.2
dind 使用 docker.xuanyuan.run/library/docker:29.8.2-dind。这条拉取更新的是「容器里的引擎镜像」,不会把宿主机上已安装的 dockerd 升上去。
2. 发行说明中的其他修复
29.8.2 同时修复了发行说明里列出的其他 Engine 问题,并把内置 BuildKit 更新到 v0.33.1。这一 BuildKit 版本覆盖缓存被篡改(CVE-2026-93318)和 --cdi-disabled 导致的 daemon 崩溃(CVE-2026-93316)。本次升级目标以 CVE-2026-92543 为准。
五、临时缓解措施
在完成升级之前:
-
让仓库主机名只解析到可信的非环回地址
使用可信 DNS,或在本机 hosts 中把仓库主机名固定到预期地址。官方说明:只要该主机名还能解析出环回地址,即为仓库配置的可信 CA 也不能挡住这次跳过证书校验。 -
限制 dockerd 的出站连接
只允许访问可信的仓库地址。 -
需要防镜像替换时,按 digest 引用
digest 引用不能单独防止凭据泄露,只能作为镜像替换之外的补充。
从 insecure-registries 配置中删掉条目不能关闭本问题,因为引擎默认仍把 127.0.0.0/8 和 ::1/128 当作 insecure。
六、与轩辕镜像用户的相关说明
轩辕镜像提供的是镜像加速与拉取服务,不替代宿主机 Docker Engine 的升级。
- 官方引擎镜像站内页:library/docker。在容器中运行引擎时,拉取
docker.xuanyuan.run/library/docker:29.8.2(dind 为29.8.2-dind)。 - 加速拉取这个镜像不会升级宿主机上的 dockerd。宿主机请把 Engine 升到 29.8.2 或更高。
- 配置与排错见 轩辕镜像使用手册、镜像拉取 FAQ。
七、参考链接
- GitHub Security Advisory:GHSA-7cfq-22r6-qp73
- 发行说明:Docker Engine version 29 · docker-v29.8.2
- NVD:CVE-2026-92543
- Docker Hub:docker
- 轩辕站内镜像页:library/docker
- 项目主页:https://github.com/moby/moby
轩辕镜像安全团队
2026 年 10 月 2 日
评论交流
免责声明
本博客文章所提供的内容、技术方案、配置示例及部署指南等信息,仅供学习交流和技术参考使用。文章内容基于发布时的技术环境和版本信息编写,可能因时间推移、技术更新或环境差异而存在不适用的情况。
用户在参考本博客内容进行部署操作前,应当充分了解相关技术风险,并建议在测试环境中进行充分验证和测试,确认无误后再考虑在生产环境中使用。生产环境部署前,请务必进行数据备份,并制定相应的回滚方案。
用户因使用本博客内容进行部署操作而产生的任何损失、数据丢失、系统故障、安全风险或其他问题,均由用户自行承担全部责任。轩辕镜像官方不对因使用本博客内容而产生的任何直接或间接损失承担责任。
本免责声明的最终解释权归轩辕镜像官方所有。
