Hono JWT授权漏洞分析与修复指南

本文详细分析Hono框架中的JWT授权漏洞CVE-2025-62610,该漏洞由于缺乏观众声明验证导致跨服务访问风险,包含漏洞技术细节、影响范围和修复方案。

Hono JWT授权漏洞分析

漏洞概述

CVE ID: CVE-2025-62610
严重程度: 高危 (CVSS 8.1)
影响版本: Hono 1.1.0 至 4.10.1
修复版本: Hono 4.10.2

技术细节

漏洞描述

Hono的JWT认证中间件在默认情况下未验证aud(观众)声明。这导致在使用中间件而未显式配置观众检查的应用可能接受原本针对其他观众颁发的令牌,从而引发潜在的跨服务访问(令牌混淆)风险。

根本原因

中间件的验证选项仅包含issnbfiatexp,缺少aud选项。根据RFC 7519标准要求,当aud声明存在时,除非处理方在该声明中标识自身,否则必须拒绝令牌。

影响范围

受影响的部署场景包括:

  • 在多个服务间共享颁发者/密钥的配置
  • 使用aud区分令牌目标接收方的系统
  • 使用单一身份提供商和JWKS跨多个服务的环境

修复方案

安全配置推荐

启用符合RFC 7519标准的观众验证,使用新的verification.aud配置选项:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import { Hono } from 'hono'
import { jwt } from 'hono/jwt'

const app = new Hono()

app.use(
  '/api/*',
  jwt({
    secret: 'my-secret',
    verification: {
      // 要求此API仅接受aud为'service-a'的令牌
      aud: 'service-a',
    },
  })
)

修复内容

该漏洞通过添加verification.aud配置选项得到解决,该更改被归类为安全加固改进。

安全影响

  • 漏洞类型: 通过令牌混淆导致的身份验证/授权弱点
  • 潜在风险:
    • 跨服务未授权访问
    • 服务边界侵蚀
    • 敏感端点的未授权调用

参考信息

  • GHSA ID: GHSA-m732-5p4w-x69g
  • CWE分类: CWE-285 - 不正确的授权
  • 修复提交: honojs/hono@45ba3bf
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计