CVE-2025-66040CVE-2025-66040是Spotipy库中的一个跨站脚本(XSS)漏洞。Spotipy是一个用于Spotify Web API的Python库,在2.25.2之前的版本中,OAuth回调服务器存在安全漏洞。攻击者可以通过OAuth认证流程中的error参数注入恶意JavaScript代码。由于该参数未经适当的HTML转义和过滤,当认证失败或被中断时,用户浏览器会执行注入的恶意脚本。这允许攻击者窃取用户会话Cookie、劫持OAuth令牌、执行任意客户端操作或进行钓鱼攻击。漏洞的利用需要诱导用户访问特制的OAuth链接并完成认证流程,虽然需要用户交互,但由于攻击隐藏在正常的OAuth重定向过程中,隐蔽性较高。该漏洞已被修复,版本2.25.2包含了安全补丁。
漏洞根源在于Spotipy的OAuth回调处理机制。当Spotify OAuth认证流程出现错误时,回调服务器会接收error参数并将其回显到HTML响应页面。问题在于error参数值直接插入到HTML中,没有进行HTML实体编码或输入验证。攻击者可以构造类似error=<script>alert(document.domain)</script>的恶意参数。技术细节包括:1) OAuth回调端点使用Flask开发服务器处理认证回调;2) error参数通过请求对象直接获取并嵌入HTML模板;3) 缺少Content-Security-Policy头保护;4) 没有对error参数进行URL解码后的特殊字符过滤。攻击者可以利用Spotify的OAuth重定向机制,将用户引导至回调URL并携带恶意error参数。由于浏览器会执行回显的JavaScript代码,攻击者可获取用户敏感信息或执行恶意操作。修复方案在回调处理逻辑中添加了html.escape()对error参数进行转义处理。