# Hono JWK 中间件 JWT 算法混淆漏洞
## 概述
Hono 是一个支持任意 JavaScript 运行时的 Web 应用框架。在 4.11.4 之前版本中,其 JWK/JWKS JWT 验证中间件存在安全缺陷。
## 影响版本
4.11.4 之前的所有版本。
## 细节
当 JWT 头部中的算法未被选中的 JWK 明确指定时,中间件允许 JWT 头部中的算法字段影响签名验证过程。这导致攻击者可利用该逻辑实施 JWT 算法混淆攻击。
## 影响
在特定配置下,攻击者可伪造 JWT 令牌并通过验证,导致身份冒充等安全风险。该问题已在 4.11.4 版本中修复,修复后中间件要求明确配置允许的非对称算法列表,且不再从不可信的 JWT 头部字段推导验证算法。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: JWT algorithm confusion in Hono JWK Auth Middleware when JWK lacks "alg" (untrusted header.alg fallback) · Advisory · honojs/hono · GitHub -- 🔗来源链接
标签:x_refsource_CONFIRM
神龙速读:
- **Package**: hono (npm)
- **Vulnerability**: JWT algorithm confusion in Hono JWK Auth Middleware when JWK lacks "alg" (untrusted header.alg fallback)
- **Affected versions**: < 4.11.4
- **Patched versions**: 4.11.4
- **Severity**: High (8.2/10)
- **CVE ID**: CVE-2026-22818
- **CVSS v3 base metrics**:
- Attack vector: Network
- Attack complexity: Low
- Privileges required: None
- User interaction: None
- Scope: Unchanged
- Confidentiality: Low
- Integrity: High
- Availability: None
- **Weaknesses**: CWE-347
- **Credits**: calcloc134, devsanthatham
- **Summary**: A flaw in Hono's JWK/JWKS JWT verification middleware allowed the algorithm specified in the JWT header to influence signature verification when the selected JWK did not explicitly define an algorithm. This could enable JWT algorithm confusion and, in certain configurations, allow forged tokens to be accepted.
- **Resolution**: Update to the latest patched release. The middleware now requires an explicit allowlist of asymmetric algorithms when verifying tokens.
标题: Merge commit from fork · honojs/hono@190f6e2 · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
## 漏洞关键信息概览
### 1. **算法验证和混淆攻击的修复**
- **修复描述**: 修复了与 `JWK` 头中的算法不匹配的 `jwk alg` 的漏洞,通过算法验证防止混淆算法攻击。
- **相关代码更新**:
- `verifyWithJwks` 函数中增加了对 `allowedAlgorithms` 参数的支持,用于指定允许的算法列表。
- 支持在 `JWK` 头中指定 `alg` 字段,以确保算法一致性。
- **安全影响**: 防止潜在的算法混淆型攻击,增强了 JWT 验证的安全性。
### 2. **算法白名单支持**
- **修复描述**: 引入新的错误类 `JwAlgorithmNotAllowed`,用于处理不在白名单中的 JWT 算法,并在 `verifyWithJwks` 函数中增加对算法白名单的支持。
- **相关代码更新**:
- `src/middleware/jwk/index.test.ts` 中增加了对 `allowedAlgorithms` 参数的测试用例。
- `src/middleware/jwk/index.ts` 中定义了算法白名单支持。
- **安全影响**: 增加了一层安全防护,只允许白名单中的算法通过验证,有效防止了使用非预期算法的攻击。
### 3. **JWK 中间件支持算法选项**
- **修复描述**: 允许在 JWK 中间件中指定算法选项,以便更细粒度地控制 JWT 验证过程。
- **相关代码更新**:
- `src/middleware/jwk/index.ts` 中增加了对 `alg` 选项的支持。
- **安全影响**: 提高了灵活性和安全性,可针对特定需求配置验证规则。
### 4. **类型定义和代码重构**
- **修复描述**: 更新了类型定义,重构了一些代码逻辑,包括移除了未使用的 `@ts-expect-error` 指令,确保类型安全。
- **安全影响**: 虽然对安全直接贡献不大,但保障了代码质量和维护性,间接提高了安全性。
### 总结
此 commit 重点修复和增强了与 JWT 算法验证相关的安全机制,特别是算法匹配和白名单的控制,有效预防了潜在的算法混淆攻击,同时也提升了代码的类型安全性和可维护性。
暂无评论