CVE-2025-65431CVE-2025-65431是django-allauth框架中的一个中等严重性安全漏洞。该漏洞影响65.13.0之前的所有版本,主要涉及Okta和NetIQ第三方身份提供商的认证机制存在缺陷。在问题被发现之前,django-allauth的这两个提供商使用OIDC协议中的preferred_username字段作为第三方账户的唯一标识符进行授权决策。然而,preferred_username字段在某些身份提供商中是可变的,用户可以自行修改或由管理员更改,这使得基于该字段进行授权判断存在严重的安全风险。攻击者可能通过操纵preferred_username值来冒充其他用户或获取未授权的访问权限。该漏洞的CVSS评分为5.4,属于中等严重级别,攻击向量为网络,攻击复杂度低,需要低权限认证,不需要用户交互,对机密性和完整性有低影响,对可用性无影响。
该漏洞的根本原因在于django-allauth对OIDC身份提供商标识符的信任过度。在OIDC协议中,sub(subject)字段是由身份提供商分配的唯一且不可变的用户标识符,而preferred_username字段用于显示目的且可能被用户或管理员修改。Okta和NetIQ提供商在实现中错误地将preferred_username作为用户身份识别和授权的核心依据。攻击者首先需要拥有一个有效的第三方提供商账户,然后通过修改其preferred_username值匹配目标用户的用户名。由于系统使用修改后的preferred_username进行授权,攻击者可以以目标用户身份访问受保护资源。技术利用涉及OAuth/OIDC流程中的ID Token解析和用户链接逻辑。修复方案已将标识符从preferred_username更改为sub,确保每个用户账户与身份提供商分配的不可变标识符绑定。