CVE-2026-34950fast-jwt 是一个快速的 JSON Web Token (JWT) 实现。在 6.1.0 及更早版本中,位于 fast-jwt/src/crypto.js 的 publicKeyPemMatcher 正则表达式使用了 ^ 锚点。当密钥字符串包含前导空格时,该锚点失效,导致匹配失败。这使得攻击者能够重新利用之前被 CVE-2023-48223 修复的 JWT 算法混淆攻击,从而可能绕过签名验证机制,威胁系统安全。
该漏洞的根源在于 fast-jwt 库在处理公钥格式验证时的正则表达式逻辑缺陷。JWT 的安全性依赖于严格的算法和密钥匹配。尽管 CVE-2023-48223 曾尝试修复算法混淆问题,但本次漏洞表明修复不完整。具体而言,`publicKeyPemMatcher` 正则表达式使用了行首锚点 `^`。如果攻击者提供的公钥字符串开头包含空白字符(如空格或换行符),正则匹配将失败。这种匹配失败可能导致验证逻辑绕过或回退,使得攻击者能够利用算法混淆攻击。例如,攻击者可以将令牌的头部算法修改为 HS256(对称加密),并利用被绕过验证的公钥作为密钥来伪造签名。由于无需交互且无需认证,攻击者可在网络上远程利用此漏洞,造成高机密性和高完整性影响。