CVE-2026-34240JOSE是一个Javascript对象签名和加密库。在0.3.5+1版本之前,该库存在安全漏洞,允许未经身份验证的远程攻击者利用JOSE头中嵌入的密钥(jwk)伪造有效的JWS/JWT令牌。漏洞原因是密钥选择机制错误地将头中的jwk视为验证候选,即使该密钥不在可信密钥存储中。这可能导致攻击者通过自签名令牌绕过身份验证。
漏洞源于JOSE库在验证JWS/JWT令牌签名时的密钥选择逻辑缺陷。在标准的JWT验证流程中,验证方应仅依赖预先配置在可信密钥存储中的密钥来验证令牌签名。然而,在受影响版本中,库的密钥选择机制并未严格限制验证密钥的来源。当库解析令牌时,会检查JOSE Header中的"jwk"(JSON Web Key)参数,并将其视为一个有效的公钥候选。攻击者利用这一缺陷,可以生成一对RSA或ECDSA密钥,将公钥以Base64URL编码嵌入到恶意令牌的Header中,并使用对应的私钥对Payload进行签名。当受影响的应用程序收到该令牌并调用库进行验证时,库会提取Header中的公钥来验证签名。由于签名是由对应的私钥生成的,验证必然成功。这使得攻击者可以伪造任意身份和权限的令牌,完全绕过系统的身份验证机制,进而获取未授权的访问权限。