文章标题:Red Hat Quay 严重漏洞可让攻击者读取并覆盖注册表中的所有私有容器镜像
正文:

Red Hat Quay 中的一个严重漏洞允许能够访问 Quay 注册表的攻击者读取并覆盖每个仓库中的私有容器镜像。
Quay 默认启用匿名访问,在启用期间,攻击者无需任何账户。当匿名访问关闭时,任何拥有有效账户的人仍然可以利用该漏洞,Red Hat 昨日表示。该公司已为八个 Quay 3 分支发布了修复版本。
该漏洞编号为 CVE-2026-123710(CVSS 评分:9.8)。
Quay 使用其信任的密钥来签名允许镜像推送和拉取的访问令牌。该漏洞允许攻击者将自己的密钥添加到 Quay 信任的密钥中,且没有过期日期。随后 Quay 会接受用该密钥签名的、针对任何仓库的令牌。
凭借这些令牌,攻击者可以获取私有镜像以及其中存储的任何机密或凭据。攻击者还可以推送或覆盖镜像,且更改会传播到之后拉取这些镜像的每个系统。
植入的密钥在重启后仍然存在,直到有人将其移除。它还可以被用来删除正在运行的 Quay 实例所使用的密钥,从而使正常的推送和拉取开始因身份验证错误而失败。
Quay 的密钥服务器会检查替换密钥的请求是否携带由受信任密钥签名的令牌,且受众和签发者符合预期。它不检查该令牌是否为密钥轮换而签发。来自 Quay 的 /v2/auth 端点的匿名令牌即可通过:Quay 用受信任的密钥对其签名,而调用方自行选择其受众。
第二个严重漏洞 CVE-2026-110697(CVSS 评分:9.9)同时被披露。它允许能够创建命名空间的 Quay 用户窃取其他租户的机器人账户令牌,并用这些令牌读取、推送或覆盖那些租户的镜像。
该漏洞存在于列出机器人账户的代码中。它根据命名空间名称构建 SQL LIKE 模式,却没有转义通配符,而在 SQL LIKE 中,下划线可匹配任意单个字符。
因此,一个在正确位置包含下划线的命名空间可以匹配另一个租户的命名空间,并返回其机器人账户及解密后的令牌。攻击者无需任何提升的权限,受害者也不必做任何事。
删除攻击者的命名空间也会删除相应的机器人账户,这可能切断依赖这些账户的系统。该公司表示,当 Quay 作为 OpenShift 的集成注册表时,被盗的机器人凭据可被用来向 CI/CD 流水线注入恶意镜像。
Red Hat 的 Dave O'Connor 发现了这两个漏洞。根据 CVE-2026-123710 的漏洞报告,其背后的逻辑自 Quay 首次公开提交以来就一直存在。
Red Hat 将 Quay 3 和 Quay 5 的每个版本都列为受这两个漏洞影响。对于 CVE-2026-123710,其指引将独立安装、通过 Quay Operator 在 OpenShift 上部署的 Quay,以及 Red Hat OpenShift 的镜像注册表列为受影响。
该公司表示,任何不可信客户端能够访问的 Quay 实例都会暴露,包括内部注册表。
今日查询时,CVE-2026-123710 的 CVE 条目仍显示所有 Quay 包均受影响且无修复,尽管每个公告都列出了该漏洞。
该公司建议采取以下步骤:
- 在代理或负载均衡器上,除受信任的内部组件外,阻止对 /keys 端点的访问。
- 在审计日志中搜索 expiration_date 为 null 的 service_key_rotate 和 service_key_delete 事件。
- 移除任何你不认识的已批准服务密钥。
- 安装修复版本。在其运行之前,攻击者可以以同样的方式添加新密钥,因此删除一个密钥不会持久。
“关闭匿名访问并不能保护你,”该公司在其关键修复文章中说。植入的密钥在密码重置和机器人令牌更改后仍然有效。
对于 CVE-2026-110697,该公司的 CVE 页面列出了相同的八个版本为已修复,称更新是唯一完整的修复,并表示 Quay.io 已经修复。但八个公告中没有一个列出 CVE-2026-110697。
在更新到位之前,该公司建议限制谁可以创建包含下划线的组织或命名空间,轮换任何与下划线命名空间匹配的命名空间的机器人令牌,并留意不符合正常机器人使用的拉取或推送。这些步骤减少了暴露,但漏洞仍然存在。
上游修复添加了缺失的轮换检查,要求通过密钥服务器添加的密钥具有到期日期,并阻止调用者选择令牌的受众。同样的更改也修复了机器人账户搜索。