CVE-2026-22818CVE-2026-22818是Hono Web应用框架中的一个严重安全漏洞。该漏洞存在于Hono的JWK/JWKS JWT验证中间件中,攻击者可以利用JWT header中指定的算法来影响签名验证过程。具体而言,当选定的JWK(JSON Web Key)没有明确定义算法时,中间件会错误地使用JWT header中指定的算法进行签名验证。这允许攻击者实施JWT算法混淆攻击(Algorithm Confusion Attack),在特定配置下可能绕过身份验证并伪造有效的JWT token。Hono是一个支持多种JavaScript运行时的Web应用框架,广泛应用于现代Web开发中。该漏洞影响所有在4.11.4之前的版本,CVSS评分高达8.2,属于高危漏洞。
该漏洞的核心问题在于Hono的JWT验证中间件在处理JWK/JWKS时存在信任边界错误。具体来说:1) 验证逻辑在选择JWK后,如果该JWK没有明确指定alg(算法)字段,中间件会回退到使用JWT header中声明的算法;2) 攻击者可以利用RS256算法签名的token,通过修改header中的alg为HS256,并使用公开的RSA公钥作为HMAC密钥进行签名;3) 由于验证端可能使用RS256的公钥(以HS256方式)验证伪造的token,导致算法混淆攻击成功;4) 修复方案要求在使用JWK/JWKS验证时必须显式指定允许的算法列表,不再信任JWT header中的alg字段;5) 开发者应确保JWK中的alg字段与预期的验证算法一致,或在中间件配置中明确allowlist。