CVE-2026-41519Weblate是一款基于Web的本地化工具。在5.17.1版本之前,存在会话管理缺陷。当用户更改密码时,虽然浏览器会话通过cycle_session_keys()失效,但存储在authtoken_token表中的DRF API令牌(前缀“wlu_*”)未被撤销。这意味着用户修改密码后,旧的API令牌依然有效,攻击者可利用其维持未授权访问。该问题已在5.17.1版本修复。
该漏洞的核心在于Weblate的密码重置逻辑存在不完整性。在标准的身份验证安全模型中,修改密码应被视为账户安全状态的重大变更,必须使所有现有的认证凭证失效。然而,受影响的Weblate版本仅处理了基于Cookie的Web会话,通过调用cycle_session_keys()重置了会话ID,却完全忽略了Django REST Framework (DRF) 使用的API令牌。这些API令牌存储在数据库的authtoken_token表中,用于无状态的API请求认证。由于未在密码变更事件中添加令牌撤销逻辑,攻击者如果在此之前通过某种方式(如XSS攻击、日志泄露或之前的入侵)获取了受害者的API令牌,即便受害者为了保护账户而修改了密码,攻击者持有的令牌依然有效。利用该漏洞,攻击者可以继续通过API端点以受害者身份执行操作,如读取翻译数据、修改配置或提交更改,从而绕过了密码修改带来的保护机制。