CVE-2026-28498Authlib是一个用于构建OAuth和OpenID Connect服务器的Python库。在1.6.9之前的版本中,该库存在一个严重的安全漏洞,源于OpenID Connect (OIDC) ID Token验证逻辑中的哈希校验缺陷。具体而言,库中的_verify_hash函数负责验证at_hash(访问令牌哈希)和c_hash(授权码哈希)声明,但在遇到不支持或未知的加密算法(alg)时,该函数会表现出fail-open行为——即验证失败时返回True(验证通过)。这意味着攻击者可以通过在伪造的ID Token中设置一个库不支持的alg参数值,绕过关键的完整性保护机制。此漏洞直接违反了OIDC规范的基本安全要求,可能导致攻击者伪造身份验证令牌,从而冒充合法用户或绕过访问控制。建议所有使用Authlib进行OIDC身份验证的用户立即升级到1.6.9或更高版本。
漏洞根源在于Authlib的OIDC ID Token验证模块。当验证at_hash或c_hash声明时,_verify_hash函数首先获取Token中声明的加密算法(alg),然后调用相应的哈希验证逻辑。问题出在异常处理分支:当指定的alg参数不被库支持时,函数捕获KeyError或AttributeError异常,并错误地返回True而不是抛出验证失败异常。这个fail-open设计缺陷使得任何能够获取有效ID Token结构的攻击者都可以通过修改alg参数为任意不支持的值(如"none"、"custom-alg"等),触发异常处理路径,从而绕过哈希验证。攻击者可以构造包含任意payload的ID Token,仅需保证Token的基本结构(如iss、sub、aud、exp等标准声明)有效。成功利用此漏洞需要攻击者具备一定条件:在目标系统中拥有有效用户账户以便获取合法ID Token结构,或能够中间人拦截Token传输。