CVE-2025-68481CVE-2025-68481是FastAPI Users框架中的一个OAuth登录CSRF(跨站请求伪造)漏洞。该漏洞存在于FastAPI Users 15.0.2之前的版本中,由于OAuth登录状态令牌完全是 stateless(无状态)的,攻击者可以利用这一缺陷劫持受害者的OAuth认证流程,从而实现账户接管或让受害者登录到攻击者的账户。漏洞的核心问题在于generate_state_token()函数总是使用空的state_data字典调用,导致生成的JWT仅包含固定的audience声明和过期时间戳,而没有将状态令牌与发起OAuth流程的会话进行关联。攻击者可以先访问授权端点获取服务器生成的状态令牌,然后完成上游OAuth流程,最后诱导受害者加载回调URL并完成认证流程。由于状态JWT对任何客户端在约1小时内都有效,受害者的浏览器将完成整个OAuth流程,从而导致登录CSRF攻击。
FastAPI Users的OAuth实现存在严重的安全设计缺陷。在OAuth 2.0认证流程中,state参数本应用于防止CSRF攻击,但该库的实现在以下方面存在漏洞:1) generate_state_token()函数总是使用空的state_data字典生成JWT,缺少会话绑定信息;2) 回调验证时仅检查JWT签名和过期时间,不验证状态令牌与发起请求浏览器的关联性;3) 没有使用correlation cookie或服务端缓存来关联状态值。攻击者可以构造攻击流程:首先访问应用的/authorize端点获取服务器生成的有效state令牌;其次使用自己的OAuth提供商账户完成上游OAuth流程获取授权码;最后诱骗受害者访问包含攻击者授权码和state令牌的回调URL。由于JWT状态令牌在约1小时内对任何客户端都有效,受害者浏览器将完成认证流程,其账户会被绑定到攻击者的OAuth账户,或攻击者获取受害者账户的访问权限。