漏洞概述 CVE-2023-48223: JWT 算法混淆漏洞(通过前导空白的 RSA 公钥) 该漏洞源于 库中针对 CVE-2023-48223 的修复不完整。 中的 正则表达式使用 锚点来匹配 PEM 格式的公钥。如果公钥字符串包含任何前导空白字符(如空格、制表符、换行符等),正则匹配将失败( 为 null),导致 RSA 公钥被错误地分类为 HMAC 密钥。 攻击者可以利用此漏洞,使用服务器的 RSA 公钥作为 HMAC 密钥来签署 RS256 令牌,从而绕过签名验证,实现算法混淆攻击。 影响范围 受影响包: (npm) 受影响版本: const publicKey = fs.readFileSync(path.join(__dirname, 'public_key.pem'), 'utf8'); // Step 3: Forge an HS256 token // (In the original advisory: python jwt_tool.py --exploit k -p const header = Buffer.from(JSON.stringify({ alg: 'HS256', typ