CVE-2025-64762CVE-2025-64762是AuthKit Next.js库中的一个严重安全漏洞,该库为Next.js应用提供基于WorkOS的认证和会话管理功能。漏洞源于authkit-nextjs 2.11.0及以下版本在处理认证响应时,未能主动应用抗缓存HTTP头部(如Cache-Control、Pragma等)。在启用CDN缓存的生产环境中,经过认证的响应可能被CDN缓存,导致用户的会话令牌(session tokens)被存储在缓存中。当其他用户请求相同资源时,服务器可能返回包含前一个用户会话令牌的缓存响应,从而造成会话令牌泄露。攻击者获取他人的会话令牌后,可以完全接管受害者账户,执行任意操作。值得注意的是,部署在Vercel平台上的Next.js应用默认不受影响,因为Vercel默认不启用CDN缓存,除非开发者手动为认证路径设置缓存头部。该漏洞已在2.11.1版本中修复,通过为所有认证响应添加适当的抗缓存头部来解决此问题。
该漏洞的核心问题在于AuthKit中间件在生成认证响应时缺少必要的缓存控制HTTP头部。标准的Web安全最佳实践要求认证响应必须包含明确的缓存禁用指令(如Cache-Control: no-store, no-cache, must-revalidate, private),以防止敏感会话数据被缓存。在未修复的版本中,当Next.js应用配置了CDN(如Cloudflare、AWS CloudFront等)进行响应缓存时,经过身份验证的API响应或页面响应会被CDN存储在缓存服务器上。由于响应中包含Set-Cookie头设置的会话Cookie,这些敏感信息会随缓存响应一起保存。当后续用户请求相同URL时,CDN可能返回包含前用户会话令牌的缓存响应,从而导致会话劫持风险。攻击者只需要找到启用了CDN缓存且使用AuthKit保护的端点,然后通过缓存投毒或直接访问缓存响应即可获取他人的有效会话令牌。修复方案(2.11.1版本)在认证中间件中添加了对所有认证后响应的抗缓存头部强制设置,确保即使应用层忘记设置缓存控制,AuthKit也会保证响应不会被缓存。