pac4j-jwt JwtAuthenticator 身份验证绕过漏洞分析(CVE-2026-29000)
一、漏洞概述
1.1 基本信息
| 项目 | 内容 |
|---|---|
| 漏洞编号 | CVE-2026-29000 |
| 漏洞名称 | pac4j-jwt JwtAuthenticator 身份验证绕过漏洞 |
| 漏洞类型 | CWE-347:加密签名验证不当 (Improper Verification of Cryptographic Signature) |
| 厂商/项目 | pac4j / pac4j-jwt |
| CVSS 评分 | 10.0 (CRITICAL) — CVSS 3.1 |
| CVSS 向量 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N |
| CVE ID 来源 | VulnCheck (disclosure@vulncheck.com) |
| 漏洞发现者 | VulnCheck |
| 披露日期 | 2026-03-04 |
1.2 漏洞简介
CVE-2026-29000 是 pac4j-jwt 库中 JwtAuthenticator 组件的一个严重身份验证绕过漏洞(CVSS 10.0)。攻击者在获取目标服务器 RSA 公钥(通常通过 JWKS 端点公开可获取)后,可构造一个 JWE(加密 JWT)包裹的 PlainJWT(alg: none 的无签名 JWT),并在其中嵌入任意 subject 和 role 声明。由于 JwtAuthenticator 在解密 JWE 后将内部令牌强制转换为 SignedJWT 时,toSignedJWT() 对 PlainJWT 返回 null 后未能正确处理,导致签名验证被跳过,但声明仍被提取并用于构建用户配置文件。攻击者无需任何凭据即可伪装为任意用户(包括管理员)通过身份验证,完全接管目标应用。公开 PoC 已存在,利用门槛极低。
二、漏洞影响
2.1 受影响版本
- pac4j-jwt 4.x:< 4.5.9
- pac4j-jwt 5.x:>= 5.0.0-RC1, < 5.7.9
- pac4j-jwt 6.x:>= 6.0.4.1, < 6.3.3
2.2 技术原理
该漏洞存在于 pac4j-jwt 的 Jw