# Hono JWT中间件HS256默认算法漏洞
## 概述
Hono 是一个支持任意 JavaScript 运行时的 Web 应用框架。在 4.11.4 之前版本中,其 JWK/JWKS JWT 验证中间件存在缺陷,当所选 JWK 未明确指定算法时,JWT 头部的 `alg` 值会影响签名验证过程。
## 影响版本
4.11.4 之前的所有版本。
## 细节
该漏洞允许攻击者利用 JWT 算法混淆(algorithm confusion)攻击。当 JWK 未显式声明 `alg` 字段时,中间件会依赖 JWT 头部中的 `alg` 值来决定验证算法,而该值来自不可信输入。攻击者可借此伪造 JWT 并绕过验证。
修复后,JWT 中间件强制要求显式指定 `alg` 选项,验证过程不再受 JWT 头部 `alg` 值影响。
## 影响
在受影响配置下,攻击者可能伪造有效的 JWT 令牌,导致身份认证绕过,造成未授权访问。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: JWT Algorithm Confusion via Unsafe Default (HS256) in Hono JWT Middleware Allows Token Forgery and Auth Bypass · Advisory · honojs/hono · GitHub -- 🔗来源链接
标签:x_refsource_CONFIRM
神龙速读:
- **Vulnerability Title**: JWT Algorithm Confusion via Unsafe Default (HS256) in Hono JWT Middleware Allows Token Forgery and Auth Bypass
- **Severity**: High (CVSS: 8.2)
- **Affected Package**: hono (npm)
- **Affected Versions**: < 4.11.4
- **Patched Versions**: 4.11.4
- **CVE ID**: CVE-2026-22817
- **Weakness**: CWE-347
- **Impact**: This vulnerability allows an attacker to forge JWTs with attacker-controlled claims, potentially leading to authentication or authorization bypass in certain configurations.
- **Resolution**: Update to the latest patched release and explicitly specify the `alg` option in the JWT middleware configuration to prevent algorithm confusion.
标题: Merge commit from fork · honojs/hono@cc0aa7a · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
```md
### 关键漏洞信息
#### 1. **算法混淆攻击预防**
- **描述**: 该提交旨在通过要求在JWT验证过程中显式指定算法类型来防止算法混淆攻击。这防止了攻击者利用默认的HS256与非对称密钥攻击系统。
- **更改点**:
- 移除了JWT验证时的HS256默认回退选项。
- 在验证函数中添加了对`alg`参数的要求。
- 在`jwt`中间件中添加了对`alg`选项的要求。
- 在运行时添加了验证逻辑,当未提供`alg`时抛出错误。
- 更新了文档和示例以反映对`alg`参数的需求。
#### 2. **算法不匹配检查**
- **描述**: 引入了新的错误类型`JwAlgorithmMismatch`,并在`verify`函数中检查JWT头部指定的算法是否与提供的算法选项匹配。这防止了攻击者使用与预期不同的算法。
- **更改点**:
- 在类型定义中添加了`check header.alg === options.alg`校验。
- 在`verify`函数中使用正确的算法进行测试。
- 增加了 explicit 的算法检测测试。
#### 3. **测试和文档更新**
- **描述**: 更新了测试用例,以验证安全修复是否有效防止算法混淆攻击,并更新了文档和示例代码。
- **更改点**:
- 新增了针对算法混淆攻击预防的功能性测试。
- 更新了文档和示例,以明确`alg`参数的使用。
#### 4. **文档和示例更新**
- **描述**: 更新了文档和示例代码以反映对`alg`参数的要求,确保开发者了解这一重要的安全特性。
- **更改点**:
- 对文档进行了更新,说明`alg`参数的必要性。
- 更新示例代码,展示如何正确使用`alg`参数。
#### 总结
此次提交主要针对JWT验证时的算法混淆攻击进行了修复,通过要求显式指定算法类型来提高系统的安全性。更新还包括了相关测试和文档,以确保开发者能正确使用和理解这一安全特性。
暂无评论