CVE-2026-42576apko是一款用于从apk包构建和发布OCI容器镜像的工具。在1.2.7版本之前,pkg/apk/apk/implementation.go文件中的DiscoverKeys函数在处理JWKS密钥时,无条件地将密钥断言为*rsa.PublicKey类型,而未检查密钥的实际类型。如果仓库的JWKS端点返回非RSA类型的密钥(例如EC密钥),这种未经检查的类型断言将导致程序panic并崩溃。该漏洞影响任何初始化APK数据库并获取仓库密钥的工作流程。
该漏洞位于apko项目的pkg/apk/apk/implementation.go文件中,具体涉及DiscoverKeys函数的实现。问题根源在于代码直接使用了Go语言的类型断言,假设从JWKS端点获取的公钥必定是RSA类型。然而,JWKS标准支持多种加密算法,包括EC(椭圆曲线)等。当攻击者或配置错误的仓库返回非RSA密钥时,类型断言失败,触发Go语言的运行时panic机制,导致整个apko进程异常终止。这种拒绝服务漏洞利用门槛较低,攻击向量为网络,且无需用户认证,仅需用户访问受影响的仓库即可触发。由于Availability影响为高,这可能导致构建流水线中断或容器镜像构建服务不可用。修复方案是在断言前增加对密钥类型的检查逻辑。