Docker Hub 中的一个漏洞使得一个用户能够以另一个用户的身份推送、拉取或删除镜像。Docker 于 9 月 30 日修复了该漏洞,并表示没有发现任何人利用该漏洞的证据。
该漏洞存在于将个人账户转换为组织的功能中,Docker 在 10 月 12 日的安全公告中表示。转换将账户的个人访问令牌(PAT)转移给指定为组织所有者的用户。PAT 用于替代注册表中的密码,创建每个令牌的人仍然可以使用它。
访问仅限于注册表。它没有影响 Docker Hub 的网页界面,也无法用于更改密码、电子邮件地址或双因素设置,或接管账户。
Docker 将该漏洞标记为 CVE-2026-105445,并将其评级为关键。它在 10 月 13 日发布的 CVE 记录中给该漏洞的 CVSS 评分为 9.4。
该漏洞从 2024 年 8 月 26 日开放,直到修复,持续了两年多。Docker 在 Docker Hub 本身进行了修复,因此无需安装更新。
Docker Hub 无法将一个存储库从一个账户移动到另一个账户。用户需要将个人账户转换为保持相同名称的组织,并必须指定一个现有账户作为其所有者。
每个个人访问令牌作为拥有它的账户,在创建令牌时选择的权限级别下运作。在漏洞开放期间,转换更改了每个令牌记录的所有者,并保持其秘密不变。
攻击者可以利用这一点,在他们控制的账户上创建一个令牌,将该账户转换为组织,并将另一个用户指定为其所有者。然后,该令牌将在注册表中以该用户的身份工作。
根据 Docker 和报告该漏洞的研究人员的说法,指定的所有者没有被要求确认更改,也没有收到通知。自 2024 年 8 月以来,Docker 的转换页面上一直包含“新所有者会收到通知电子邮件”这句话。
在令牌的权限级别内,转移的令牌可以在指定所有者的存储库和所有者可以访问的组织中拉取、推送或删除镜像。
Docker 将该漏洞评级为关键,因为该访问“包括以合法名称发布镜像”,它表示。
根据 Docker 的说法,在 3 月和 4 月,攻击者利用被盗的发布者凭据将恶意的 Trivy 镜像和恶意的 KICS 镜像推送到发布者自己的 Docker Hub 存储库中。
mptrdev.com 的 Peter Molnar 和 Krisztian Hozak 发现了该漏洞并向 Docker 报告,Docker 表示在收到他们的报告后不到四小时就部署了修复。他们将该漏洞命名为 GhostPat。
在他们的技术报告中,两人表示他们在经过同意的测试账户上重现了该漏洞两次。他们以目标账户登录注册表,在其命名空间中创建并推送到一个存储库,推送到其所属的组织,并拉取其私有存储库。
Docker 的审查内容
Docker 审查了在漏洞开放期间进行的每个账户转换,并将其与注册表日志和令牌记录进行了比较。它查找任何在多个身份下使用的令牌,并检查了使用转移令牌进行的每次推送,总共约 304,000 次。
“我们没有发现该漏洞被利用的证据,”该公司表示。
根据 Docker 的说法,这些推送中的每一个都发送到了属于转换组织或其指定所有者的存储库。在绝大多数情况下,这两个账户属于同一个人或团队。
在无法确认一个人控制两个账户的情况下,Docker 分析了最高风险的公共镜像,但没有运行它们,发现没有恶意软件或篡改。
Docker 的注册表日志显示令牌何时被使用,而不是它是否存在,因此一个从未使用的转移令牌在日志中没有留下记录。因此,Docker 将在漏洞开放期间通过转换转移的每个令牌视为可能受影响的,无论它是否被使用。
公告报告了推送的结果。它没有说明 Docker 对使用转移令牌进行的拉取或删除的发现,包括从私有存储库的拉取。
谁被通知以及检查内容
10 月 2 日,Docker 向那些账户接收了转移令牌的用户发送了电子邮件,并单独通知了相关组织的所有者。每封电子邮件按描述和创建日期列出了令牌。
公告没有说明涉及多少用户或令牌,仅称该组为“有限数量”的用户。
根据 Docker 的说法,任何没有收到电子邮件的人都没有受到影响,无需采取任何措施。
10 月 8 日,Docker 停用了它识别出的转移令牌。那些其所有者要求保留的令牌未被停用。
发布 Docker Compose linter 的 Todd Matens 在一篇博客文章中写道,他在 10 月 2 日收到了两封电子邮件。一封是作为组织所有者发送给他的,另一封是发送到他的用户账户。他旋转了他的两个 CI 令牌,并检查了他发布的 42 个镜像的签名,追踪每个镜像到构建它的 CI 运行。
Docker 建议用户检查他们的令牌,撤销任何不认识或不再使用的令牌,并为属于组织的自动化使用组织访问令牌,而不是个人的 PAT。
这些细节有助于进行检查:
打开账户设置,然后选择个人访问令牌。列表显示每个令牌的创建时间和最后使用时间。
研究人员描述了两个痕迹。一个是你没有创建的令牌,无论其名称是什么,因为创建令牌的人选择其描述。另一个是在账户切换器中你不记得加入的组织。
组织访问令牌需要 Docker Team 或 Docker Business 订阅。它们由组织所有者、公司所有者或具有该权限的自定义角色管理,并且不适用于 Docker Desktop 或镜像访问管理。