CVE-2026-32597CVE-2026-32597是PyJWT库中的一个安全漏洞,PyJWT是一个流行的Python JSON Web Token实现。该漏洞存在于2.12.0之前的版本中,源于PyJWT未正确验证RFC 7515 §4.1.11中定义的crit(Critical)Header Parameter。根据RFC规范,当JWS令牌包含一个crit数组列出PyJWT不理解或不支持的扩展时,库应该拒绝该令牌。然而,受影响版本的PyJWT会错误地接受这些令牌,而不是按照RFC的MUST要求予以拒绝。这构成了一个严重的合规性违规问题。攻击者可以利用此漏洞通过在JWT令牌中注入恶意的crit扩展参数来绕过安全验证机制。由于PyJWT广泛应用于Web应用程序的身份认证和授权流程中,此漏洞可能影响大量使用该库进行JWT处理的应用系统。攻击者可以构造包含未知扩展的JWT令牌,利用库的错误行为来执行未授权操作或获取敏感信息。该漏洞的CVSS评分为7.5,属于高危级别,攻击复杂度低,无需认证即可利用,对系统完整性产生严重影响。
PyJWT库在处理JWS(JSON Web Signature)令牌时,未能正确实现RFC 7515 §4.1.11中定义的crit(Critical)Header Parameter验证逻辑。根据RFC规范,当JWS令牌的头部包含一个crit数组时,接收方必须检查该数组中列出的所有扩展参数是否被支持。如果遇到任何不支持的扩展参数,实现必须拒绝该令牌。然而,PyJWT在2.12.0之前的版本中缺少此验证逻辑,导致库会忽略crit数组中列出的未知扩展并接受令牌。攻击者可以利用此漏洞构造特殊的JWT令牌,在头部添加包含未知扩展的crit数组。例如,攻击者可以在crit中声明一个自定义扩展(如x-custom-extension),而PyJWT会简单地忽略此参数并继续处理令牌。这违反了JWT处理的基本安全原则,可能导致签名验证绕过、会话劫持或权限提升等问题。攻击者通过精心构造的JWT令牌,可以在不知道有效签名密钥的情况下诱使应用程序接受恶意构造的令牌。修复版本2.12.0增加了对crit参数的正确验证,当遇到不支持的扩展时会正确拒绝令牌。