Hono JWT授权漏洞分析
漏洞概述
CVE ID: CVE-2025-62610
严重程度: 高危 (CVSS 8.1)
影响版本: Hono >= 1.1.0, < 4.10.2
修复版本: 4.10.2
技术细节
漏洞描述
Hono的JWT认证中间件默认未验证aud(受众)声明。这导致在使用中间件时未显式进行受众检查的应用程序可能接受针对其他受众的令牌,从而引发潜在的跨服务访问(令牌混淆)风险。
根本原因
- JWT中间件的
verifyOptions仅包含iss、nbf、iat和exp验证选项 - 缺少
aud选项支持,不符合RFC 7519标准要求 - 当存在
aud声明时,处理方必须在该声明中标识自己,否则必须拒绝JWT
安全影响
影响类型: 通过令牌混淆导致的身份验证/授权弱点
受影响用户:
- 跨多个服务共享颁发者/密钥的用户(常见于单一IdP/JWKS场景)
- 使用
aud区分令牌预期接收者的用户
潜在后果:
- 跨服务访问:Service B的令牌可能被Service A接受
- 边界侵蚀:ID令牌和访问令牌或单独的API受众可能无意中混合
修复方案
技术修复
Hono通过添加新的verification.aud配置选项来解决此问题,允许进行符合RFC 7519标准的受众验证。
安全配置示例
|
|
标准要求
根据RFC 7519 §4.1.3:
- 每个预期处理JWT的主体必须使用
aud声明中的值来标识自己 - 如果主体未在
aud声明中标识,当aud存在时必须拒绝JWT
现实世界影响
在具有单一IdP/JWKS并在多个服务间共享密钥的部署中:
- 为一个受众铸造的令牌可能被另一个受众错误接受
- 攻击者可以托管支持"使用Google登录"的单独服务
- 获取受害用户的有效ID令牌(JWT)
- 如果API不验证
aud,攻击者可以使用该令牌以受害者权限访问API
相关参考
- GHSA ID: GHSA-m732-5p4w-x69g
- 修复提交: honojs/hono@45ba3bf
- NVD详情: https://nvd.nist.gov/vuln/detail/CVE-2025-62610
CVSS评分详情
基础指标: AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
攻击向量: 网络
攻击复杂度: 低
所需权限: 无
用户交互: 需要
影响范围: 未改变
机密性影响: 高
完整性影响: 高
可用性影响: 无