一个能直接摸到密钥服务器的匿名访客,可能把整个企业镜像仓库的签名权握在手里。红帽Quay的这处缺陷被追踪为CVE-2026-123710,CVSS评分9.8,红帽于2026年11月11日发布公告,美国国家漏洞数据库(NVD)同步收录。
![]()
Quay是企业级容器镜像仓库,负责存储和分发镜像。问题出在它的服务密钥服务器上:当调用方请求轮换签名密钥时,服务器只校验JWT是否由受认可的密钥签名、受众(audience)与签发方(issuer)是否正确,却从不检查这个令牌是不是用来做密钥轮换的。
一个来自/v2/auth端点的匿名令牌就能通过上述校验。红帽Bugzilla报告指出,受众直接取自客户端提供的service参数,也就是说攻击者自己说了算——前提是FEATURE_ANONYMOUS_ACCESS处于开启状态。
拿到这个令牌后,攻击者向/keys端点提交自己的密钥。新密钥会继承签发请求那把密钥的审批状态,并且可以设置为永不过期。Quay随即无条件信任它。
接下来,攻击者能签发在任何仓库上都生效的注册表令牌,从而获得私有镜像的读写权限,还能替换仓库标签。私有镜像里常藏着密钥凭证,一旦泄露,影响范围会远远超出仓库本身。
被替换的标签同样危险,因为构建系统之后可能拉取到被投毒的镜像。同类问题也出现在其他注册表上,比如Gitea容器注册表的那处缺陷,同样暴露了私有镜像。
受影响范围方面,红帽列出Quay 3与Quay 5镜像,NVD条目显示的产品一致。只有/keys可被不受信任客户端访问的部署才会暴露。Bugzilla的说明称,这段逻辑从第一个公开提交起就存在。
红帽给出的第一步处置,是在代理或负载均衡层限制/keys,只允许受信任的内部组件访问。第二步,检查审计日志中service_key_rotate与service_key_delete事件里expiration_date为空的记录,删除任何不认识的已审批服务密钥。
删掉一把恶意密钥并不能长久解决问题。在修复版本运行之前,匿名请求可以再装一把新的。团队应保持对/keys的封堵,并关注红帽公告等待补丁发布——公告目前尚未给出修复版本号。
注册表处在软件交付链条的中心,一把被窃取的签名密钥会让每一个镜像都处于风险之中。红帽将漏洞发现归功于自家研究员Dave O’Connor。目前没有野外在野攻击的报告,有追踪方指出尚未索引到公开利用代码。但利用步骤简单、破坏面大,应当按紧急事件处理。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.